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;

}

4. Компиляция, отладка, тестирование и получение результата:

 

Задание 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. Схема алгоритма решения задачи:

 

 

3. Код программы

 

3.1. На языке Паскаль:

 

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.

3.2. На языке Си:

 

#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");

}



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: