Не верный вывод массива В - C (СИ)

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

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

Всем доброго дня! Есть программка на Си, нормально работает только массив В не правильно считает, может кто подскажет:
#include < stdio.h > 
#include < iomanip > 
 
using namespace std; 
 
void printMatrix (double arr[ ][ 4 ],double brr[][4],double s=0) 
{setlocale(LC_ALL, "Russian");
    printf("Массив А(Первый массив)");
    printf("\n"); 
for (int i = 0; i < 4; i++) 
{ 
for (int j = 0; j < 4; j++) 
{
    printf("%3.1f", arr[ i ][ j ]);
printf(" ");
s=s+arr[i][j];
brr[i][j]=arr[i][j]/s;
 
}
 
printf("\n"); 
} 
printf("Сумма элементов массива");
printf("\n"); 
printf("%.1f",s);
    printf("\n");
 
    printf("Массив B(Второй преобразованный массив)");
    printf("\n"); 
for (int i=0;i<4;i++)
    {
    for (int j=0;j<4;j++)
    {printf("%2.2f",brr[i][j]);
    printf(" ");
    }
    printf("\n");  
    }
printf("\n");
} 
 
int main ( void ) 
{ 
double arr[ 4 ][ 4 ] = {{1.0,2.1,0.6,4.0,},{5.0,6.0,12.4,6.1},{-9.6,-9.1,11.0,6.4},{1.3,1.4,15.0,16.0}}; 
double brr[4][4];
printMatrix( arr, brr ); 
system( "pause > nul" ); 
return 0; 
}

Решение задачи: «Не верный вывод массива В»

textual
Листинг программы
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
    printf("%3.1f", arr[ i ][ j ]);
printf(" ");
s=s+arr[i][j];
//brr[i][j]=arr[i][j]/s;  //тут мы еще не знаем сумму всех элементов
 
}
printf("\n");
}
 
//добавить цикл
 
for (i = 0; i < 4; i++)
{
    for (j = 0; j < 4; j++)
        {
            brr[i][j]=arr[i][j]/s;  //а тут мы уже знаем сумму всех элементов и формируем новую матрицу
        }
}

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

  1. В коде есть два вложенных цикла for. Первый цикл идет по элементам первого столбца матрицы, а второй - по элементам второго столбца.
  2. Внутри циклов происходит печать элементов матрицы с форматированием до 3 знаков после запятой. Затем элемент матрицы суммируется в переменную s.
  3. В первой части кода не выполняется деление элементов матрицы на сумму, поскольку значение переменной s еще не определено.
  4. Во второй части кода происходит деление каждого элемента матрицы на значение переменной s, которое уже определено. Результат сохраняется в новой матрице brr.

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


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

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

11   голосов , оценка 4.091 из 5
Похожие ответы