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

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

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

Всем доброго дня! Есть программка на Си, нормально работает только массив В не правильно считает, может кто подскажет:
Листинг программы
  1. #include < stdio.h >
  2. #include < iomanip >
  3. using namespace std;
  4. void printMatrix (double arr[ ][ 4 ],double brr[][4],double s=0)
  5. {setlocale(LC_ALL, "Russian");
  6. printf("Массив А(Первый массив)");
  7. printf("\n");
  8. for (int i = 0; i < 4; i++)
  9. {
  10. for (int j = 0; j < 4; j++)
  11. {
  12. printf("%3.1f", arr[ i ][ j ]);
  13. printf(" ");
  14. s=s+arr[i][j];
  15. brr[i][j]=arr[i][j]/s;
  16. }
  17. printf("\n");
  18. }
  19. printf("Сумма элементов массива");
  20. printf("\n");
  21. printf("%.1f",s);
  22. printf("\n");
  23. printf("Массив B(Второй преобразованный массив)");
  24. printf("\n");
  25. for (int i=0;i<4;i++)
  26. {
  27. for (int j=0;j<4;j++)
  28. {printf("%2.2f",brr[i][j]);
  29. printf(" ");
  30. }
  31. printf("\n");
  32. }
  33. printf("\n");
  34. }
  35. int main ( void )
  36. {
  37. 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}};
  38. double brr[4][4];
  39. printMatrix( arr, brr );
  40. system( "pause > nul" );
  41. return 0;
  42. }

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

textual
Листинг программы
  1. for (i = 0; i < 4; i++)
  2. {
  3. for (j = 0; j < 4; j++)
  4. {
  5.     printf("%3.1f", arr[ i ][ j ]);
  6. printf(" ");
  7. s=s+arr[i][j];
  8. //brr[i][j]=arr[i][j]/s;  //тут мы еще не знаем сумму всех элементов
  9.  
  10. }
  11. printf("\n");
  12. }
  13.  
  14. //добавить цикл
  15.  
  16. for (i = 0; i < 4; i++)
  17. {
  18.     for (j = 0; j < 4; j++)
  19.         {
  20.             brr[i][j]=arr[i][j]/s;  //а тут мы уже знаем сумму всех элементов и формируем новую матрицу
  21.         }
  22. }

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

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

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


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

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

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

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

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

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