- •В.А. Лучников программирование на языках высокого уровня. Методические указания по выполнению лабораторных работ
- •Содержание
- •Лабораторная работа № 1 Выражения и операторы присваивания
- •Задание на лабораторную работу
- •Пример оформления работы
- •Задания на лабораторную работу №1
- •Пример оформления работы
- •Задания на лабораторную работу №2
- •Пример оформления работы
- •Int n; // целого типа
- •Задания на лабораторную работу №3
- •Пример оформления работы Задание 1.
- •Int n; // целого типа
- •Задание 2.
- •Int a, a1, a2, k, n, s; //описание переменных
- •Int a, a1, a2, n, s; // целого типа
- •Задания на лабораторную работу №4
- •Пример оформления работы
- •If (c In ['0'..'9']) Then {если очередной элемент - цифра}
- •Val(s,k,error); {преобразуем строку в число}
- •Задания на лабораторную работу №5
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Лабораторная работа № 6 Массивы
- •Задание на лабораторную работу
- •Пример оформления работы Задание 1.
- •Int n, vector_min, vector_max, min, max, i_min, i_max; String input, text; // строк класса String
- •Задание 2.
- •Int n, massiv_min, massiv_max, temp; // целого типа
- •Задания на лабораторную работу №6
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 17
- •Вариант 18
- •Вариант 19
- •Вариант 20
- •Лабораторная работа № 7 Подпрограммы
- •Задание на лабораторную работу
- •Пример оформления работы Задание 1.
- •Задание 2.
- •Задания на лабораторную работу №7
- •Вариант 1
- •Вариант 15
- •Лабораторная работа № 8 Файлы
- •Задание на лабораторную работу
- •Пример оформления работы Задание 1.
- •Задание 2.
- •Задания на лабораторную работу №8
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Лабораторная работа № 9 Рекурсия
- •Задание на лабораторную работу
- •Пример оформления работы Задание 1.
- •Задание 2.
- •Задания на лабораторную работу №9
Вариант 15
Задание 1
Строка состоит из нескольких слов, разделенных пробелом. Создать функцию, определяющую минимальное количество первых символов слов, по которым можно различить слова в строке.
Задание 2
Создать процедуру, которая упорядочивает строки прямоугольного массива matrixnmпо возрастанию количества одинаковых элементов в каждой строке.
Лабораторная работа № 8 Файлы
Тема: Программирование алгоритмов работы с файлами.
Цель работы: Освоить основные алгоритмы работы с типизированными и текстовыми файлами.
Задание на лабораторную работу
Получить задание в соответствии с номером своего варианта.
Составить схему алгоритма решения задачи.
Написать код программы на языке Паскаль в среде Borland Pascal for Windows.
Осуществить компиляцию, и отладку программы. Провести структурное тестирование программы (тестирование как белого ящика): составить тестовые наборы для тестирования
в нормальных условиях,
при граничных условиях,
при некорректных входных данных,
по критерию покрытия решений – результат проверки каждого условия принимал значение истина или ложь хотя бы один раз,
по критерию покрытия условий – все возможные результаты каждой логической операции в условиях были получены хотя бы по одному разу.
Получить результат.
Оформить отчет по лабораторной работе.
Пример оформления работы Задание 1.
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить сумму и количество введенных чисел, их среднее арифметическое, минимальное и максимальное числа и их позиции в файле (нумерация данных в файле начинается снуля). Массивы не использовать.
Создадим на D:\User файлchisla.dat,откроем его для записи и заполним его целыми числами. Откроем его для чтения и прочитаем первое число, которое и будет пока минимальнымminи максимальнымmax, при этом их индексы (позиция в файле) равнынулю. Снова откроем файл для чтения и прочитаем все записанные числа, сравнивая каждое из них с текущим минимумом и максимумом: если очередное число больше текущего максимума, то оно – максимум, если меньше текущего минимума – то оно минимум.В процессе поиска индексы максимального и минимального чисел ( i_max, i_min ) запоминаются. Одновременно будем определять суммуsummaи количество записанных чиселcount.
Схема алгоритма решения задачи:
Код программы
На языке Паскаль
Program Variant_0;
Uses WinCrt;
Var i, i_max, max, i_min, min, count : Integer;
summa, sr_arifm: Real;
chisla : File Of Integer;
Begin
WriteLn('Лабораторная работа №8_1');
WriteLn('Вариант №0');
WriteLn('ИС-11-1');
WriteLn('Пупкин Василий');
WriteLn;
Assign(chisla, 'D:\User\chisla.dat');
ReWrite(chisla); {открываем файл для записи}
Write('Введите первое число:');
ReadLn(i);
If (i=0) Then {если первое число – ноль,}
Begin {то выход из программы}
WriteLn('Файл не создан');
Erase(chisla);
Exit;
End
Else Write(chisla, i);
Repeat {цикл ввода чисел}
Write('Очередное число:');
ReadLn(i);
If (i<>0)
Then Write(chisla, i)
Else Break;
Until (i=0);
ReSet(chisla); {открываем файл для чтения}
Read(chisla, i); {и читаем первое число}
min:=i;
max:=i;
i_max:=0;
i_min:=0;
summa:=0.0;
count:=0;
ReSet(chisla); {снова открываем файл для чтения}
WriteLn;
WriteLn('Числа, записанные в файле:');
While (Not(EOF(chisla))) Do {цикл чтения чисел}
Begin
Read(chisla, i); {читаем очередное число}
Write(i:5); {и выводим его на экран}
If (i>max) Then
Begin
max:=i;
i_max:= FilePos(chisla);
End;
If (i<min) Then
Begin
min:=i;
i_min:= FilePos(chisla);
End;
summa:=summa+i;
count:=count+1;
End; {цикла чтения файла}
WriteLn;
sr_arifm:=summa/count;
WriteLn;
WriteLn('summa=', summa:0:0);
WriteLn('count=', count);
WriteLn('sr_arifm=', sr_arifm:6:3);
WriteLn('max=', max, ' i_max=', i_max);
WriteLn('min=', min, ' i_min=', i_min);
WriteLn;
Close(chisla);
End.
На языке Си:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <time.h>
int main()
{
int i, max, min, i_max, i_min, count, summa;
float sr_arifm;
FILE *f_chisla;
printf("\nЛабораторная работа №8_1");
printf("\nВариант №0");
printf("\nПО-11-1");
printf("\nПупкин Василий\n");
printf("\nПервое число: ");
scanf("%d", &i);
if (i == 0)
printf("\nФайл не создан\n");
return 0; //завершение работы программы
else
{
f_chisla = fopen("E:/User/f_chisla.txt", "w");
fprintf(f_chisla, "%5d", i);
}
do
{
printf("\nОчередное число: ");
scanf("%d", &i);
if (i != 0)
fprintf(f_chisla, "%5d", i);
else break;
}
while(1);
fclose(f_chisla); //закрытие файла
//открываем файл для чтения
f_chisla = fopen("E:/User/f_chisla.txt", "r");
//и читаем первое записанное в нем число
fscanf(f_chisla, "%d", &i);
min = i; //текущие min и max числа и их позиции
max = i;
i_min = 0;
i_max = 0;
count = 1; //количество прочитанных чисел
summa = i; //сумма прочитанных чисел
printf("\nЧисла, записанные в файл:\n ");
printf("%5d", i);
while (!feof(f_chisla))
{
fscanf(f_chisla, "%d", &i);
count++;
summa += i;
printf("%5d", i);
if (i < min)
{
min = i;
i_min = ftell(f_chisla); //позиция числа в файле
}
if (i > max)
{
max = i;
i_max = ftell(f_chisla); }
}
printf("\n");
printf("\nВ файле записано %d чисел", count);
printf("\nСумма этих чисел %d: ", summa);
sr_arifm = (float) summa/count;
printf("\nСреднее арифметическое %5.3f: ", sr_arifm);
printf("\nmin = %d", min);
printf("\ni_min = %d", i_min);
printf("\nmax = %d", max);
printf("\ni_max = %d", i_max);
fclose(f_chisla);
return 0;
}
Компиляция, отладка, тестирование и получение результата: