Заполнение массива и его запись в файл - разобрать пример - 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 ");
}

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

  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
Похожие ответы