- •Т.Э. Шульга программирование.
- •Глава 1. Основы программирования на языке высокого уровня 6
- •Глава 2. Динамические структуры данных 40
- •Глава 3. Основы объектно-ориентированного программирования 53
- •Введение
- •Глава 1. Основы программирования на языке высокого уровня
- •Void main()
- •Задания
- •1.2. Переменные. Основные типы данных
- •Ввод – вывод значений переменных
- •Форматирование данных при обменах с потоками ввода-вывода
- •Void main()
- •Void main()
- •Преобразование типов
- •Задание 1. Описание переменных и преобразование типов
- •Задание 2. Форматирование вывода
- •1.3. Основные операции
- •Void main ()
- •Задания
- •1.4. Конструкции выбора
- •Void main()
- •Void main()
- •Void main()
- •Задание 1. Обработка введенного символа
- •Задание 2. Вычисление значения функции
- •Задание 3. Применение разветвляющихся алгоритмов при решении простейших задач
- •Задание 4. Mультиветвление
- •1.5. Конструкции цикла и передачи управления
- •Void main()
- •Задание 1. Детерминированные циклы. Простейшие задачи
- •Void main()
- •Задание 2. Итерационные циклы. Простейшие задачи
- •Void main()
- •Int last;
- •Задание 3. Одномерные массивы
- •Void main ()
- •Int a[100],n,max,imax;
- •Задание 4. Вложенные циклы
- •Void main ()
- •Задание 5. Двумерные массивы
- •Void main ()
- •Задание 6. Посимвольная обработка строк
- •Void main()
- •Задание 7. Сортировка массива
- •Void main ()
- •1.6.Функции
- •Int oct (int a)// определение функции
- •Void main()
- •Void main()
- •Int strcmp(const char *str1, const char* str2);
- •Int fclose (file * stream);
- •Int feof(file *stream);
- •Int fseek ( file* stream, long offset, int origin);
- •Задание 1. Определение и вызов функций
- •Задание 2. Рекурсивные функции
- •Задание 3. Использование библиотечных функций string.H
- •Void main()
- •Задание 4. Использование библиотечных функций stdio.H
- •Void main ()
- •Глава 2. Динамические структуры данных
- •Int year;
- •Int children;
- •Задание 1. Структуры
- •Int year;
- •Int month;
- •Int visokos(int year)
- •Vivod (date d)
- •Int day_number(date d)
- •Vivod(mas[I]);
- •Vivod (min(mas,n));
- •Задание 2. Динамический список
- •Int mark;
- •Void vvod ()
- •Void vivod()
- •If (begin)
- •Void vivod_f()
- •If (begin)
- •Void add()
- •Void udol () //
- •If (begin)
- •Void del()
- •Void main ()
- •Задание 3. Использование стеков и очередей
- •Глава 3. Основы объектно-ориентированного программирования
- •Void empty();
- •If (len) delete []s;
- •Void cStr::empty()
- •Задание 1 . Описание простейшего класса
- •Задание 2 . Класс string
- •Void main()
- •Void main ()
- •Задание 3. Класс fstream
- •Задание 4. Наследование
- •Список литературы
Задание 1. Структуры
Пример. Ввести структуру ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД. Составить и протестировать функцию
-
ввода и вывода на экран даты;
-
вычисляющую порядковый номер дня в году по введенной дате;
-
находящую в массиве введенных дат самую раннюю.
# 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;
}
-
Ввести структуру с полями ЧИСЛИТЕЛЬ и ЗНАМЕНАТЕЛЬ для описания понятия РАЦИОНАЛЬНОЕ ЧИСЛО. Составить и протестировать функцию
-
ввода и вывода на экран рационального числа;
-
сокращающую рациональное число;
-
вычисляющую произведение двух рациональных чисел;
-
вычисляющую наибольшее из массива X[N] рациональных чисел;
-
поиска в массиве X[N] рациональных чисел всех, равных заданному.
-
-
Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и протестировать функцию
-
ввода исторического события;
-
вывода на экран списка исторических событий;
-
вычисляющую интервал в днях, прошедший между двумя заданными историческими событиями;
-
сортирующую массив исторических событий по полю СОБЫТИЕ.
-
-
Ввести структуру ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД. Составить и протестировать функцию
-
ввода и вывода на экран даты;
-
вычисляющую дату, на N дней вперед по заданной;
-
находящую в массиве введенных дат все даты заданного года.
-
-
Ввести структуру ДАТА с полями ЧИСЛО, МЕСЯЦ, ГОД. Составить и протестировать функцию
-
ввода и вывода на экран даты;
-
по году и порядковому номеру дня в году вычисляющую число и месяц года, соответствующему этому дню;
-
находящую в массиве введенных дат самую позднюю.
-
-
Ввести структуру АЛГЕБРАИЧЕСКИЙ ПОЛИНОМ с полями СТЕПЕНЬ, КОЭФФИЦИЕНТЫ. Составить и протестировать функцию.
-
ввода и вывода полинома;
-
дифференцирования полинома
-
сложения двух полиномов;
-
поиска полиномов с максимальной степенью в массиве полиномов;
-
-
Ввести структуру АВТОМАШИНА с полями МАРКА, ГОД ВЫПУСКА, НОМЕР, ФАМИЛИЯ ВЛАДЕЛЬЦА. Написать и протестировать функцию
-
регистрации новой машины;
-
вывода на экран массива машин;
-
поиска в массиве машины по любой из комбинации признаков.
-
-
Ввести структуру СТУДЕНТ с полями ФИО, ЧИСЛО, МЕСЯЦ, ГОД РОЖДЕНИЯ. Написать и протестировать функцию
-
добавления нового студента;
-
вывода на экран массива студентов;
-
поиска в массиве студентов по году рождения;
-
сортирующую массив студентов по возрасту.
-
-
Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ГОД, СОБЫТИЕ. Написать и протестировать функцию
-
ввода исторического события;
-
вывода на экран массива исторических событий;
-
сортирующую массив исторических событий по полю ГОД;
-
подсчитывающую средний интервал (в годах) между событиями в массиве событий.
-
-
Ввести структуру СТУДЕНТ с полями ФИО, ГОД РОЖДЕНИЯ, КОД ГРУППЫ. Написать и протестировать функцию
-
добавления нового студента в массив студентов;
-
вывода на экран массива студентов;
-
удаляющую из массива студента с определенной ФИО;
-
поиска в массиве студентов по номеру группы.
-
-
Ввести структуру ЭКСПОРТИРУЕМЫЙ ТОВАР с полями НАИМЕНОВАНИЕ ТОВАРА, СТРАНА (импортирующая товар), ОБЪЕМ ПАРТИИ (в штуках). Написать и протестировать функцию
-
добавляющую новый товар в массив товаров;
-
вывода на экран массива товаров;
-
сортирующая массив товаров по полю СТРАНА;
-
увеличивающую объем партий на n % для стран, импортирующих более k наименований товара.
-
-
Ввести структуру УЧЕНИК с полями ФИО, ГОД ОБУЧЕНИЯ, НАЗВАНИЯ КЛАССА (БУКВА). Написать и протестировать функцию
-
добавления нового ученика в массив учеников;
-
вывода на экран массива учеников;
-
сортирующую массив учеников по классам;
-
проверяющую, чтобы в каждом классе было не более n учеников (если количество учеников в классе больше n, то в этом классе оставляется только n учеников, а из остальных формируется новый класс с буквой, следующей по алфавиту за имеющимися).
-
-
Ввести структуру УЧЕНИК с полями ФИО, ГОД ОБУЧЕНИЯ, НАЗВАНИЯ КЛАССА (БУКВА), ИТОГОВАЯ ОЦЕНКА. Написать и протестировать функцию
-
добавления нового ученика в массив учеников;
-
вывода на экран массива учеников;
-
сортирующую массив учеников по классам;
-
подсчитывающего среднюю оценку для каждого класса.
-