Задание 1. Структуры
Пример. Ввести структуру ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД. Составить и протестировать функцию
a) ввода и вывода на экран даты;
b) вычисляющую порядковый номер дня в году по введенной дате;
c) находящую в массиве введенных дат самую раннюю.
# include <iostream.h>
# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
# include <iomanip.h>
struct date
{
int year;
int month;
int day;
};
int tab_day [2][12]= {{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
//****Функция, проверяющая является ли год високосным*******
int visokos(int year)
{
int k=year%4==0&&year%100!=0||year%400==0;
return k;
}
//**********Функция ввода даты***************************
date vvod ()
{
date d;
N: cout<<"Введите день, месяц, число\n";
cin>>d.day>>d.month>>d.year;
int k=visokos(d.year);
if (d.day<1||d.day>tab_day[k][d.month-1]||d.month<1||d.month>12||d.year<0)
{cout<<"Ошибка ввода\n"; goto N;}
else cout<<"\Дата введена\n";
return d;
}
//*********Функция вывода даты*****************************
vivod (date d)
{
cout<<setw(2)<<d.day<<'.'<<setw(2)<<d.month<<'.'<<setw(4)<<d.year<<"\n";
}
//*****Функция, вычисляющая порядковый номер дня в году*****
int day_number(date d)
{
int k=visokos(d.year);
for (int i=0; i<d.month-1; i++)
d.day+=tab_day[k][i];
return d.day;
}
//*******Функция вычисляющая наименьшую дату *************
date min (date* m, int n)
{
int imin=0, myear=m[0].year, mmonth=m[0].month, mday=m[0].day;
for (int i=1; i<n; i++)
if (m[i].year<myear || m[i].year==myear&&(m[i].month<mmonth || m[i].month==mmonth && m[i].day<mday))
imin=i;
return m[imin];
}
main ()
{
N:
clrscr();
cout<< "Выберете функцию\n";
cout<<" 1 – ввод даты\n";
cout<<" 2 – вывод даты\n";
cout<<" 3 – порядковый номер даты\n";
cout<<" 4 – минимальная дата\n";
cout<<" 0 – выход из программы\n";
int nom;
cin>>nom;
switch (nom)
{
case 0: exit(0);
case 1: {date d=vvod(); break;}
case 2: {date d=vvod(); vivod (d); break;}
case 3: {date d=vvod();
cout<<"\nПорядковый номер "<<day_number(d);
break;
}
case 4:
{
cout<<"\nВведите количество дат ";
int n; cin>>n;
date* mas = new date [n];
for (int i=0; i<n; i++)
mas[i]=vvod();
cout<<"\nИз введенных дат:\n";
for (int i=0; i<n; i++)
vivod(mas[i]);
cout<<"\наименьшая дата ";
vivod (min(mas,n));
delete []mas;
break;
}
default: cout<<"Ошибка ввода ";
}
cout<<"\nДля продолжения нажмите Enter "; getch();
goto N;
}
1. Ввести структуру с полями ЧИСЛИТЕЛЬ и ЗНАМЕНАТЕЛЬ для описания понятия РАЦИОНАЛЬНОЕ ЧИСЛО. Составить и протестировать функцию
a) ввода и вывода на экран рационального числа;
b) сокращающую рациональное число;
c) вычисляющую произведение двух рациональных чисел;
d) вычисляющую наибольшее из массива X[N] рациональных чисел;
e) поиска в массиве X[N] рациональных чисел всех, равных заданному.
2. Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и протестировать функцию
a) ввода исторического события;
b) вывода на экран списка исторических событий;
c) вычисляющую интервал в днях, прошедший между двумя заданными историческими событиями;
d) сортирующую массив исторических событий по полю СОБЫТИЕ.
3. Ввести структуру ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД. Составить и протестировать функцию
a) ввода и вывода на экран даты;
b) вычисляющую дату, на N дней вперед по заданной;
c) находящую в массиве введенных дат все даты заданного года.
4. Ввести структуру ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД. Составить и протестировать функцию
a) ввода и вывода на экран даты;
b) по году и порядковому номеру дня в году вычисляющую число и месяц года, соответствующему этому дню;
c) находящую в массиве введенных дат самую позднюю.
5. Ввести структуру АЛГЕБРАИЧЕСКИЙ ПОЛИНОМ с полями СТЕПЕНЬ, КОЭФФИЦИЕНТЫ. Составить и протестировать функцию.
a) ввода и вывода полинома;
b) дифференцирования полинома
c) сложения двух полиномов;
d) поиска полиномов с максимальной степенью в массиве полиномов;
6. Ввести структуру АВТОМАШИНА с полями МАРКА, ГОД ВЫПУСКА, НОМЕР, ФАМИЛИЯ ВЛАДЕЛЬЦА. Написать и протестировать функцию
a) регистрации новой машины;
b) вывода на экран массива машин;
c) поиска в массиве машины по любой из комбинации признаков.
7. Ввести структуру СТУДЕНТ с полями ФИО, ЧИСЛО, МЕСЯЦ, ГОД РОЖДЕНИЯ. Написать и протестировать функцию
a) добавления нового студента;
b) вывода на экран массива студентов;
c) поиска в массиве студентов по году рождения;
d) сортирующую массив студентов по возрасту.
8. Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ГОД, СОБЫТИЕ. Написать и протестировать функцию
a) ввода исторического события;
b) вывода на экран массива исторических событий;
c) сортирующую массив исторических событий по полю ГОД;
d) подсчитывающую средний интервал (в годах) между событиями в массиве событий.
9. Ввести структуру СТУДЕНТ с полями ФИО, ГОД РОЖДЕНИЯ, КОД ГРУППЫ. Написать и протестировать функцию
a) добавления нового студента в массив студентов;
b) вывода на экран массива студентов;
c) удаляющую из массива студента с определенной ФИО;
d) поиска в массиве студентов по номеру группы.
10. Ввести структуру ЭКСПОРТИРУЕМЫЙ ТОВАР с полями НАИМЕНОВАНИЕ ТОВАРА, СТРАНА (импортирующая товар), ОБЪЕМ ПАРТИИ (в штуках). Написать и протестировать функцию
a) добавляющую новый товар в массив товаров;
b) вывода на экран массива товаров;
c) сортирующая массив товаров по полю СТРАНА;
d) увеличивающую объем партий на n % для стран, импортирующих более k наименований товара.
11. Ввести структуру УЧЕНИК с полями ФИО, ГОД ОБУЧЕНИЯ, НАЗВАНИЯ КЛАССА (БУКВА). Написать и протестировать функцию
a) добавления нового ученика в массив учеников;
b) вывода на экран массива учеников;
c) сортирующую массив учеников по классам;
d) проверяющую, чтобы в каждом классе было не более n учеников (если количество учеников в классе больше n, то в этом классе оставляется только n учеников, а из остальных формируется новый класс с буквой, следующей по алфавиту за имеющимися).
12. Ввести структуру УЧЕНИК с полями ФИО, ГОД ОБУЧЕНИЯ, НАЗВАНИЯ КЛАССА (БУКВА), ИТОГОВАЯ ОЦЕНКА. Написать и протестировать функцию
a) добавления нового ученика в массив учеников;
b) вывода на экран массива учеников;
c) сортирующую массив учеников по классам;
d) подсчитывающего среднюю оценку для каждого класса.
Дата добавления: 2015-10-09; просмотров: 1645;