В ходе выполнения работы изучил способы описания файлов и основные принципы работы с файлами в различных режимах: создания, модификации, добавления и чтения.

Министерство образования Российской Федерации

Пензенский государственный университет

Кафедра «Вычислительная техника»

 

ОТЧЕТ

по лабораторной работе №8

по курсу «Программирование»

на тему «ФУНКЦИИ»

 

 

Выполнил:

студенты группы 20ВВ1

DD

 

Принял:

к.т.н., доцент Юрова О.В.

 

 

Пенза 2020


Цель работы:

изучение способов описания файлов и основных принципов работы с файлами в различных режимах: создания, модификации, добавления и чтения.

Методические указания:

При составлении программы необходимо учитывать следующие положения:

 - имена файлов исходных данных (в режимах начального формирования и добавления) и файлов результатов должны вводиться с клавиатуры;

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

Лабораторное задание

1. (Вариант №2)

а) Задан массив А(20). Вывести на экран сначала его неотрицательные элементы, затем отрицательные.

б) Вычислить среднее арифметическое элементов каждого столбца матрицы М(10,10).

2. В задание №6 лабораторной работы добавить работу с файлами:

а) в функции ввода исходные данные записывать в файл;

б) в функциях обработки и вывода данные читать из файла, результат сохранять в файл;

в) для второго задания лабораторной работы №6 данные дописывать в файл с исходными данными для первого задания;

г) результаты выполнения и первого, и второго задания тоже должны быть сохранены в одном файле.

3. Выполнить программу на компьютере и оценить правильность ее работы.

4. Вывести на печать содержимое файла исходных данных и результатов работы программы.

 


Листинг программы .

#define _CRT_SECURE_NO_WARNINGS

#define _CRT_NONSTDC_NO_WARNINGS

 

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <stdlib.h>

#include <locale.h>

#include <time.h>

 

void main()

{

setlocale(0, "");

FILE* inp;

FILE* outp;

 

//Задание а

int A[20];

int* pA = A;

int tmp;

 

char finp[20]="inp.txt";

char foutp[20]= "outp.txt";

   

srand(time(NULL));

 

printf("Ведите имя файла начальных данных: ");

//gets_s(finp);

printf("Ведите имя файла результирующих данных: ");

//gets_s(foutp);

 

inp = fopen(finp, "w");

   

printf("Открытие файла %s: ", finp);

if (inp == NULL)

     printf("ошибка\n");

else

     printf("выполнено\n");

   

printf("Исходный массив: \n");

for (pA = A; pA < &A[20]; pA++)

{

     *pA = rand() % 20 - 10;

     printf("%4d", *pA);

     fprintf(inp, "%4d", *pA);

}

printf("\n");

fprintf(inp, "\n");

fclose(inp);

 

inp = fopen(finp, "r");

outp = fopen(foutp, "w");

printf("Преобразованный массив: \n");

for (int i=0; i < 20; i++)

{

     fscanf(inp, "%4d", &tmp);

     if (tmp >= 0)

     {

          printf("%4d", tmp);

          fprintf(outp, "%4d", tmp);

     }

}

fseek(inp, 0, SEEK_SET);

for (int i = 0; i < 20; i++)

{

     fscanf(inp, "%4d", &tmp);

     if (tmp < 0)

     {

          printf("%4d", tmp);

          fprintf(outp, "%4d", tmp);

     }

}

printf("\n\n");

fprintf(outp, "\n");

fclose(inp);

fclose(outp);

 

//Задание б

int M[10][10];

int N[10][10];

int sum = 0;

 

inp = fopen(finp, "a");

 

printf("Исходная матрица: \n");

for (int i = 0; i < 10; i++) {

     for (int j = 0; j < 10; j++) {

          *(*(M + i) + j) = rand() % 20 - 10;

          printf("%6d", *(*(M + i) + j));

          fprintf(inp, "%6d", *(*(M + i) + j));

     }

     printf("\n");

     fprintf(inp, "\n");

}

fclose(inp);

 

inp = fopen(finp, "r");

outp = fopen(foutp, "a");

fseek(inp, 20*4, SEEK_SET);

printf("\n\n\n");

 

for (int i = 0; i < 10; i++) {

     for (int j = 0; j < 10; j++) {

          fscanf(inp, "%6d", &N[i][j]);

     }

}

printf("\n\n");

fprintf(outp, "\n");

 

printf("Суммы по столбцам: \n");

fprintf(outp, "Суммы по столбцам: \n");

for (int j = 0; j < 10; j++) {

     sum = 0;

     for (int i = 0; i < 10; i++) {

              

          sum += *(*(N + i) + j);

     }

     printf("%6.1lf", double(sum) / 10);

     fprintf(outp, "%6.1lf", double(sum) / 10);

}

printf("\n\n");

 

fclose(inp);

fclose(outp);

 

getchar();

}


Схема программы

Рисунок 1 – Схема программы

Результаты работы программы

Результаты работы программы в консоли показаны на рисунке 2.

 

Рисунок 2 – Результат работы программы.

     Содержание файлов со входными данными и результатами работы программы представлены на рисунках 3 и 4.

Рисунок 3 – Содержание файла с начальными данными inp.txt

Рисунок 4 – Содержание файла с результатами работы программы outp.txt

 

На рисунке 5, 6, 7, 8 показан протокол трассировки после ввода переменных.


Рисунок 5 - Протокол трассировки.

Рисунок 6 - Протокол трассировки.

Рисунок 7 - Протокол трассировки.

Рисунок 8 - Протокол трассировки.

Вывод:

В ходе выполнения работы изучил способы описания файлов и основные принципы работы с файлами в различных режимах: создания, модификации, добавления и чтения.


Дата добавления: 2021-01-20; просмотров: 138; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!