Другие языки программирования и технологии

Язык Си. Подскажите с задачей.

Дана матрица действительных чисел размером 10х12. Преобразовать ее следующим образом:
а) разделить каждый элемент матрицы на максимальное значение собственной строки;
б) разделить каждый элемент матрицы на максимальное значение собственного столбца;
в) разделить каждый элемент матрицы на максимальное значение всей матрицы.

Я понимаю, что решение пунктов а, б и в выглядят так:
a) a[ i ][ j ]/=maxstr[ i ];
б) a[ i ][ j ]/=maxstol[ j ];
в) a[ i ][ j ]/=max;
но никак не пойму куда их вставить и как вывести на экран
Вот мой код:
#include <stdio.h>
#include <stdlib.h>
void main()
{
int i,j,n=10,m=12;
float a[10][12],maxstr[10],maxstol[12],max;
printf(" Matrica a:\n");
for(i=0;i<n;i++)>[j]=0.005*rand();
printf("%6.1f",a[j]);
}
}

printf("\n");
for(i=0;i<n;i++)>=-1000;
for(j=0;j<m;j++)>[j]>maxstr) maxstr=a[j];

}
printf("\nMaximalnoe znachenye stroky: %6.1f",maxstr);

for(j=0;j<m;j++)>[j]>maxstol[j]) maxstol[j]=a[j];

}
printf("\nMaximalnoe znachenye stolbca: %6.1f",maxstol[j]);

max=a[0][0];
for(i=0;i<n;i++)>[j]>max) max=a[j];

}
printf("\nMaximalnoe znachenye matricy a: %6.1f",max);

}
#include <stdio.h>
#include <stdlib.h>
#define n 10
#define m 12
void main()
{
int i,j;
float a[n][m],maxstr[n],maxstol[m],max;
printf(" Matrica a:\n");
for(i=0;i-n;i++,printf("\n")) for(j=0;j-m;j++) a[ i ][j]=0.005*rand(),printf("%6.1f",a[ i ][j]); printf("\n");
for(i=0;i-n;i++) for(maxstr[ i ]=a[ i ][0],j=1;j-m;j++) if(maxstr[ i ] < a[ i ][j]) maxstr[ i ]=a[ i ][j];
for(j=0;j-m;j++) for(maxstol[ j ]=a[ 0 ][j],i=1;i-n;i++) if(maxstol[ j ] < a[ i ][j]) maxstol[ j ]=a[ i ][j];
for(max=maxstr[0],i=1;i-n;i++) if(max < maxstr[ i ]) max=maxstr[ i ];
for(i=0;i-n;i++,printf("\n")) { for(j=0;j-m;j++) printf("%6.1f",a[ i ][j]); printf("| %6.1f",maxstr[ i ]); }
printf("------------------------------------------------------------------------+-------\n");
for(j=0;j-m;j++) printf("%6.1f",maxstol[j]); printf("| %6.1f\n\n",max);
printf("\nMaximalnoe znachenye strok\n");
for(i=0;i-n;i++,printf("\n")) for(j=0;j-m;j++) printf("%9.6f",a[ i ][j]/maxstr[ i ]); printf("\n");
printf("\nMaximalnoe znachenye stolbcov\n");
for(i=0;i-n;i++,printf("\n")) for(j=0;j-m;j++) printf("%9.6f",a[ i ][j]/maxstol[ j ]); printf("\n");
printf("\nMaximalnoe znachenye matricy\n");
for(i=0;i-n;i++,printf("\n")) for(j=0;j-m;j++) printf("%9.6f",a[ i ][j]/max); printf("\n");
}
Рустам Жаксалыков
Рустам Жаксалыков
76 473
Лучший ответ
Здесь три задания или одно? Я в том плане, что максимальный элемент матрицы в строке при делении на самого себя в первом случае станет равным плюс единице, и во всех строках максимальные элементы станут равны плюс единице, в то время как остальные будут гарантированно меньше, или равны, и второе, и третье деление не имеет смысла. Какой смысл делить на 1.
Афган Ахмедов
Афган Ахмедов
92 404
Чтобы исходная матрица не портилась при выполнении первого пункта, она еще будет нужна для последних двух пунктов задания, результат для каждого пункта надо записывать в другую матрицу.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define n 10
#define m 12
int main(){
float a[n][m],b[n][m],max; int i,j; srand(time(NULL));
for(i=0;i< n;i++)for(j=0;j< m;j++)a[ i][ j]=10.*rand()/RAND_MAX;
for(i=0;i< n;i++){for(j=0;j< m;j++)printf("%6.3f",a[ i][ j]); printf("\n");} printf("\n");

for(i=0;i< n;i++){max=a[ i][ 0]; for(j=0;j< m;j++)if(max< a[ i][ j])max=a[ i][ j]; for(j=0;j< m;j++)b[ i][ j]=a[ i][ j]/max;}
for(i=0;i< n;i++){for(j=0;j< m;j++)printf("%6.3f",b[ i][ j]); printf("\n");} printf("\n");

for(j=0;j< m;j++){max=a[ 0][ j]; for(i=0;i< n;i++)if(max< a[ i][ j])max=a[ i][ j]; for(j=0;j< m;j++)b[ i][ j]=a[ i][ j]/max;}
for(i=0;i< n;i++){for(j=0;j< m;j++)printf("%6.3f",b[ i][ j]); printf("\n");} printf("\n");

max=a[ 0][ 0]; for(i=0;i< n;i++)for(j=0;j< m;j++)if(max< a[ i][ j])max=a[ i][ j]; for(i=0;i< n;i++)for(j=0;j< m;j++)b[ i][ j]=a[ i][ j]/max;
for(i=0;i< n;i++){for(j=0;j< m;j++)printf("%6.3f",b[ i][ j]); printf("\n");} printf("\n");
getchar(); return 0;}

Программу можно было бы сократить, сразу печатая вычисленные значения, но я сначала получаю каждый раз новую матрицу b, а потом уже ее печатаю, вроде бы так ближе к заданию.
int u, i, j, n;
cout <<"N=";
cin >> n;
int a[n][n];
int b[n];//помогите решить//
srand(time(0));
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
a[i][j] = rand() % 100;
}