Заполнение массива и его запись в файл - разобрать пример - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Возникли проблемы с заполнением массива, и я не могу понять чем они вызваны. Суть проста, Есть 2 массива которые заполняются определенным образом(причем одинаково), а затем записываются в файл. После выполнения программы, взглянув в выходной файл, можно понять что массивы различны!! Как это происходит мне не известно, поэтому ищу помощи сдесь:о Код написан на С.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <iostream>
  5. int n=20;
  6. int m=120;
  7. int main()
  8. {
  9. double T[n][m],B[n][m],D[n][m];
  10. int i,j;
  11. for(i=1;i<=n;i++)
  12. {
  13. for(j=1;j<=m;j++)
  14. {
  15. T[i][j]=0;
  16. B[i][j]=0;
  17. D[i][j]=0;
  18. }
  19. }
  20. for(i=(n/2-2);i<=(n/2+2);i++)
  21. {
  22. for(j=(m/2-2);j<=(m/2+2);j++)
  23. {
  24. B[i][j]=1;
  25. D[i][j]=1;
  26. T[i][j]=1;
  27. }
  28. }
  29.  
  30. FILE *fout;
  31. fout = fopen("e:\\cods\\test04\\output.txt","wt");
  32. if (fout != 0)
  33. {
  34.  
  35. fprintf(fout, "\n");
  36. for(i=1;i<=n;i++)
  37. {
  38. fprintf(fout, "\n");
  39. for(j=1;j<=m;j++)
  40. fprintf(fout, "% .2f", D[i][j]);
  41. }
  42. fprintf(fout, "\n" "\n");
  43. for(i=1;i<=n;i++)
  44. {
  45. fprintf(fout, "\n");
  46. for(j=1;j<=m;j++)
  47. fprintf(fout, "% .2f", T[i][j]);
  48. }
  49. }
  50. else printf("ne mogu otkryt' fail ");
  51. }

Решение задачи: «Заполнение массива и его запись в файл - разобрать пример»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int n=20;
  5. int m=120;
  6.  
  7. int main()
  8. {
  9.     double T[n][m],B[n][m],D[n][m];
  10.     int i,j;
  11.  
  12.     for(i=0;i<n;i++)
  13.     {
  14.         for(j=0;j<m;j++)
  15.         {
  16.             T[i][j]=0;
  17.             B[i][j]=0;
  18.             D[i][j]=0;
  19.         }
  20.     }
  21.     for(i=(n/2-2);i<=(n/2+2);i++)
  22.     {
  23.         for(j=(m/2-2);j<=(m/2+2);j++)
  24.         {
  25.             B[i][j]=1;
  26.             D[i][j]=1;
  27.             T[i][j]=1;
  28.         }
  29.     }
  30.  
  31.  
  32.     FILE *fout;
  33.         fout = fopen("e:\\cods\\test04\\output.txt","wt");
  34.  
  35.         if (fout != 0)
  36.         {
  37.  
  38.  
  39.             fprintf(fout, "\n");
  40.             for(i=0;i<n;i++)
  41.             {
  42.                 fprintf(fout, "\n");
  43.                 for(j=0;j<m;j++)
  44.                     fprintf(fout, "% .2f", D[i][j]);
  45.             }
  46.             fprintf(fout, "\n" "\n");
  47.             for(i=0;i<n;i++)
  48.             {
  49.                 fprintf(fout, "\n");
  50.                 for(j=0;j<m;j++)
  51.                     fprintf(fout, "% .2f", T[i][j]);
  52.             }
  53.         }
  54.         else printf("ne mogu otkryt' fail ");
  55. }

Объяснение кода листинга программы

  1. Объявление переменных:
    • 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 (переменные для циклов)
  2. Заполнение матрицы T нулями:
    • Внешний цикл for(i=0;i<n;i++) для прохода по первому измерению матрицы
    • Внутренний цикл for(j=0;j<m;j++) для прохода по второму измерению матрицы
    • T[i][j] = 0 (присваивание элементу матрицы T значение 0)
  3. Заполнение матрицы 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)
  4. Запись матрицы 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 в файл)
    • Запись матрицы B в файл:
    • fprintf(fout, \n \n)
    • Внешний цикл for(i=0;i<n;i++)
    • Внутренний цикл for(j=0;j<m;j++)
      • fprintf(fout, % .2f, T[i][j]) (запись значения элемента матрицы T в файл)
    • Закрытие файла:
    • fclose(fout)
    • Вывод сообщения об ошибке, если файл не удалось открыть:
    • printf(ne mogu otkryt' fail)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы