- •Иркутский государственный университет путей сообщения
- •Содержание
- •Лабораторная работа № 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
Задание 2.
Создать текстовый файл, в который построчно записать квадратный массив massivnn, заполненныйцелыми случайными числами в диапазоне от v_min до v_max. Размер массива n задать константой. Границы диапазона v_min и v_max задать с консоли. Прочитать из созданного файла числа построчно, главную и побочную диагонали массива и вывести их на экран.При чтении из файла массив не использовать и считать размер массива неизвестным.
1.Создадим наD:\User файлchisla.txt,откроем его для записи и запишем в него созданный массив построчно, разделяя элементы массива пробелами. Откроем его для чтения и прочитаем до конца, определив количествоcountзаписанных в нем чисел. Определим размер записанного массиваm, взяв корень квадратный из найденного количества чисел. Снова откроем файл для чтения, и прочитаем записанные в нем числа двумя вложенными циклами: внешним (i)– по строкам, и внутренним (j) – по столбцам. Приi=j читается число на главной диагонали, приi=n-j+1 читается число на побочной диагонали.
2. Схема алгоритма решения задачи:
Код программы
На языке Паскаль:
Program Variant_0;
Uses WinCrt;
Const n = 5; {задание размера массива именованной константой}
Var i, j : Word;
k, v_min, v_max, count, m1, n1: Integer;
massiv : Array [1..n, 1..n] Of Integer;
f: Text;
Begin
Randomize; {запуск генератора случайных чисел}
WriteLn('Лабораторная работа №8_2');
WriteLn('Вариант №0');
WriteLn('ИС-11-1');
WriteLn('Пупкин Василий');
WriteLn;
WriteLn('Задайте диапазон случайных чисел');
Write('v_min=');
ReadLn(v_min);
Write('v_max=');
ReadLn(v_max);
For i:=1 To n Do {заполнение массива случайными числами}
For j:=1 To n Do
massiv[i,j]:=Random(v_max-v_min + 1) + v_min;
Assign(f, 'D:\User\f.txt');
ReWrite(f); {открываем файл для записи}
For i:=1 To n Do {записываем в файл исходный массив построчно}
Begin
For j:=1 To n Do
Write(f, massiv[i,j]:5);
WriteLn(f);
End;
Close(f); {закрываем файл}
ReSet(f); {открываем файл для чтения}
count:=0; {количество записанных в файле чисел}
While (Not(EOF(f))) Do
Begin
Read(f, k);
count:=count+1;
End;
ReSet(f);
m1:=0; {количество чисел в первой строке – количество столбцов}
While (Not(EOLn(f))) Do
Begin
Read(f, k);
m1:=m1+1;
End;
n1:=count div m1; {количество строк}
WriteLn;
Writeln('строк=', n1);
Writeln('столбцов=', m1);
WriteLn;
WriteLn('Прочитанный из файла массив:');
WriteLn;
ReSet(f);
For i:=1 To n1 Do
Begin
For j:=1 To m1 Do
Begin
Read(f, k); {читаем очередное число}
Write(k:5); {и выводим его на экран}
End; {j}
WriteLn;
End; {i}
WriteLn;
WriteLn('Главная диагональ:');
Reset(f); {снова открываем файл для чтения}
For i:=1 To n1 Do
Begin
For j:=1 To m1 Do
Begin
Read(f, k);
If (i=j)
Then Write(k:5);
End; {j}
End; {i}
WriteLn;
WriteLn('Побочная диагональ:');
Reset(f); {снова открываем файл для чтения}
For i:=1 To n1 Do
Begin
For j:=1 To m1 Do
Begin
Read(f, k);
If (i=m1-j+1)
Then Write(k:5);
End; {j}
End; {i}
WriteLn;
Close (f);
End.
На языке Си:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <time.h>
// прототип функции формирования квадратного массива
void vorm_mass(int nn, int mass_max, int mass_min, int mass[nn][nn]);
int main()
{
int i, j, n, massiv_min, massiv_max, count;
FILE *f_mass;
printf("\nЛабораторная работа №8_2");
printf("\nВариант №0");
printf("\nПО-11-1");
printf("\nПупкин Василий\n");
printf("\nВведите нижнюю границу диапазона:");
scanf("%d", &massiv_min);
printf("\nВведите верхнюю границу диапазона:");
scanf("%d", &massiv_max);
printf("\nВведите размер массива:");
scanf("%d", &n);
int massiv[n][n];
printf("\nИсходный массив:\n");
vorm_mass(n, massiv_max, massiv_min, massiv);
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
printf("%5d", massiv[i][j]);
printf("\n");
}
printf("\n");
f_mass = fopen("E:/User/f_mass.txt", "w"); //открытие файла для записи
for (i=0; i<n; i++) //запись массива в файл построчно
{
for (j=0; j<n; j++)
fprintf(f_mass, "%5d", massiv[i][j]);
fprintf(f_mass, "\n");
}
fclose(f_mass); //закрытие файла после записи
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;
}
Компиляция, отладка, тестирование и получение результата:
Структура файла 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