Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Практикум по программированию на языке СС++. Учебно-методическое пособие
.pdf
8
Создать файл Wedomost.dat, содержащий 6 записей следующей
структуры: фамилия и инициалы студента; номер группы;
успеваемость по трем предметам;
Написать программу, выполняющую следующую обработку
файла Wedomost.dat:
поиск в файле информации о студентах, имеющих средний балл
меньше 4;
если таких студентов нет, выдать соответствующее сообщение
на дисплей.
9
1.Создать файл Spravka.dat, содержащий 10 записей
следующей структуры: название пункта назначения; номер
рейса; тип самолета.
2.Написать программу, выполняющую следующую обработку
файла Spravka.dat:
поиск в файле номеров рейсов, обслуживаемых самолетом, тип
которого вводится с клавиатуры;
если таких рейсов нет, выдать соответствующее сообщение на
дисплей.
10
Создать файл Train.dat, содержащий записи следующей
структуры: название пункта назначения; номер поезда; время
отправления;
Написать программу, выполняющую следующую обработку
файла Train.dat:
поиск в файле поездов, отправляющихся в пункт, название
которого вводится с клавиатуры;
если таких поездов нет, выдать соответствующее сообщение на
дисплей.
11
1.Создать файл WORKER.dat, содержащий 6 записей
следующей структуры: фамилия и инициалы; номер телефона;
день рождения (массив из трех чисел);
2. Написать программу, выполняющую следующую обработку
файла WORKER.dat:
поиск в файле информации о человеке, чья фамилия введена с
клавиатуры;
если такого человека нет, выдать соответствующее сообщение
на дисплей.
81

12
Создать файл STUDENT.dat , содержащий записи следующей
структуры: ФИО студента; его экзаменационные оценки по
трем дисциплинам.
Написать программу, которая выбирает из файла студентов,
имеющих хотя бы одну задолженности. Вывести ФИО этих
студентов и количество несданных экзаменов.
13
Создать файл F1.dat, содержащий 8 записей следующей
структуры: ФИО; номер телефона; день рождения (массив из
трех чисел)
Написать программу, которая переписывает файл F1.dat в
файл F2.dat таким образом, чтобы записи расположились а
алфавитном порядке.
14
Создать файл ZNAK.dat, содержащий записи следующей
структуры: фамилия и инициалы; знак Зодиака; день рождения
(массив из трех чисел);
Написать программу, выполняющую следующие действия:
поиск в файле ZNAK.dat информации о людях, родившихся
под знаком, название которого введено с клавиатуры;
если таких людей нет, выдать соответствующее сообщение на
дисплей.
15
Создать файл Work.dat, содержащий 6 записей следующей
структуры: ФИО рабочих; их среднемесячный заработок.
Написать программу, выполняющую следующую обработку
файла Work.dat:
Вывести ФИО рабочих, имеющих наибольший заработок.
16
Создать файл WORKER.dat, содержащий 5 записей следующей
структуры: фамилия и инициалы; номер телефона; день
рождения (массив из трех чисел);
Написать программу, выполняющую следующую обработку
файла WORKER.dat:
поиск в файле информации о людях, родившихся в месяц,
номер которого введен с клавиатуры;
если таких людей нет, выдать соответствующее сообщение на
дисплей.
82

17
Создать файл ABONENT.dat, содержащий 5 записей
следующей структуры: ФИО абонента; его номер телефонов.
Составить программу, которая по ФИО абонента, введенной с
клавиатуры, выводит его номер телефона.
если такого абонента нет, выдать соответствующее сообщение
на дисплей.
18
Создать файл AEROFLOT.dat, содержащий 6 записей
следующей структуры: номер рейса самолета; количество
свободных мест.
Составить программу, которая по вводимому с клавиатуры
номеру рейса выводит из файла сведения о количестве
свободных мест на этот рейс.
если такого рейса нет, выдать соответствующее сообщение на
дисплей.
19
Создать файл PRICE.dat, содержащий 5 записей следующей
структуры: название детской игрушки; ее стоимость.
Написать программу, выполняющую следующую обработку
файла PRICE.dat:
Вывести наименование и стоимость самой дорогой игрушки.
20
Создать файл PRICE.dat, содержащий 5 записей следующей
структуры: название детской игрушки, ее стоимость, название
магазина, в котором она продается.
Написать программу, выполняющую следующую обработку
файла PRICE.dat:
Вывести полную информацию об игрушке, название которой
введено с клавиатуры
Если игрушки такой нет в PRICE, выдать сообщение на
дисплей.
21
Создать файл PriceList.dat, содержащий записи следующей
структуры: название товара; название магазина, в котором он
продается; стоимость;
Написать программу, выполняющую следующую обработку
файла PriceList.dat:
поиск в файле информации о товаре, название которого введено
с клавиатуры;
если такого товара нет, выдать соответствующее сообщение на
дисплей.
83

22
Создать файл PriceList.dat, содержащий записи следующей
структуры: название товара; название магазина, в котором он
продается; стоимость;
Написать программу, выполняющую следующую обработку
файла PriceList.dat:
поиск в файле информации о товарах, имеющихся в магазине,
название которого введено с клавиатуры;
если такого магазина нет, выдать соответствующее сообщение
на дисплей.
23
Создать файл ORDER.dat, содержащий записи следующей
структуры: расчетный счет плательщика; расчетный счет
получателя; перечисляемая сумма.
Написать программу, выполняющую следующую обработку
файла ORDER.dat:
поиск в файле информации о сумме и расчетном счете
получателя, которому перечислил эту сумму плательщик,
номер которого введен с клавиатуры;
если такого плательщика нет, выдать соответствующее
сообщение на дисплей.
24
Создать файл ZNAK.dat, содержащий записи следующей
структуры: фамилия, имя; знак Зодиака; день рождения
(массив из трех чисел);
Написать программу, выполняющую следующую обработку
файла ZNAK.dat:
поиск в файле информации о людях, родившихся в одно и тоже
число, значение которого введено с клавиатуры;
если таких людей нет, выдать соответствующее сообщение на
дисплей.
25.
Создать файл F1.dat, содержащий 8 записей следующей
структуры: ФИО; номер телефона; день рождения (массив из
трех чисел)
Написать программу, которая переписывает файл F1.dat в
файл F2.dat таким образом, чтобы записи расположились в
порядке убывания дат рождений.
Содержание отчета:
1.Номер и тема лабораторной работы.
2.Вариант задания.
3.Текст программы создания бинарного файла.
4. Текст программы обработки бинарного файла.
5. Результаты обработки бинарного файла.
84

Показать отчет преподавателю.
Контрольные вопросы
1.Понятие файла.
2.Способ описания файла.
3.Описание структурного типа.
4.Стандартные функции для работы с файлами.
5.С помощью какой функции осуществляется подготовка файла для чтения?
6.С помощью, каких функций выполняется чтение данных из файла?
7.Как распознать конец файла данных?
ПОДПРОГРАММЫ – ФУНКЦИИ в языке Си
Любая программа может быть разбита на ряд логически завершенных
программных единиц - подпрограмм. Такое разделение вызвано двумя
причинами.
1. Экономия памяти. Каждая подпрограмма записывается в программе
один раз, в то время как обращаться к ней можно многократно из разных точек
программы.
2. Структурирование программы. Алгоритм решения задачи может быть
достаточно сложным, поэтому целесообразно выделить самостоятельные
смысловые части алгоритма и оформить их в виде подпрограмм.
В языке Си существует один вид подпрограмм, который называется
функция. Каждая программа должна иметь главную функцию (main), которая
служит точкой входа в программу. Кроме главной функции в программе может
быть оформлено произвольное число функций.
Общий вид описания функции
Описание функции содержит заголовок со списком формальных
параметров и тело функции.
Тип Имя Функции(список формальных параметров)
{
Описание локальных переменных;
Операторы тела функции;
return результат;
}
Описание подпрограммы само по себе никаких действий не вызывает. При
запуске программы выполнение начинается с операторов главной функции
main(). Чтобы выполнить подпрограмму, в нужной точке главной функции
необходимо записать обращение к подпрограмме.
Ниже схематично приведена структура программы, в которой описана
подпрограмма-функция.
85

#include "stdafx.h"
//Раздел описаний функций
тип Имя Функции(тип имя_параметра_1, тип
имя_параметра_2,...)
{
тело функции
}
……
main() //начало главной функции
{
Имя Функции(список фактических параметров);/*Обращение к
функции*/
……………………..
} //конец главной функцииmain
Функции
Функция – это автономная часть программы, реализующая определенный
алгоритм и допускающая обращение к ней из различных частей программы.
Каждая функция по отношению к другим является внешней.
Параметры, указанные в заголовке функции, называются формальными, а
параметры, указываемые при ее вызове – фактическими.
Список формальных параметров обеспечивает передачу исходных данных
в функцию.
Согласование параметров.
Формальные и фактические параметры должны быть согласованы друг с
другом по количеству, типу и порядку следования. Это означает, что
количество формальных параметров должно быть равно количеству
фактических параметров, и каждый формальный параметр должен иметь тот
же тип и занимать в списке то же место, что и соответствующий ему
фактический параметр.
Механизм замены параметров.
В языке Си существует два механизма передачи параметров в функции: по
значению и по адресу.
Как правило, параметры функции (кроме массивов и указателей)
передаются по значению. Параметры, передаваемые по значению, играют роль
входных параметров. Фактическим параметром, передаваемым по значению,
может быть константа, переменная или выражение. Для них при вызове
функции в памяти компьютера временно выделяются ячейки, в которые
86

передаются копии значений фактических параметров. При выполнении
функции значения в этих ячейках могут измениться, однако соответствующие
им фактические параметры останутся без изменения
При передаче параметров по адресу все действия в процедуре
выполняются непосредственно над фактическим параметром, а не его копией.
Поэтому любое изменение формального параметра приводит к изменению
соответствующего ему фактического параметра.
Рассмотрим два примера, иллюстрирующих механизмы передачи
параметров
Пример 1 Пример 2
#include "stdafx.h" #include "stdafx.h"
void Z (int у) void Z (int *у)
{ {
y=l; *y=1;
} }
void main() void main()
{ intх; {intх;
x=0; х=0;
Z(x); Z(&x);
printf("x=%d", x); printf("x=%d", x);
} }
В примере 1 процедура Z содержит формальный параметр у, который
передается по значению, поэтому его изменение в процедуре (у=1;) не влияет
на значение фактического параметра х. После выполнения программы на экран
будет выведено: х=0.
В примере 2 формальный параметр у – это указатель. Это означает, что в
функции изменяется значение в той ячейки памяти, адрес которой передавался
в функцию Z, т.е. по адресу фактического параметра x. На экран будет
выведено: х = 1.
Параметры-массивы в функциях
Массивы, так же как и простые переменные, можно передавать в функции
в качестве параметров. Так как имя массива – это адрес, то передача массива
происходит всегда по адресу
Если мы хотим передать в подпрограмму отдельный элемент
массива, то в качестве соответствующего ему формального параметра
указывается простая переменная того же типа.
87

Лабораторная работа № 10.
ТИПОВЫЕ ПОДПРОГРАММЫ – ФУНКЦИИ.
Цель работы: Приобрети навыков разработки алгоритмов обработки типовых
функций, определенных пользователем.
Подготовка к лабораторной работе:
1. В процессе подготовки к лабораторной работе необходимо повторить
такие элементы языка как:
отличие бестиповой функции от типизированной,
списки фактических и формальных параметров,
вызов типовой функции.
2. В соответствии с заданием разработать алгоритм решения задачи,
описать его в виде схемы и составить программу на языке Си.
Общий вид описания типовой функции
Описание функции содержит заголовок со списком формальных
параметров и тело функции.
Тип Имя Функции(список формальных параметров)
{
Описание локальных переменных;
Операторы тела функции;
return результат;
}
Тип указываемый в заголовке функции определяет тип результата ее
работы, который будет возвращаться в точку вызова. Если тип не указан, то по
умолчанию подразумевается int (целый). Для возврата значения в теле функции
должен быть оператор return. В дальнейшем будем называть такую функцию
типизированной или типовой.
Результат работы функции возвращается в точку вызова с помощью
оператора return. Таким образом, функция может вернуть только одно
скалярное значение.
Рассмотрим пример оформления типовой функции для вычисления
максимального значения из двух заданных.
#include "stdafx.h"
int max(int a, int b)
{
int c;
if (a>b)
c=a;
else
88

c=b;
return c;
}
void main()
{ int x,y,z;
printf("Введите x и y:");
scanf("%d%d",&x,&y);
z=max(x,y);
printf("max=%d\n",z);
}
Обращение к функции
Обращение к типизированной функции не является специальным
оператором, а включается в состав оператора присваивания или оператора
вывода. Результат выполнения функции возвращается в точку вызова через имя
функции. Обращение к функции записывается аналогично записи стандартной
функции (например, sin(x), ехp(x) и т.п.) в виде операнда:
<имя функции>(<список фактических параметров>);
При вычислении выражения операнд обращения к функции заменяется
значением функции.
Рассмотрим, например, функцию, вычисляющую среднее значение
элементов массива. Желательно сделать ее так, чтобы в нее можно было
передавать массивы любого размера и она всегда правильно вычисляла
результат. В языке Си функции не могут самостоятельно определять размер
массива, поэтому он должен быть обязательно одним из параметров.
#include "stdafx.h"
int Sum ( int A[], int N )//заголовокфункции Sum
{
int i, sum;
sum = 0;
for ( i = 0; i < N; i ++ )
sum += A[i];
returnsum/N; //возврат вычисленного значения
}
void main()
{
int x[5]={1,2,3,4,5},y[3]={11,22,33};
printf("\nsrx=%dsry=%d\n", Sum(x,5),Sum(y,3));
}
Обратите внимание, что в заголовке функции размер массива указан
отдельно. Нельзя объявлять массив-параметр как A[N], а только как A[] или
*A.
89

Если в функцию передаётся двумерный массив, то описание соответствующего
аргумента функции должно содержать количество столбцов; количество строк несущественно, поскольку фактически передаётся указатель. Например: int Х[
][5], или Х[5][5].
Порядок выполнения работы.
1. Получить допуск к работе у преподавателя(показать домашние
заготовки).
2. Загрузить среду Visual Studio.
3. Ввести текст программы.
4. Провести отладку программы.
5. Выполнить программу, провести анализ результатов и убедившись в
правильности решения, предъявить их преподавателю для проверки.
6. Занести результаты расчета в отчет.
7. Выйти из среды.
Задание к лабораторной работе:
Разработать программу для выполнения над массивом операций в
соответствии с вариантом. На печать вывести исходный массив и полученный
результат с текстовым комментарием.
Варианты заданий:
1. Вычисление количества элементов массива, больших 1 и
меньших 5.
2. Вычисление среднего арифметического отрицательных
элементов массива.
3. Вычисление суммы нечетных элементов массива.
4. Вычисление количества положительных четных элементов
массива.
5. Вычисление суммы элементов массива
6. Вычисление количества отрицательных элементов массива.
7. Вычисление суммы положительных элементов массива.
8. Вычисление количества элементов массива, кратных 5.
9. Определение минимального значения среди положительных
элементов массива.
10. Вычисление суммы четных элементов массива.
11. Определение максимального значения среди диагональных
элементов массива.
90
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
