Ввод элементов матрицы с клавиатуры - C (СИ)
Формулировка задачи:
у меня дано СЛАУ методом гаусса:
Проблема в том, что у меня задана сразу матрица. Мне нужно чтобы я вводил матрицу с клавиатуры...помогите пожалуйста
Листинг программы
- #include <stdio.h>
- #include <conio.h>
- #include <math.h>
- main()
- {
- clrscr();
- float a[50][51], x[50], t;
- int i, j, k, m, n;
- n=3; m=n+1;
- a[0][0]= 1; a[0][1]= 3; a[0][2]= 1; a[0][3]= 3;
- a[1][0]= 1; a[1][1]= 2; a[1][2]= 3; a[1][3]= 7;
- a[2][0]= 3; a[2][1]= 9; a[2][2]= 5; a[2][3]= 13;
- printf("Ishodnaya matrica \n \n");
- for (j = 0; j < n; j++)
- {
- for (i = 0; i < m; i++)
- printf("%6.2f\t", a[j][i]);
- printf("\n");
- x[j] = 0;
- }
- for (j = 0; j < n; j++)
- if (a[j][i] == 0)
- {
- k = j;
- while ((a[k+1][j] == 0) && (k < n))
- k++;
- if (a[k+1][j] != 0)
- for (i = 0; i < m; i++)
- {
- t = a[j][i];
- a[j][i] = a[k+1][i];
- a[k+1][i] = t;
- }
- else
- printf("SLAU imeet mnozhestvo resheniy\n \n");
- }
- for (k = 0; k < n - 1; k++)
- for (j = k + 1; j < n; j++)
- {
- if (a[k][k] !=0)
- {
- t = a[j][k] / a[k][k];
- for (i = 0; i < n + 1; i++)
- a[j][i] = a[k][i] * t - a[j][i];
- }
- else
- printf("SLAU ne imeet resheniy\n \n");
- }
- printf("\n Matrica privedena k treugol'nomu vidu:\n\n");
- for (j = 0; j < n; j++)
- {
- for (i = 0; i < n + 1; i++)
- printf("%6.2f\t", a[j][i]);
- printf("\n");
- }
- for (j = n - 1 ; j >= 0; j--)
- {
- t = a[j][n];
- for (i = j + 1; i < n; i++)
- t= t - a[j][i] * x[i];
- x[j] = t / a[j][j];
- }
- printf("\n Korni SLAU:\n\n");
- for (i = 0; i < n; i++)
- printf("x%d = %6.2f\n", i, x[i]);
- getch();
- }
Решение задачи: «Ввод элементов матрицы с клавиатуры»
textual
Листинг программы
- float a[50][51];
- for(i=0;i<50;i++)
- {
- for(u=0;u<51;u++)
- {
- scanf("%f",a[i][u]);
- }
- }
Объяснение кода листинга программы
В этом коде:
- Объявляется двумерный массив
a
типаfloat
размером 50x51. - Затем происходит два вложенных цикла, которые инициализируют все элементы массива
a
. - Внешний цикл выполняется 50 раз, перебирает первые 50 строк массива
a
. - Внутренний цикл выполняется 51 раз, перебирает все столбцы массива
a
. - В каждой итерации внутреннего цикла, с помощью функции
scanf()
, происходит ввод с клавиатуры значения для соответствующего элемента массиваa
. - Значение вводится в формате
float
, то есть вводится число с плавающей точкой. - Введенное значение сохраняется в соответствующем элементе массива
a
. - После завершения обоих циклов, программа продолжает работу с заполненным массивом
a
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д