Ввод матрицы с клавиатуры - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define Max 100
#define N 5
int main ()
{float min;
int i,j,C[N][N]=
{{0,100,2,1,2},
{2,0,100,8,1},
{100,1,0,1,3},
{1,100,2,0,1},
{100,2,5,5,0}},A[N][N],B[N][N],B_new[N][N],k,fl;
for (i=0;i<N;++i)
for (j=0;j<N;++j)
A[i][j]=B[i][j]=C[i][j];
for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
//if ((i==j || i==N-j) && C[i][i]>0) //замена диагональных элементов матрицы на 0
C[i][i]= A[i][i] =B[i][i]=0;
//B_new[i][j]
do{fl=0;
for (i=0;i<N;++i)
for (j=0;j<N;++j){
min = A[i][0]+B[0][j];
for (k=1;k<N;++k){
B_new[i][j]=A[i][k]+B[k][j];
if( min >(A[i][k]+B[k][j]))
min = A[i][k]+B[k][j];
B_new[i][j]= min;
}
}
for(i=0;i<N;i++){
for(j=0;j<N;j++){
if(B[i][j]!=B_new[i][j])
{fl=1;
for (i=0;i<N;++i)
for (j=0;j<N;++j)
B[i][j]=B_new[i][j];
break;
}}}
if(fl) break;
}while(fl);
//exit
printf("Matrix B\n");
for ( i = 0; i < N; i ++ ) {
for ( j = 0; j < N; j ++ )
printf ( "\t%d" ,B[i][j] );
printf("\n");
}
return 0;
}Решение задачи: «Ввод матрицы с клавиатуры»
textual
Листинг программы
for (int i = 0; i<n; i++){
for (int j = 0; j<m; j++){
scanf_s("%i", &matrica[i][j]);
}
}
Объяснение кода листинга программы
- Переменная
nсодержит количество строк в матрице. - Переменная
mсодержит количество столбцов в матрице. - Матрица
matricaпредставляет собой двумерный массив, в котором хранятся значения, введенные пользователем. - Ввод значений матрицы осуществляется с помощью функции
scanf_s, которая считывает целочисленное значение и записывает его в соответствующую ячейку матрицы. - Внешний цикл
forвыполняетсяnраз, перебирая строки матрицы. - Внутренний цикл
forвыполняетсяmраз, перебирая столбцы матрицы. - В каждой итерации внутреннего цикла происходит считывание значения из стандартного ввода с помощью функции
scanf_sи запись его в соответствующую ячейку матрицы.