Задание 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;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.021 сек.