Смекни!
smekni.com

Методические указания к лабораторным работам по дисциплине «Программирование на языке высокого уровня» (стр. 7 из 10)

-3. Управление передается на первый оператор функции.

-4. Выполнение оператора return в ' теле функции возвращает управление и, возможно, значение в вызывающую функцию. Если оператор return не задан, то управление возвращается после выполнения последнего оператора тела функции. При этом возвращаемое значение не определено.

Рассмотрим программу, которая,печатает квадрат числа от 2 до 25 используя функцию.

#include<stdio.h>

#include<inath.h>

square (int i); // Идет объявление функции

main()

{ clrscrf);

inti=2;

while(i++<25) // Вызывается функция

printf(« Квадрат(%d) числа =%d&bsol;n», i, square(i));

getch();

} .

// Идет определение функции

square(int x)

// Пишется тело функции

{ return (x*x); }

Варианты задач

1: Составить программу для определения среднего балла группы по результатам сессии. Оценки групп сведены в матрицы А(25,5), В(23,5), С(22,5), D(24,5). Средний балл вычислять в функции.

2: Составить программу для нахождения наименьших элементов матриц А(10,12), В(15,10) и номеров строк и столбцов, в которых они находятся, используя функцию.

3: Составить программу для записи в массив Z положительных элементов массивов А(40), В(50),С(30) подряд, используя функцию.

4: Составить программу для вычисления значения функции

Z=(xi + yi)/(x: + у2), где Xi.xi - корни уравнения ax2+bx+c=0; yi и у-> -корни уравнения dy2+ey+f=0. Если корни хотя бы одного уравнения комплексные, то вычисляется функция. Zk - (xi + V2j/(yi + уз), Для вычисления корней использовать функцию.

5: Составить программу для нахождения средних значений результатов экспериментов Х(5,6), Y(7,4), Z(5,7). Результаты записать в массив Р(3). Для нахождения максимального элемента матрицы использовать функцию.

6: Составить программу для нахождения элементов целочисленных массивов А(40), В(30), С(60), кратных 3, используя функцию.

7: Составить программу для нахождения сумм элементов каждой строки матриц А(15,20) и В(17,10), используя функцию.

8: Составить программу для вычисления и запоминания в массиве D(3) наибольших элементов массивов A(n), B(m), C(k), используя функцию. Значения n, m, k не превосходят 30.

9: Составить программу с использованием функции для вычисления суммы и количества положительных элементов массивов А(7())„ В(80), С(65).

10: Чего больше: всех возможных трехзначных чисел, записываемых цифрами 1, 2, 3, 4, 5; всех двухзначных чисел, записываемых цифрами 2, 4, 6, 8; всех четырехзначных чисел, записываемых цифрами i. 3, 7, 8. 9 '?. Подсчет количества соответствующих чисел оформить в виде функции.

11: В порт в среднем приходит 3 корабля в день. Какова вероятность того, что в порт в день придет 2 корабля; 4 корабля?. Вычисление вероятности оформить в виде функции.

12: Два спортсмена одновременно начинают движение из одной точки. Первый спортсмен начинает движение со скоростью 10 км/час и равномерно (линейно) за каждый следующий час увеличивает скорость на 1 км. Второй начинает движение со скоростью 9 км/час и равномерно за каждый следующий час увеличивает скорость на 1,6 км/час. Выяснить, какой спортсмен преодолеет больший путь через I час; через 4 час. Вычисление путей оформить с помощью функций.

13: В задаче 12 определить, когда второй спортсмен догонит первого. Решение квадратного уравнения оформить в виде функции.

14: Футболист ударом ноги посылает мяч вертикально вверх с высоты 1 м с начальной скоростью 20 м/с. На какой высоте мяч будет через 1с; Зс; 4с? Вычисление высоты оформить с помощью функции.

15: В задаче 14 определить, когда мяч будет на высоте 5м; 10м. Решение квадратного уравнения оформить в виде функции.

Лабораторная работа № 8

Тема: Составной тип данных: структуры.

В отличие от массивов, все элементы которых должны быть одного типа, структуры объединяют в одной переменной элементы

разных, типов.

Объявления структуры начинается с ключевого слова struct и имеет

два формата записи.

Формат 1:

struct [имя типа-структуры ]

{список-объявлений-элементов}

[ [описатель]…];

Формат 2:

struct наш типа-структуры описатель [описатель]

где имя типа-структуры - это идентификатор, который именует тип структуры.

Описатель - именует переменную структурного типа. Список-объявлений-элеменатов содержит одно или несколько объявлений переменных или полей битов.

Квадратные скобки ([ ]) означает необязательный формат записи и могут быть опущены.

Объявление структуры задает имя структурной переменной и последовательность переменных величин, называемых элементами структуры, которые могут иметь различные типы. Элементы структуры могут быть любого основного типа, массивом, указателем, смесью или структурой. Пример объявление структуры:

struct Teacher {

char fio[40];

int tab_nom;

float oklad; }

spisok[20],*tt;

struct Teacher_sc();

В этом примере объявляется структура типа Teacher из 20 элементов, указатель на структуру типа Teacher и функция, возвращающая структуру типа Teacher.

Элементы структуры запоминаются последовательно в том же порядке, в котором они объявляются: первому элементу соответствует самый младший адрес памяти, а последнему - самый старший.

Память каждому элементу выделяется на границе, соответствующей его типу.

Для определения действительного размера структурной переменной надо использовать операцию sizeof.

// Пример решения задачи с использованием структyp (struct):

#include<stdio.h>

#tnclude<conio.h>

int main(void) .

{ char nom _ tab[20];

char fam [20];

int vvod=0;

int loop, vozr;
double zarp;

struct kol _ struct

{char fam[20];

int vozr;

float zarp;

} kol[20];

printf («&bsol;n&bsol;n Введите номер таблицы (ведомости) ?: »);
scanf («%20s» ,nom_ tab);

fflush (stdin);

printf (« Сколько записей собираетесь ввести ( можно до 20);»);

scanf («%d», wod);

fflush (stdin);

for (loop=0;loop<vvod; ++loop)

{

printf (« Запись %d&bsol;n»,loop);

printf (« Фамилия :»);

scanf («%s».kol [loop].fain);

flush (stdin);

printf (« Ваш возраст :»);

scanf («%d», kol [loop]. vozr);

fflush (stdin);

printf (« Ваша зарплата :»);

scanf («%f»,kol [loop]. zarp );

flush (stdin);

}

primf («&bsol;n Теперь введите свою фамилию, возраст и зарплату &bsol;n»);

scinf («%20s %d %lf», fam, &vozr, &zarp»);

printf («&bsol;n&bsol;n Таблица( ведомость):%s&bsol;n», nom_tab);

printf (« Таблицу составил:%sвозраст %d $ 15.21F&bsol;n», fam , vozr, zarp);

printf («_______________________________________________&bsol;n»);

for ( loop = 0;loop< vvod; ++loop)

printf («%4d | % -20s|%5d|%15.21f&bsol;n»,

loop+1,

kol [loop]. fam,

kol loop].vozr,

kol [loop].zarp);

printf («_______________________________________________&bsol;n»);

return 0;

}

После компиляции и выполнение этой программы на экране появится следующие запросы:

Введите номер таблицы (ведомости)?: 1

Сколько записей собираетесь ввести(можно до 20): 4

Запись 0:

Фамилия: Иванов И.

Ваш возраст: 23

Ваша зарплата. 345.67

Запись 1:

Фамилия: Сидоров В.

Ваш возраст: 22

Ваша зарплата. 545.67

Запись 2:

Фамилия: Токоев Р.

Ваш возраст: 25

Ваша зарплата. 742.00

Запись 3:

Фамилия: Нанаев Н.

Ваша возраст: 842.00

Теперь введите свою фамилию, возраст и зарплату:

Абдыкеримов 29 678.90

После этого получаем резултат в виде:

Таблица 1:

Таблицу составил: Абдыкеримов возраст: 29 $ 678.90

1 Иванов И. 23 345.67
2 Сидоров В. 22 545.67
3 Токоев Р. 25 742.00
4 Нанаев Н. 27 842.00

Варианты задач.

1. Дан файл с записями следующей структуры:

Номер зачетки Факультет Ф.И.О. Курс Группа Шифр предмета Оценка

В зависимости от запроса необходимо выдать списки студентов заданного факультета и курса, упорядочив их либо по труппам, а внутри групп по алфавиту, либо просто по алфавиту. Кроме того, необходимо распечатать списки неуспевающих по каждому предмету.

2. Задан файл с записями следующей структуры:

Реквизит Шаблон
Номер зачетки Факультет Курс Группа Оценки

Записать его как индексно - последовательный файл и затем по запросу выдавать либо списки успевающих, либо списки неуспевающих, либо полностью информацию по какому - либо студенту.

3. Задан файл с записями следующей структуры

Факультет Курс Группа Номер зачетки Оценки 1 Оценки 2 Оценки 3

Файл неупорядочен. Рассортировать его по факультету, курсу, группе, номеру зачетки и распечатать, подсчитав количество неуспевающих и отличников по каждому подразделению.

4. Вводится неупорядоченный файл с записями следующей структуры:

Номер зачетки Ф.И.О.

Упорядочить его одним из методов сортировки по убыванию номеров зачеток.

5. Задан файл с записями следующей структуры:

Реквизит Шаблон
Номер зачетки Ф.И.О. Курс Группа Оценки

Создать индексно-последовательный файл и одновременно распечатать его. Вместо оценок выдавать признак успеваемости: неуд. –есть хотя бы одна двойка; уд. –все тройки; см. – смешанные оценки; ох. –отлично и хорошо; отл. – отличные оценки.

6. Имеется файл, содержащий информацию об абитуриентах следующей структуры:

Реквизит Шаблон
Факультет Ф.И.О. Оценки Средний балл Пол

Составить программу записи файла и вывода на печать списка абитуриентов: имеющих средний балл 5; имеющих средний балл 4,5; имеющих средний балл ниже 4,5.