Заполнение массива и его запись в файл - разобрать пример - C (СИ)
Формулировка задачи:
Доброго времени суток. Возникли проблемы с заполнением массива, и я не могу понять чем они вызваны.
Суть проста, Есть 2 массива которые заполняются определенным образом(причем одинаково), а затем записываются в файл.
После выполнения программы, взглянув в выходной файл, можно понять что массивы различны!! Как это происходит мне не известно, поэтому ищу помощи сдесь:о
Код написан на С.
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <iostream> int n=20; int m=120; int main() { double T[n][m],B[n][m],D[n][m]; int i,j; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { T[i][j]=0; B[i][j]=0; D[i][j]=0; } } for(i=(n/2-2);i<=(n/2+2);i++) { for(j=(m/2-2);j<=(m/2+2);j++) { B[i][j]=1; D[i][j]=1; T[i][j]=1; } } FILE *fout; fout = fopen("e:\\cods\\test04\\output.txt","wt"); if (fout != 0) { fprintf(fout, "\n"); for(i=1;i<=n;i++) { fprintf(fout, "\n"); for(j=1;j<=m;j++) fprintf(fout, "% .2f", D[i][j]); } fprintf(fout, "\n" "\n"); for(i=1;i<=n;i++) { fprintf(fout, "\n"); for(j=1;j<=m;j++) fprintf(fout, "% .2f", T[i][j]); } } else printf("ne mogu otkryt' fail "); }
Решение задачи: «Заполнение массива и его запись в файл - разобрать пример»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <math.h> int n=20; int m=120; int main() { double T[n][m],B[n][m],D[n][m]; int i,j; for(i=0;i<n;i++) { for(j=0;j<m;j++) { T[i][j]=0; B[i][j]=0; D[i][j]=0; } } for(i=(n/2-2);i<=(n/2+2);i++) { for(j=(m/2-2);j<=(m/2+2);j++) { B[i][j]=1; D[i][j]=1; T[i][j]=1; } } FILE *fout; fout = fopen("e:\\cods\\test04\\output.txt","wt"); if (fout != 0) { fprintf(fout, "\n"); for(i=0;i<n;i++) { fprintf(fout, "\n"); for(j=0;j<m;j++) fprintf(fout, "% .2f", D[i][j]); } fprintf(fout, "\n" "\n"); for(i=0;i<n;i++) { fprintf(fout, "\n"); for(j=0;j<m;j++) fprintf(fout, "% .2f", T[i][j]); } } else printf("ne mogu otkryt' fail "); }
Объяснение кода листинга программы
- Объявление переменных:
- n = 20 (размер первого измерения массива)
- m = 120 (размер второго измерения массива)
- double T[n][m] (матрица T размером n на m, тип данных double)
- double B[n][m] (матрица B размером n на m, тип данных double)
- double D[n][m] (матрица D размером n на m, тип данных double)
- int i, j (переменные для циклов)
- Заполнение матрицы T нулями:
- Внешний цикл for(i=0;i<n;i++) для прохода по первому измерению матрицы
- Внутренний цикл for(j=0;j<m;j++) для прохода по второму измерению матрицы
- T[i][j] = 0 (присваивание элементу матрицы T значение 0)
- Заполнение матрицы B значениями 1 в определенной области:
- Внешний цикл for(i=(n/2-2);i<=(n/2+2);i++) для прохода по первому измерению матрицы
- Внутренний цикл for(j=(m/2-2);j<=(m/2+2);j++) для прохода по второму измерению матрицы
- B[i][j] = 1 (присваивание элементу матрицы B значение 1)
- Запись матрицы T и B в файл
output.txt
:- Открытие файла
output.txt
для записи: - fout = fopen(
e:\\cods\\test04\\output.txt
,wt
) - Проверка, открылся ли файл:
- if (fout != 0)
- Запись заголовка в файл:
- fprintf(fout,
\n
) - Запись матрицы T в файл:
- fprintf(fout,
\n
) - Внешний цикл for(i=0;i<n;i++)
- Внутренний цикл for(j=0;j<m;j++)
- fprintf(fout,
% .2f
, D[i][j]) (запись значения элемента матрицы D в файл)
- fprintf(fout,
- Запись матрицы B в файл:
- fprintf(fout,
\n
\n
) - Внешний цикл for(i=0;i<n;i++)
- Внутренний цикл for(j=0;j<m;j++)
- fprintf(fout,
% .2f
, T[i][j]) (запись значения элемента матрицы T в файл)
- fprintf(fout,
- Закрытие файла:
- fclose(fout)
- Вывод сообщения об ошибке, если файл не удалось открыть:
- printf(
ne mogu otkryt' fail
)
- Открытие файла
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д