Забыла исправить ошибку, которую уже нашла. При вводе с клавиатуры не %d, а %f. Однако, исправление этой ошибки проблему не исправляет
Исправленный код:
Часть программы для ввода массива с клавиатуры. Работает правильно только при вводе целых чисел, при вводе десятичной дроби выдает следующее (скрин 2).
Вот код, на всякий случай (На первом скрине удали функцию InNumF, чтобы уместить в один скрин. А так, InNumF-функция проверки на правильность ввода)
#include
#include
#include
#include
#include
float InNumF()
{
int i,f1=0;
char s[10];
while(1)
{
gets(s);
for (i=0;i=48&&s[i]<=57) continue;
if (s[i]==','&&!f1) {f1=1; continue;}
if (s[i]=='.'&&!f1) {s[i]=',';f1=1; continue;}
if (s[i]=='-'&&i==0) continue;
break;
}
if (i==strlen(s)) break;
printf("\nВведено недопустимое значение, повторите ввод: ");
f1=0;
}
return strtof(s,NULL);
}
int main()
{
int k,i,j,n;
float f,s;
setlocale(LC_ALL, "Russian");
printf("Введите порядок матрицы коэффициентов: ");
n=InNumF();
float a[n][n];
float b[n];
float x[n];
printf("Введите матрицу коэффициентов");
printf("\n");
for ( i=0; i < n; i ++ )
for ( j = 0; j < n; j ++ )
{
printf ("a[%d][%d]=", i, j);
scanf ("%f", & a[i][j]);
}
printf("Введите маccив свободных членов");
printf("\n");
for ( i=0; i < n; i ++ )
{
printf ("b[%d]=", i+1);
scanf ("%f", & b[i]);
}
return 0;
}
Вот код, на всякий случай (На первом скрине удали функцию InNumF, чтобы уместить в один скрин. А так, InNumF-функция проверки на правильность ввода)
#include
#include
#include
#include
#include
float InNumF()
{
int i,f1=0;
char s[10];
while(1)
{
gets(s);
for (i=0;i=48&&s[i]<=57) continue;
if (s[i]==','&&!f1) {f1=1; continue;}
if (s[i]=='.'&&!f1) {s[i]=',';f1=1; continue;}
if (s[i]=='-'&&i==0) continue;
break;
}
if (i==strlen(s)) break;
printf("\nВведено недопустимое значение, повторите ввод: ");
f1=0;
}
return strtof(s,NULL);
}
int main()
{
int k,i,j,n;
float f,s;
setlocale(LC_ALL, "Russian");
printf("Введите порядок матрицы коэффициентов: ");
n=InNumF();
float a[n][n];
float b[n];
float x[n];
printf("Введите матрицу коэффициентов");
printf("\n");
for ( i=0; i < n; i ++ )
for ( j = 0; j < n; j ++ )
{
printf ("a[%d][%d]=", i, j);
scanf ("%d", & a[i][j]);
}
printf("Введите маccив свободных членов");
printf("\n");
for ( i=0; i < n; i ++ )
{
printf ("b[%d]=", i+1);
scanf ("%d", & b[i]);
}
return 0;
}