C++

  • Автор темы -
  • Дата начала

Гость
#1
Задание структуры

Задано множество объектов, каждый из которых описывается совокупностью признаков Р1, Р2, Р3, Р4, Р5, Р6 (таблица 1).
Требуется:
- выбрать объекты, признаки которых удовлетворяют условиям из таблицы 2;
- для этих объектов распечатать признаки, указанные в таблице 3.

Объект - Анкета Сотрудника

121.jpg

Условия выделения объектов: Р2=1970, Р4=среднее, Р6=мастер.

Выводимые на печать признаки: Р1, Р2, Р4, Р5, Р6
 

DarkKnight

Well-Known Member
01.08.2010
653
0
#2
Допишу завтра, щас спать охото

C++:
#include <iostream>
#include <iomanip>

using namespace std;

struct Anketa //Структура анкета
{
char Fio[64]; //ФИО 64 байта под символы
int Year; //Год рождения целочисленное
enum MarryStatus{nomarried,married} Marry; //семейного положение (перечисляемыми константами nomarried = 0 (холост) married =1 (в браке)
enum EducationStatus{aver,averspec,highspec} Education; //образование (перечисляемыми константами aver = 0 (среднее) averspec =1 (средне-специальное)
//highspec = 2 (высшее
int Stage; //стаж целочисленное (в годах)
char Dolj[16]; //Должность 16 байт под символы
};

void Print(Anketa Ank);
void Print (Anketa *Arr,int SizeArr);

int Menu (void)
{
cout<<"\t\tМЕНЮ"<<endl;
cout<<"1: Ввод данных"<<endl;
cout<<"2: Печать данных"<<endl;
cout<<"3: Поиск данных"<<endl;
cout<<"4: Выход"<<endl;

cout<<"Ваш выбор :";
int Variant;
cin>>Variant;
return Variant;
}

Anketa InputAnketa(void)
{
Anketa Temp;
system ("cls"); //Отчистим экран консоли
cout<<"\t\t Ввод нового сотрудника"<<endl;

cout<<"Введите ФИО Работника : ";
cin.ignore(); //Уберем последний символ ('\n') из потока
cin.getline(Temp.Fio,64,'\n');

cout<<"Введите год рождения работника: ";
cin>>Temp.Year;

bool Ctrl = false;
while (!Ctrl)
{
Ctrl = true;
cout<<"Введите семеное положение работника (1 - холост(а) / 2- состоит в браке): ";
int Marry;
cin>>Marry;
switch (Marry)
{
case 1 : Temp.Marry = Anketa::nomarried;
break;
case 2 : Temp.Marry = Anketa::married;
break;
default: Ctrl = false;
}
}

Ctrl = false;
while (!Ctrl)
{
Ctrl = true;
cout<<"Введите образование сотрудника (1 - среднее / 2- сред.спец. / 3 - высшее): ";
int Edu;
cin>>Edu;
switch (Edu)
{
case 1 : Temp.Education = Anketa::aver;
break;
case 2 : Temp.Education = Anketa::averspec;
break;
case 3 : Temp.Education = Anketa::highspec;
break;
default: Ctrl = false;
}
}

cout<<"Введите стаж работника (кол-во лет) : ";
cin>>Temp.Stage;

cout<<"Введите должность сотрудника: ";
cin.ignore();
cin.getline(Temp.Dolj,16,'\n');
cout<<endl<<endl<<"\t\t***Добавление выполнено***"<<endl;
system("pause");
system("cls");
return Temp;
}

void Print (Anketa *Arr,int SizeArr)
{
for (int i = 0; i<SizeArr; i++)
{
Print(Arr[i]);
}

}

void Print(Anketa Ank)
{

cout<<setw(16)<<"		ФИО	 "<<setw(12)<<"Год рожд. "<<setw(12)<<"Сем. положение "<<setw(12)<<"Образование "<<setw(10)<<"Стаж  "<<setw(12)<<"Должность "<<endl;
cout.setf(ios::left);
setlocale(LC_ALL,".866");
cout<<setw(16)<<Ank.Fio<<setw(12)<<Ank.Year<<setw(12)<<Ank.Marry;
setlocale(LC_ALL,"Russian");
cout<<endl;
}

void main(void)
{
setlocale(LC_ALL,"Russian");
Anketa Arr[20];
int SizeArr = 0;
int InputMenu;
do
{
InputMenu = Menu();
switch (InputMenu)
{
case 1:
Arr[SizeArr] = InputAnketa(); 
SizeArr++;
break;
case 2:
Print(Arr,SizeArr);
break;
case 3:
break;
}
}
while (InputMenu != 4);

}
 

Гость
#3
И за это спасибо! =) Тут сама допишу =) смысл ясен! =)