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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2015, 16:43   #1
JLady
 
Регистрация: 05.04.2015
Сообщений: 7
По умолчанию C++ Структуры

Описать структуру с именем WORKER, содержащую следующие поля:
- фамилия и инициалы работника
- название его должности
- год поступления
Написать прогу выполняющую след. действия:
Ввод с клавы данных в массив, состоящий из 10 структур типа WORKER; записи должны быть расположены по алфавиту.
- вывод на экран фамилий работников чей стаж работы в организации превышает значение введенное с клавы.
- если таких рабоников нет, написать сообщение об этом на экране.

Осталась сортировка, которую нужно организовать с помощью функции сравнения строк. Подскажите пожалуйста
Код:
#include "stdafx.h"
#include <iostream>
using namespace std; 
struct WORKER 
{
    char surname[30]; 
    char initials[5]; 
    char post[30]; 
    int date; 
};
int main() 
{
    setlocale(LC_ALL, "RUSSIAN");
    int const N = 3;
    int staj;
    int f = 1;
    WORKER a[N];
    for( int i = 0; i < N; i++ )
    {
        cout << "Введите информацию о сотруднике №" << i+1 << ":" << endl;
        cout << "Фамилия: ";    cin >> a[i].surname;
        cout << "Инициалы: "; cin >> a[i].initials;
        cout << "Должность: "; cin >> a[i].post;
        cout << "Год поступление на работу: "; cin >> a[i].date;
    }
	sort();

    cout << "Введите стаж работы в организации : ";
    cin >> staj;
    cout << "Фамилии работников, чей стаж работы в организации превышает " << staj << " лет:" << endl;
      for( int i = 0; i < N; i++ )
    {
        if( (2015 - a[i].date) > staj )
        {
            cout << a[i].surname << endl;
            f = 1;
        }
    }
    if(!f)
        cout << "Отсутствуют." << endl;

    system("pause");
    return 0;
}

Последний раз редактировалось Stilet; 05.04.2015 в 16:52.
JLady вне форума Ответить с цитированием
Старый 06.04.2015, 17:20   #2
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

как-то так:
Код:
#include <iostream>
#include <string>
#include <windows.h>

using namespace std;

struct WORKER{
	char surname[30];
	char initials[5];
	char post[30];
	int date;
};

void sort(WORKER* Wbase, int size){   //метод пузырька
	for (int i = 0; i < size; i++) {
		for (int j = 0; j < size - 1; j++) {
			if (strcmp(Wbase[j].surname, Wbase[j + 1].surname) > 0){
				WORKER Wtemp = Wbase[j];
				Wbase[j] = Wbase[j + 1];
				Wbase[j + 1] = Wtemp;
			}
		}
	}
}

void print(WORKER* Wbase, int num){  //печать
	cout << "\n\nРаботник " << Wbase[num].surname
		 << ' ' << Wbase[num].initials
		 << "\nдолжность: " << Wbase[num].post
		 << "\nпринят на работу:" << Wbase[num].date
		 << endl;
}

int main(){
	//русские буквы
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);

	int const N = 5;
	int staj;
	bool f = false;//сотрудники были найдены?
	WORKER *a = new WORKER [N];
	for( int i = 0; i < N; i++ ){
		cout << "Введите информацию о сотруднике №" << i+1 << ":" << endl;
		cout << "Фамилия: ";    cin >> a[i].surname;
		cout << "Инициалы: "; cin >> a[i].initials;
		cout << "Должность: "; cin >> a[i].post;
		cout << "Год поступление на работу: "; cin >> a[i].date;
	}
	sort(a, N);
	cout << "Введите стаж работы в организации : ";
	cin >> staj;
	cout << "Фамилии работников, чей стаж работы в организации превышает "
		 << staj << " лет:";
	for( int i = 0; i < N; i++ ){
		if( (2015 - a[i].date) > staj ){
			print(a, i);//показать сотрудник
			f = true;   //пометка, он нашелся
		}
	}
	if(!f)
		cout << "Отсутствуют." << endl;
	/*   //вдруг понадобится
	cout << "\n\nВсе сотрудники предприятия:\n";
	for (int i = 0; i < N; i++) {
		print(a, i);
	}	*/
	delete [ ] a;
	system("pause");
    return 0;
}
Почему не используете под фамилию и инициалы одно поле,а разбили его на surname и initials? Из-за этого могут быть проблемы с однофамильцами.
#define TRUE FALSE //счастливой отладки

Последний раз редактировалось Aleksander550; 06.04.2015 в 17:36.
Aleksander550 вне форума Ответить с цитированием
Старый 07.04.2015, 14:11   #3
JLady
 
Регистрация: 05.04.2015
Сообщений: 7
По умолчанию

Спасибо огромное Aleksander550, теперь поняла суть
JLady вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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
Структуры, С. Ciel Помощь студентам 3 07.01.2012 23:00