Міністерство освіти і науки, молоді та спорту України
Національний університет “Львівська політехніка”
Кафедра ЕОМ
ЗВІТ
з лабораторної роботи №7
з дисципліни: “Основи алгоритмізації та програмування”
на тему: “Розв'язування на С задач, які використовують файли для вводу та виводу даних”
Львів-2012
Індивідуальні завдання:
6-22. Заповнити сектори матрицi, якi лежать вище i нижче вiд головної та побiчної дiагоналей, значеннями вектора b1, b2, ... , b32, вiд лiвого верхньго кута вправо - вниз. Решта матрицi заповнити нулями. ( Примiтка. На малюнку вказанi iндекси елементiв вектора b.)
Текст програми:
#include <stdio.h>
#include <conio.h>
#define N 9
#define M (N * N + 1)/ 2 - N
int main()
{
int matrix[N][N];
int indexb[M];
int i, j;
int counter = 0;
for (i = 0; i < M; i++)
{
indexb[i] = i + 1;
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
matrix[i][j] = 0;
}
}
for (i = 0; i < N; i++)
{
for (j = i + 1; j < N - i - 1; j++)
{
matrix[i][j] = indexb[counter++];
}
for (j = N - i; j < i; j++)
{
matrix[i][j] = indexb[counter++];
}
}
printf("matrix:\n");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
printf("%d\t", matrix[i][j]);
}
printf("\n");
}
getch ();
return 0;
}
Небхідно написати два варіанти програми:
програма у якій ввід здійснюється з текстового файлу і вивід виконується в текстовий файл;
програма у якій ввід здійснюється з бінарного файлу і вивід відбувається в бінарний файл.
У бінарному файлі дані зберігаються у внутрішньому представлені.
Текст програми 1:
#include <stdio.h>
#include <conio.h>
#define N 9
#define M (N * N + 1)/ 2 - N
int main()
{
FILE *pt;
int c;
int matrix[N][N];
int indexb[M];
int i, j;
int counter = 0;
for (i = 0; i < M; i++)
{
indexb[i] = i + 1;
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
matrix[i][j] = 0;
}
}
for (i = 0; i < N; i++)
{
for (j = i + 1; j < N - i - 1; j++)
{
matrix[i][j] = indexb[counter++];
}
for (j = N - i; j < i; j++)
{
matrix[i][j] = indexb[counter++];
}
}
printf("matrix:\n");
pt = fopen("file.txt", "wt");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
fprintf(pt, "%d", matrix[i][j]);
fprintf(pt,"\t");
}
fprintf(pt, "\n");
}
fclose(pt);
pt = fopen("file.txt", "rt");
puts("");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
fscanf(pt, "%d", &c);
printf("%d\t", c);
}
puts("");
}
fclose(pt);
return 0;
}
Результат виконання програми 1:
/
/
Текст програми 2:
#include <stdio.h>
#include <conio.h>
#define N 9
#define M (N * N + 1)/ 2 - N
int main()
{
FILE *pt;
int c;
int matrix[N][N];
int indexb[M];
int i, j;
int counter = 0;
for (i = 0; i < M; i++)
{
indexb[i] = i + 1;
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
matrix[i][j] = 0;
}
}
for (i = 0; i < N; i++)
{
for (j = i + 1; j < N - i - 1; j++)
{
matrix[i][j] = indexb[counter++];
}
for (j = N - i; j < i; j++)
{
matrix[i][j] = indexb[counter++];
}
}
printf("matrix:\n");
pt = fopen("file.bin", "wb");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
fprintf(pt, "%d", matrix[i][j]);
fprintf(pt,"\t");
}
fprintf(pt, "\n");
}
fclose(pt);
pt = fopen("file.bin", "rb");
puts("");
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
fscanf(pt, "%d", &c);
printf("%d\t", c);
}
puts("");
}
fclose(pt);
return 0;
}
Результат виконання програми 2:
/
/
Висновок:
На цій роботі я навчився використовувати засоби текстового та бінарного файлового вводу та виводу в мовi програмування С.