7. В универмаге имеется 5 секций. В конце каждого рабочего дня (на протяжении недели) заведующий каждой секцией представляет отчет о сумме денег, на которую проданы товары. Эта информация подготавливается в следующем виде:
Реквизит | Шаблон |
Номер секции Стоимость |
Написать программу вычисления общей стоимости реализованной каждой секцией продукции за неделю. Исходный файл записать, выдать, напечатать.
8. Задан входной файл, имеющий следующую структуру:
Реквизит | Шаблон |
Ф.И.О. Год рождения Пол |
Составить программу, которая подсчитывает школьников, дошкольников и пенсионеров (старше 60 лет –мужчин, и старше 55 лет -женщин). Вывести файл на печать и результаты счета.
9. Задан файл со следующей структурой:
Реквизит | Шаблон |
Номер зачетки Курс Номер группы Оценки (повторяется 5 раза) Количество экзаменов |
Вычислить итоговую успеваемость, на печать выдать в виде таблиц.
10. Файл имеет следующую структуру:
Реквизит | Шаблон |
Номер курса Ф.И.О. Оценки (повторяется 5 раза) Номер зачетной книжки Адрес родителей |
Он упорядочен по курсам. Составить программу подсчета числа отличников из городов, сел, районов, центров по курсам и общего числа отличников. Результаты вывести на печать.
11. Составить файл следующей структуры:
Реквизит | Шаблон |
Курс Группа Ф.И.О. Оценки |
Выдать полученный файл на печать. Подсчитать количество отличников в заданной группе. Результат отпечатать.
12. Дан файл следующей структуры:
Реквизит | Шаблон |
Название команды Количество побед Количество ничьих Количество поражений |
Выдать на печать турнирную таблицу, рассортированную убыванию количества очков, при равенстве очков – по убыванию количества побед, а при равенстве побед – в произвольном порядке.
13. Чемпионат мира по волейболу проходит в 3 городах. Из каждого города в пресс – центр поступает информация, имеющая следующий вид:
Реквизит | Шаблон |
Страна Очки Количество выигранных партий Количество проигранный партий |
Требуется записать итоговую таблицу чемпионата, где команды должны быть расставлены в порядке уменьшения количества очков. Таблицу распечатать.
14. Составить программу расположения в алфавитном порядке списка фамилий, вводимого с клавиатуры. Всего вводится 30 фамилий каждая фамилия содержит не более 200 символов. Исходный список и упорядоченный вывести на печать.
15. Составить программу, которая упорядочивает список группы в алфавитном порядке. Максимальное число вводимых фамилий 30, максимальное число букв в фамилии 20.
Лабораторная работа №9
Тема: Перегрузка функций.
Постановка задачи.
Используя алгоритм упорядочивания матрицы, разработанный в лабораторной работе №5, разработать и протестировать две перегруженные функции, одна из которых обрабатывает целочисленную матрицу, другая - вещественную матрицу (варианты 3-5, 9, 12, 13,19, 20) или матрицу, элементы которой строки (варианты 1, 2, 6-8, 10, 11, 14-18).
Пример решения (вариант 13).
Задание: Используя алгоритм упорядочивания матрицы, разработанный в лабораторной работе №5, разработать и протестировать две перегруженные функции, одна из которых обрабатывает целочисленную матрицу, другая - вещественную матрицу (варианты 3-5, 9, 12, 13,19, 20).
Текст программы:
//Упорядочивание матрицы
#pragma hdrstop
#pragma argsused
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <iomanip.h>
//Функция упорядочивания матрицы (тип int)
void sort(int a[][50], int n, int m)
{
//Объявление переменных
int count=0,i=0,k,b;
bool p;
do
{
p=false;
for (k=0;k<(n*m-1);k++)
{
if ((((n-1)-count%n)==k%n) && (((m-1)-count/n)==k/n))
{
p=true;
break;
}
if (a[k%n][k/n]<=0)
{
b=a[k%n][k/n];
a[k%n][k/n]=a[(n-1)-count%n][(m-1)-count/n];
a[(n-1)-count%n][(m-1)-count/n]=b;
count++;
break;
}
}
i++;
}
while (p!=true);
}
//Функция упорядочивания матрицы (тип float)
void sort(float a[][50], int n, int m)
{
//Объявление переменных
int count=0,i=0,k;
float b;
bool p;
do
{
p=false;
for (k=0;k<(n*m-1);k++)
{
if ((((n-1)-count%n)==k%n) && (((m-1)-count/n)==k/n))
{
p=true;
break;
}
if (a[k%n][k/n]<0)
{
b=a[k%n][k/n];
a[k%n][k/n]=a[(n-1)-count%n][(m-1)-count/n];
a[(n-1)-count%n][(m-1)-count/n]=b;
count++;
break;
}
}
i++;
}
while (p!=true);
}
//Функция заполнения матрицы (тип int)
void fill(int a[][50], int n, int m)
{
int i,j;
randomize();
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
//cout<<"a["<<(i+1)<<','<<(j+1)<<"]=";
//cin>>a[i][j];
a[i][j]=rand()%100-50;
}
}
//Функция заполнения матрицы (тип float)
void fill(float a[][50], int n, int m)
{
int i,j;
randomize();
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
//cout<<"a["<<(i+1)<<','<<(j+1)<<"]=";
//cin>>a[i][j];
a[i][j]=(rand()%1000-500)/100.0;
}
}
//Функция вывода матрицы на экран (тип int)
void print(int a[][50], int n, int m)
{
int i,j;
for (i=0;i<n;i++)
{ for (j=0;j<m;j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
cout<<endl;
}
//Функция вывода матрицы на экран (тип float)
void print(float a[][50], int n, int m)
{ int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
cout<<setprecision(2)<<setw(6)<<a[i][j];
cout<<endl;
}
cout<<endl;
}
//Основная программа
void main(void)
{ //объявление переменных
int a[100][50],i,j,n,m;
float b[100][50];
//ввод числа строк и столбцов
cout<<"Rows (from 1 to 100) >"; cin>>n;
cout<<"Cols (from 1 to 50) >"; cin>>m;
cout<<endl;
//заполнение матрицы
fill(a,n,m);
fill(b,n,m);
//вывод матрицы на экран
print(a,n,m);
print(b,n,m);
//упорядочивание
sort(a,n,m);
sort(b,n,m);
//вывод упорядоченной матрицы на экран
print(a,n,m);
print(b,n,m);
//задержка
getch();
}
Тестовый пример:
Rows (from 1 to 100) >10
Cols (from 1 to 50) >10
-22 -26 -6 -9 -31 29 -39 32 -44 -13
37 39 -34 21 35 -30 -33 27 -22 26
9 30 -47 -21 -10 -21 12 -41 28 29
-45 13 -1 7 -28 -2 47 5 -17 -22
-29 24 -4 20 33 -33 43 -1 -5 -7
-7 11 44 40 -45 -3 42 -36 39 10
-28 -8 7 18 0 -8 -38 -13 -17 35
0 26 -5 34 -35 -34 16 2 -44 -4
-10 -6 41 -25 -17 -31 -47 33 0 14
9 -31 -11 28 -3 18 44 0 2 40
-4.7 0.24 1.4 3.4 -4.8 -1.2 -3.9 3.8 1.1 -1.6
-3.1 2.9 3.2 -4.3 -4.2 -2.8 3.2 4.8 -0.72 -3.2
0.59 -3.2 0.03 1.3 -1.6 0.29 4.6 -3.9 -3.2 2.8
-4 0.63 -1.5 2.6 2.2 0.48 2 3.5 -3.7 0.28
3.2 3.7 3.5 -2.3 -1.2 3.2 3.9 -2.5 0.45 -2.6
1.4 -0.39 -1.1 2.9 0.05 3.5 -1.1 -0.86 -3.1 -2.4
3.2 0.42 -1.4 4.7 -0.5 4.4 2.1 0.37 3.3 3.8
1.5 -4.2 -2.5 -1.2 1.1 -4.8 -1.3 1.5 0.06 0.46
3.4 0.44 0.91 -4.8 4.3 0.19 -4 1.8 -2.5 4.6
-0.41 2.2 -4.6 -0.22 -1.5 -0.32 -3.1 2.5 -3.5 -0.1
40 39 5 47 29 -30 -33 -47 -22 -10
37 39 27 21 35 -21 -25 -41 -6 0
9 30 32 12 33 -2 -21 -34 -17 -22
14 13 44 7 -28 -33 -9 -1 -5 -7
35 24 16 20 -45 -3 -11 -36 -8 -28
10 11 44 40 0 -8 -38 -13 -17 -7
29 28 7 18 -35 -34 -5 -6 -44 -4
26 26 42 34 -17 -31 -47 -31 0 -29
2 33 41 18 -3 -31 -4 0 -26 -45
9 2 43 28 -10 -39 -1 -44 -13 -22
4.6 0.24 1.4 3.4 3.9 3.5 -0.5 -4.8 -0.72 -3.2
0.46 2.9 3.2 0.37 2 3.2 -1.2 -3.9 -3.2 -0.39
0.59 2.8 0.03 1.3 4.6 0.29 -1.6 -1.2 -3.7 -3.2
3.8 0.63 0.45 2.6 2.2 0.48 -4.2 -2.5 -1.1 -2.6
3.2 3.7 3.5 3.5 3.2 -2.8 -1.1 -0.86 -3.1 -2.4
1.4 0.06 1.1 2.9 0.05 -1.2 -4.8 -2.3 -1.5 -0.41
3.2 0.42 2.5 4.7 0.19 -4.8 -1.3 -4.3 -4.2 -4
1.5 3.3 1.8 4.8 1.1 -1.5 -4 -4.6 -2.5 -3.1
3.4 0.44 0.91 3.8 4.3 -0.32 -3.1 -2.5 -3.5 -0.1
0.28 2.2 1.5 2.1 4.4 -3.9 -0.22 -1.4 -1.6 -4.7
Лабораторная работа №10
Тема: Шаблоны функций
Постановка задачи
Создать шаблон функции, выполняющей сортировку или поиск элементов в массиве. Протестировать шаблон для массивов с элементами различных типов: для вариантов 2, 10 и 20 – int, short и char, а для остальных вариантов - int, float и char. Варианты заданий:
№. | Метод сортировки (поиска) |
1 | Сортировка простой (линейной) вставкой |
2 | Бинарный поиск |
3 | Сортировка слиянием (метод фон Неймана) |
4 | Сортировка методом бинарной вставки без использования рабочего массива |
5 | Сортировка Шелла (слияние с обменом) |
6 | Быстрая сортировка (метод Хоара) |
7 | Комбинированный метод быстрой сортировки с методом «пузырька» |
8 | Внешняя двухфазная сортировка прямым слиянием |
9 | Челночная сортировка (сортировка с просеиванием) |
10 | Интерполяционный поиск |
11 | Сортировка методом центрированной вставки (нахождение медианы) |
12 | Шейкер – сортировка |
13 | Сортировка методом бинарной вставки с использованием рабочего массива |
14 | Обменная сортировка |
15 | Внешняя однофазная сортировка прямым слиянием |
16 | Внешняя сортировка естественным слиянием |
17 | Сортировка Шелла (слияние с обменом) |
18 | Внешняя сортировка сбалансированным слиянием |
19 | Сортировка простой (линейной) вставкой |
20 | Бинарный поиск |
Методические указания
Пример шаблона функции перестановки значения двух числовых переменных приведен на рис. 3.
template <class t>
void change (t a, t b)
{
t c;
c=a; a=b; b=c;
}
Рис. 3. Шаблон функции
Пример решения (вариант 13).
Задание: Создать шаблон функции, выполняющей сортировку или поиск элементов в массиве. Протестировать шаблон для массивов с элементами различных типов: для вариантов 2, 10 и 20 – int, short и char, а для остальных вариантов - int, float и char.
Текст программы:
//Сортировка массива методом бинарной вставки
//Использование шаблона функции
#pragma hdrstop
#pragma argsused
#include <iostream.h>