Дана матрица действительных чисел размером 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");
}
#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");
}
Здесь три задания или одно? Я в том плане, что максимальный элемент матрицы в строке при делении на самого себя в первом случае станет равным плюс единице, и во всех строках максимальные элементы станут равны плюс единице, в то время как остальные будут гарантированно меньше, или равны, и второе, и третье деление не имеет смысла. Какой смысл делить на 1.
Чтобы исходная матрица не портилась при выполнении первого пункта, она еще будет нужна для последних двух пунктов задания, результат для каждого пункта надо записывать в другую матрицу.
#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, а потом уже ее печатаю, вроде бы так ближе к заданию.
#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;
}
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;
}
Похожие вопросы
- Пожалуйста, ктол может объяснитеб как написать программу на языке Си по этой задаче. С чего начать????
- язык си. задача по языку Си. Задаются коэффициенты системы из трёх линейных уравнений. Найти корни.
- Почему язык СИ такой сложный?
- задачка на языке СИ что то не делает по условию задачи
- Программирование на языке СИ с использованием подпрограммы-функции
- Задача по языку Си
- Исправте ошибки в задаче на языке Си
- помогите....не представляю что делать с этой задачей....язык си....
- Помогие решить задачу на языке Си
- Программирование на языке Си. Нужна небольшая помощь.