f_mass = fopen("E:/User/f_mass.txt", "r"); //открытие файла для чтения
count = 0; //количество прочитанных чисел
while (!feof(f_mass)) //пока не конец файла f_mass
{
i = fscanf(f_mass, "%d", &n);
count++;
}
printf("\nВ файле записано %d чисел\n", count);
count = sqrt(count); //определение размера записанного в файле массива
f_mass = fopen("E:/User/f_mass.txt", "r");
printf("\nПрочитанный из файла массив:\n");
for (i=0; i<count; i++) //чтение массива из файла и вывод его на экран построчно
{
for (j=0; j<count; j++)
{
fscanf(f_mass, "%5d", &n);
printf("%5d", n);
}
printf("\n");
}
printf("\n");
f_mass = fopen("E:/User/f_mass.txt", "r");
printf("\nГлавная диагональ массива:\n");
for (i=0; i<count; i++) //чтение массива из файла и вывод на экран его главной диагонали
for (j=0; j<count; j++)
{
fscanf(f_mass, "%5d", &n);
if (i == j)
printf("%5d", n);
}
printf("\n\n");
f_mass = fopen("E:/User/f_mass.txt", "r");
printf("\nПобочная диагональ массива:\n");
for (i=0; i<count; i++) //чтение массива из файла и вывод на экран его побочной диагонали
for (j=0; j<count; j++)
{
fscanf(f_mass, "%5d", &n);
if (j == count-i-1)
printf("%5d", n);
}
printf("\n\n");
Fclose(f_mass); //закрытие файла
return 0;
}
//описание функции формирования квадратного массива
void vorm_mass(int nn, int mass_max, int mass_min, int mass[nn][nn])
{
int i, j, m;
Time_t t; // текущее время для инициализации
// генератора случайных чисел
srand((unsigned) time(&t)); // инициализация генератора
// случайных чисел
m = mass_max-mass_min + 1;
// получение случайного числа в диапазоне
// от vector_min до vector_max
for (i=0; i<nn; i++)
for (j=0; j<nn; j++)
mass[i][j]=rand()% m + mass_min;
}
4. Компиляция, отладка, тестирование и получение результата:
5. Структура файла f.txt:
-9 -9 2 -6 2
1 9 -10 7 -9
3 0 -3 3 6
2 8 -6 -10 9
-9 7 2 -1 -4
Задания на лабораторную работу №8
Размеры создаваемых файлов считать заранее неизвестными и определять их при чтении файлов. При чтении из файла массивы не использовать. Можно использовать рабочие файлы.
Вариант 1
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить минимальное и максимальное числа и их позиции в файле (нумерация данных в файле начинается с нуля). Предусмотреть случай, когда таких чисел в файле нет. Удалить из файла все числа, находящиеся между минимальным и максимальным.
Задание 2
Создать текстовый файл, в который построчно записать квадратный массив massivnn, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размер массива n задать константой. Границы диапазона v_min и v_max задать с консоли. Прочитать из созданного файла k -ю строку и k -й столбец и вывести их на экран. Значение k задать с консоли. При чтении из файла считать размер массива неизвестным. Определить его при чтении файла.
Вариант 2
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить минимальное и максимальное числа и их позиции в файле (нумерация данных в файле начинается с нуля). Предусмотреть случай, когда таких чисел в файле нет. Оставить в файле только числа, находящиеся между минимальным и максимальным.
Задание 2
Создать текстовый файл, в который построчно записать квадратный массив massivnn, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размер массива n задать константой. Границы диапазона v_min и v_max задать с консоли. Прочитать из созданного файла все диагонали, параллельные главной, и вывести их на экран построчно. При чтении из файла считать размер массива неизвестным. Определить его при чтении файла.
Вариант 3
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить вторые по значению минимальное и максимальное числа и их позиции в файле (нумерация данных в файле начинается с нуля). Предусмотреть случай, когда таких чисел в файле нет. Оставить в файле только числа, находящиеся между ними.
Задание 2
Создать текстовый файл, в который построчно записать квадратный массив massivnn, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размер массива n задать константой. Границы диапазона v_min и v_max задать с консоли. Прочитать из созданного файла все диагонали, параллельные побочной, и вывести их на экран построчно. При чтении из файла считать размер массива неизвестным. Определить его при чтении файла.
Вариант 4
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить вторые по значению минимальное и максимальное числа и их позиции в файле (нумерация данных в файле начинается с нуля). Предусмотреть случай, когда таких чисел в файле нет. Удалить из файла все числа, находящиеся между ними.
Задание 2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Прочитать из созданного файла r -ю строку и p -й столбец и вывести их на экран. Значения r и p задать с консоли. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Вариант 5
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить первое по порядку четное и последнее нечетное числа и их позиции в файле (нумерация данных в файле начинается с нуля). Предусмотреть случай, когда таких чисел в файле нет. Удалить из файла все числа, находящиеся между ними.
Задание 2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Вывести на экран строку с максимальным элементом и столбец с минимальным элементом файла. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Вариант 6
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить первое по порядку нечетное и последнее четное числа и их позиции в файле (нумерация данных в файле начинается с нуля). Предусмотреть случай, когда таких чисел в файле нет. Удалить из файла все числа, находящиеся между ними.
Задание 2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Вывести на экран строку с минимальным элементом и столбец с максимальным элементом файла. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Вариант 7
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить первое по порядку положительное и последнее отрицательное числа и их позиции в файле (нумерация данных в файле начинается с нуля). Предусмотреть случай, когда таких чисел в файле нет. Оставить в файле только числа, находящиеся между ними.
Задание 2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Вывести на экран строку с максимальной суммой элементов и столбец с минимальной суммой элементов. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Вариант 8
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить первое по порядку отрицательное и последнее положительное числа и их позиции в файле (нумерация данных в файле начинается с нуля). Предусмотреть случай, когда таких чисел в файле нет. Оставить в файле только числа, находящиеся между ними.
Задание 2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Вывести на экран строку с минимальной суммой элементов и столбец с максимальной суммой элементов. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Вариант 9
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить первое по порядку положительное и последнее отрицательное числа и их позиции в файле (нумерация данных в файле начинается с нуля). Предусмотреть случай, когда таких чисел в файле нет. Удалить из файла все числа, находящиеся между ними.
Задание 2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Определить максимальный и минимальный элементы в файле и поменять их местами. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Вариант 10
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить первое по порядку отрицательное и последнее положительное числа и их позиции в файле (нумерация данных в файле начинается с нуля). Предусмотреть случай, когда таких чисел в файле нет. Удалить из файла все числа, находящиеся между ними.
Задание 2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Определить второй максимальный и второй минимальный элементы в файле и поменять их местами. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Вариант 11
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Отсортировать файл по возрастанию.
Задание 2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Обнулить все элементы файла, находящиеся между его максимальным и минимальным элементами. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Вариант 12
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Отсортировать файл по убыванию.
Задание 2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Определить первый четный и последний нечетный элементы в файле и поменять их местами. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Вариант 13
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Перевернуть элементы файла – сделать “ поплавок ”.
Задание 2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Определить первый положительный и последний отрицательный элементы в файле и поменять их местами. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Вариант 14
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Удалить из файла его максимальный и минимальный элементы.
Задание 2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Определить первый нечетный и последний четный элементы в файле и поменять их местами. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Вариант 15
Задание 1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Удалить из файла вторые по величине максимальный и минимальный элементы.
Задание 2
Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Определить первый отрицательный и последний положительный элементы в файле и поменять их местами. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла.
Лабораторная работа № 9
Рекурсия
Тема: Программирование рекурсивных алгоритмов.
Цель работы: Освоить методику программирования рекурсивных алгоритмов. Освоить методику тестирования программ.
Задание на лабораторную работу
- Получить задание в соответствии с номером своего варианта.
- Составить схему алгоритма решения задачи.
- Написать код программы на языке Паскаль в среде Borland Pascal for Windows.
- Осуществить компиляцию, и отладку программы. Провести структурное тестирование программы (тестирование как белого ящика): составить тестовые наборы для тестирования
- в нормальных условиях,
- при граничных условиях,
- при некорректных входных данных,
- по критерию покрытия решений – результат проверки каждого условия принимал значение истина или ложь хотя бы один раз,
- по критерию покрытия условий – все возможные результаты каждой логической операции в условиях были получены хотя бы по одному разу.
- Получить результат.
- Оформить отчет по лабораторной работе.
Пример оформления работы
Задание 1.
Написать рекурсивную функцию, вычисляющую факториал заданного целого положительного числа n.
1. Для вычисления n! можно воспользоваться следующими соотношениями:
1! = 1
2! = 1•2 = 2•1!
3! = 1•2•3 = 3•2!
...
n! = n•(n-1)!
2. Схема алгоритма решения задачи:
3. Код программы
3.1. На языке Паскаль:
Program Variant_0;
Uses WinCrt;
Var n: Word;
fact: LongInt;
Function Factorial(k:Word):LongInt;
Begin
If (k=1) Or (k=0)
Then Factorial:=1 {терминальная ветвь}
Else Factorial:=k*Factorial(k-1); {рекурсивная ветвь}
End; {Factorial}
Begin {головная программа}
WriteLn('Лабораторная работа №9_1');
WriteLn('Вариант №0');
WriteLn('ИС-11-1');
WriteLn('Пупкин Василий');
WriteLn;
Write('n=');
ReadLn(n);
fact:=Factorial(n);
WriteLn('factorial=', fact);
End.
3.2. На языке Си:
#include <stdio.h>
#include <conio.h>
#include <math.h>
// прототип функции
unsigned long factorial(unsigned int n);
Int main()
{
unsigned int k;
unsigned long fact;
printf("\nЛабораторная работа №9_1");
printf("\nВариант №0");
printf("\nПО-11-1");
printf("\nПупкин Василий\n");
printf("\nВведите натуральное число:");
scanf("%d", &k);
fact = factorial(k);
printf("\nФакториал числа %d равен %d\n", k, fact);
return 0;
}
//описание функции