Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2014, 12:14   #1
Анастасия_18
 
Регистрация: 26.01.2014
Сообщений: 7
По умолчанию Структуры в cи

Описать структуру с именем WORKER, содержащую следующие поля:
фамилия и инициалы работника;
название занимаемой должности;
год поступления на работу.
Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER, записи должны быть размещены по алфавиту;
вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;
если таких работников нет, выдать на дисплей соответствующее сообщение.
Анастасия_18 вне форума Ответить с цитированием
Старый 26.01.2014, 12:49   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Структура - рабочий (worcer).
Код:
#include <string>

struct worcer
{
string surname;// Инициалы работника
string post;// Должность
int year;// год поступления на работу
};
Объявляем её в массиве:
Код:
worcer group[10];
Дальше попробуй сама. Используй цикл for.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 26.01.2014 в 12:53.
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.01.2014, 13:33   #3
Анастасия_18
 
Регистрация: 26.01.2014
Сообщений: 7
По умолчанию

а можно всё. желательно в виде функций)
Анастасия_18 вне форума Ответить с цитированием
Старый 26.01.2014, 14:28   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Анастасия_18 Посмотреть сообщение
а можно всё. желательно в виде функций)
Там совсем чуть-чуть добавить нужно. А для этого, как ни странно, нужно чуть-чуть подумать.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.01.2014, 15:15   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Smitt&Wesson
просили на С же
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 26.01.2014, 15:39   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2Smitt&Wesson
просили на С же
Аааа. Т.е. через char*. Ну, это не сильно усложняет задачу.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.01.2014, 15:56   #7
Анастасия_18
 
Регистрация: 26.01.2014
Сообщений: 7
По умолчанию

Ладно. Спасибо. Сама.
Анастасия_18 вне форума Ответить с цитированием
Старый 26.01.2014, 16:15   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Анастасия_18 Посмотреть сообщение
Ладно. Спасибо. Сама.
Не "ладно сама" (не нужно делать нам одолжение), а что не будет получаться, выкладывай сюда. Рассмотритм, поможем. А лентяев и халявщиков здесь не любят.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.01.2014, 17:13   #9
Анастасия_18
 
Регистрация: 26.01.2014
Сообщений: 7
По умолчанию

struct WORKER
{
char surname[20]; // Инициалы работника
char post[20];// Должность
int year;// год поступления на работу
};
void r(WORKER* mas, int);//Функция для ввода с клавиатуры данных в массив
void sort(WORKER* mas, int);//Функция для сортировки массива по алфавиту
void v(WORKER* mas, int);//Функция вывод массива
void sort2(WORKER* mas, int);//Функция для сортировки массива по алфавиту
void inf(WORKER* mas, int);//вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры


//ввод с клавиатуры данных в массив
void r(WORKER* mas, int n)
{
setlocale(LC_ALL, "russian");
for (int i = 0; i<n; i++)
{
fflush(stdin); //очищает буфер входного потока
printf("Фамилия и инициалы работника:");
gets_s(mas[i].surname); //считывает строку стандартного ввода и помещает ее в буфер, созданный вызывающей функцией
/*scanf_s("%s", mas[i].name);*/
printf("\nНазвание занимаемей должности:");
fflush(stdin);
scanf_s("%d", &mas[i].post);
printf("\nГод поступления на работу:");
fflush(stdin);
scanf_s("%d", &mas[i].year);
fflush(stdin);
printf("\n");
}
}

// сортировка массива по алфавиту
void sort(WORKER* mas, int n)
{
for (int i = 0; i<n; i++)
{
for (int j = 0; j<n - i - 1; j++)
{
if (mas[j].surname > mas[j + 1].surname || mas[j].surname == mas[j + 1].surname)
sort2(mas, j);
}
}
}
// вывод массива
void v(WORKER* mas, int n)
{
setlocale(LC_ALL, "russian");
for (int i = 0; i<n; i++)
printf("%d:%d-%d\t ", mas[i].year, mas[i].surname, mas[i].post);//Выводим массив на экран
printf("\n");
}
// сортировка массива по алфавиту
void sort2(WORKER* mas, int j)
{
char tmp[20];
strcpy_s(tmp, mas[j].surname);//замена одного элемнта(tmp), на другой(mas[j].surname)
strcpy_s(mas[j].surname, mas[j + 1].surname);
strcpy_s(mas[j + 1].surname, tmp);
}
// вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры
void inf(WORKER* mas, int n)
{

char s;
do
{
bool g = true;
char m[20];
printf("\n Фамилия и инициалы работника: ");
fflush(stdin);
gets_s(m);
/*scanf_s("%s", &m);*/
for (int i = 0; i<n; i++)
{
if (strcmp(m, mas[i].surname) == 0)
{
g = false;
printf("\nНазвание занимаемей должности: %d, Год поступления на работу: %d : %d", mas[i].post, mas[i].year, mas[i].min);
}
}
if (g)
{
printf("\nТаких работников нет");
g = false;
}
printf("\nВведите 0 для выхода");
fflush(stdin);
s = _getch();
} while (s != '0');
}

int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "russian");
const int n = 10;
WORKER mas[n];
r(mas, n);
sort(mas, n);
v(mas, n);
inf(mas, n);
_getch();
return 0;
}

Фамилию и инициалы выводит(и то если вводить их на английском), а всместо должности выводит непонятный набор букв и цифр

Последний раз редактировалось Анастасия_18; 26.01.2014 в 17:25.
Анастасия_18 вне форума Ответить с цитированием
Старый 26.01.2014, 17:31   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Выводит что-то непонятное
Оно и понятно. Код ты где-то слизала. Свои наработки в студию! И оформлять нужно код. В менюшке кнопочка - #.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача структуры из программы на c# в dll на c++ и получение структуры из dll iukash Общие вопросы .NET 0 07.05.2013 16:03
Динамические структуры данных, списковые структуры (надо разобраться что делает программа) _4Alex4_ Помощь студентам 1 14.11.2012 07:39
Написание программ (древовидные структуры, структуры неспециального вида и т.д.) Green Gin Фриланс 2 27.04.2012 15:26
Управляющие структуры. Программирование алгоритмов разветвляющейся структуры. Лёнка Компоненты Delphi 1 23.04.2012 15:03
структуры sfinks_murka Общие вопросы C/C++ 1 28.03.2010 21:20