Определить среднее арифметическое элементов каждого рядка матрицы - C (СИ) (71265)
Формулировка задачи:
С клавиатуры вводится двумерный массив действительных чисел размером n*n. Нужно определить среднее арифметическое элементов каждого рядка. Рядки массива сортируются за увеличением. Все действия через функции, и использовать массив через показатель.
У меня есть обычное решение данной программы, нужно немного исправить код под показатели. Помогите кому не трудно.
Код:
#include <stdio.h>
#include <stdlib.h>
//С клавиатуры вводится двумерный массив действительных чисел размером n*n.
// Нужно определить среднее арифметическое элементов каждого рядка.
//Рядки массива сортируются за увеличением.
const int N = 5;
int main()
{
float temp, sum = 0, A[N][N];
int i, j, k, nMin;
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
printf("Enter a value for an element A[%d][%d] -> ", i, j);
scanf("%f", &A[i][j]);
}
}
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
nMin = j;
for(k = j + 1; k < N; k++)
if(A[i][k] < A[i][nMin])
nMin = k;
if(nMin != j){
temp = A[i][j];
A[i][j] = A[i][nMin];
A[i][nMin] = temp;
}
}
}
puts("Sorted rows:");
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
sum += A[i][j];
printf("%9g", A[i][j]);
}
printf(" Arithmetic mean is %g\n", sum / N);
printf("\n");
sum = 0;
}
return 0;
}Решение задачи: «Определить среднее арифметическое элементов каждого рядка матрицы»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
//С клавиатуры вводится двумерный массив действительных чисел размером n*n.
// Нужно определить среднее арифметическое элементов каждого рядка.
//Рядки массива сортируются за увеличением.
int main(){
float temp, sum = 0, **A;
int i, j, k, nMin, N;
printf("Enter size of matrix: ");
scanf("%i", &N);
A=(float**)malloc(N*sizeof(float*));
for(i = 0; i < N; i++){
A[i]=(float*)malloc(N*sizeof(float));
for(j = 0; j < N; j++){
printf("Enter a value for an element A[%d][%d] -> ", i, j);
scanf("%f", &A[i][j]);
}
}
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
nMin = j;
for(k = j + 1; k < N; k++)
if(A[i][k] < A[i][nMin])
nMin = k;
if(nMin != j){
temp = A[i][j];
A[i][j] = A[i][nMin];
A[i][nMin] = temp;
}
}
}
puts("Sorted rows:");
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
sum += A[i][j];
printf("%9g", A[i][j]);
}
printf(" Arithmetic mean is %g\n", sum / N);
printf("\n");
sum = 0;
}
for(i = 0; i < N; i++){
free(A[i]);
}
free(A);
return 0;
}
Объяснение кода листинга программы
- Ввод двумерного массива действительных чисел размером n*n с клавиатуры.
- Выделение памяти под массив указателей на массивы float.
- Ввод значений элементов матрицы с клавиатуры.
- Сортировка строк матрицы по возрастанию.
- Вывод отсортированных строк матрицы.
- Вычисление среднего арифметического элементов каждой строки.
- Освобождение памяти, выделенной под матрицу и ее строки.
- Возврат значения 0, завершающего работу программы.