Задача №1.
ДАНО: Список студентов группы, где о каждом известно следующее:
№ |
|
Дата Рождения |
Пол |
Адрес |
ТРЕБУЕТСЯ: Выбрать студентов мужского пола, которым исполнилось 18 лет.
ОГРАНИЧЕНИЯ:
Разработать программу, обеспечивающую с помощью средств языка С++ ввод анкетных данных студентов и вывод в табличном виде списка студентов, отобранных по заданному условию.
РЕШЕНИЕ:
//include <stdio.h>
struct anketa /* Объявление структуры нового типа (anketa), */
{ int num; int n; /* описание полей (элементов) структуры */
char Fam[20];
int dd,mm,yyyy;
char pol[2];
char address[40];
} M[30]; /* Объявление массива М, состоящего */
/* из 30 элементов типа struct anketa */
main()
{ int key=0;
do { printf(“\n Меню ”);
printf(“\n 1 - Ввод ”);
printf(“\n 2 - Вывод ”);
printf(“\n 3 - Конец ”);
printf(“\n Введите номер пункта меню: ”);
scanf(“%d”,&key);
switch(key)
{ case 1: n=vvod(); break; /* Обработка события выбора пункта меню- при */
case 2: vivod(n); break; /* вводе номера пункта происходит выполнение */
case 3: break; /* ф-ции, указанной в соотв. операторе case */
default: printf(“\n Неверный номер!”);
}
} while (key!=3);
printf(“\n Конец программы.”);
}
int vvod()
{ int i, n =0
printf(“\n Сколько анкет ввести?”);
scanf(“%d”, &n);
for(i=0,i<n;i++)
{ printf(“\n Ввод %d-ой анкеты”,i+1);
printf(“\n Num: ”); scanf(“%d”,&M[i].num);
printf(“\n Fam: ”); scanf(“%s”,&M[i].Fam);
printf(“\n Data rozhdeniya: ”);
printf(“\n Day: ”); scanf(“%d”,&M[i].dd);
printf(“\n Month: ”); scanf(“%d”,&M[i].mm);
printf(“\n Year: ”); scanf(“%d”,&M[i].yyyy);
printf(“\n Pol: ”); scanf(“%s”,&M[i].pol);
printf(“\n Address: ”); scanf(“%s”,&M[i].address);
}
return n;
}
void vivod(int n) { int i;
printf(“\n Список студентов- мужского пола, старше 18 лет ”);
printf(“\n ------------------------------------------------- ”);
printf(“\n | Номер | | Дата рождения | Пол | Адрес | ”);
printf(“\n ------------------------------------------------- ”);
for(i=0,i<n;i++)
{ if((M[i].pol==’M’)&&((M[i].yyyy+18)>=2010)) /* Отбор по условию и */
printf(“\n|%5d|%-20.19s|%2d.%2d.%4d|%3s|%40.40s|”, /* печать данных студентов*/
M[i].num, M[i].Fam, M[i].dd, M[i].mm, M[i].yyyy, M[i].pol, M[i].address);
}
}
Задача №2
ДАНО: Файл, имя которого совпадает с названием группы, предназначен для хранения анкетных данных студентов и имеет следующую структуру:
№ |
И.О. |
Дата Рождения |
Пол |
Адрес |
ТРЕБУЕТСЯ: Разработать программу ввода, сохранения в файле и печати в табличном виде анкетных данных студентов с помощью средств языка С++
ОГРАНИЧЕНИЯ:
· ввод, вывод и работу с файлами организовать через потоки,
· разработать операторные функции для ввода и печати в табличном виде анкеты с данными заданной структуры.
РЕШЕНИЕ:
//include <stdio.h>
//include <iostream.h>
//include <fstream.h>
//include <string.h>
char group[8]= “\0”; char otchet[10]= “Print.txt”;
struct anketa /* Объявление структуры нового типа (anketa), */
{ int num; int n; /* описание полей (элементов) структуры */
char Fam[20];
int dd,mm,yyyy;
char pol[2];
char address[40];
friend istream& operator >> (istream& is, anketa &dan);
friend ofstream& operator << (ofstream& ofs, anketa &dan);
friend ostream& operator << (ostream& os, anketa &dan);
}
// Переопределение стандартной операции при помощи операторной функции
istream& operator >> (istream& is, anketa& dan)
{ cout << “\n Num:”; is>>dan.num;
cout << “\n Fam:”; is>>dan.Fam;
cout << “\n Data rozhdeniya:”;
cout << “\n Day:”; is>>dan.dd;
cout << “\n Month:”; is>>dan.mm;
cout << “\n Year:”; is>>dan.yyyy;
cout << “\n Pol:”; is>>dan.pol;
cout << “\n Address:”; is>>dan.address;
return is;
}
ostream& operator << (ostream& os, anketa& dan)
{ char str[80];
sprintf(str, “\n|%5d|%20.20s|%2d.%2d.%4d|%3s|%40.40s|”,
dan.num, dan.Fam, dan.dd, dan.mm, dan.yyyy, dan.pol, dan.address);
str[79]= ‘\0’;
os<<str;
return os;
}
ofstream& operator << (ofstream& ofs, anketa& dan)
{ char str[80];
sprintf(str, “\n|%5d|%20.20s|%2d.%2d.%4d|%3s|%40.40s|”,
dan.num, dan.Fam, dan.dd, dan.mm, dan.yyyy, dan.pol, dan.address);
str[79]= ‘\0’;
ofs<<str;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.