Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Функции и массивы

Автор: 18192123 2.03.2007 1:09

Дана матрица А(55). Определить массив Х из 5 элементов, каждый из которых равен 1, если наименьший элемент соответствующей строки положителен и –1 в противном случае.

Проблема как раз в ф-ции заполнения массива Х...


#include <STDIO.H>
#define n 2
void input_matr (int a[n][n])
{
int i,j;
printf ("Vvedite elementi matrici: \n");
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
scanf ("%d", &a[i][j]);
}

int *mas_x (int (*a)[n], int *x)
{
int i,j;

for (i = 0; i < n; i++);
{
int min = 1000;
for (j = 0; j < n; j++);

min = ( a[i][j] < min) ? a[i][j]: min;
}
x[i] = ( min > 0 ) ? 1 : -1;

return x;
}

void output (int a[n][n], int x[])
{
int i,j;
printf ("Matrica a: \n");
for ( i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf ("%5d", a[i][j]);
printf ("\n");
}
printf ("Massiv x: \n");
for ( i= 0; i < n; i++);
printf ("%5d", x[i]);
printf ("\n");
}

void main ()
{
int a[n][n], x[n];
input_matr(a);
output(a,mas_x(a,x));
}


Автор: volvo 2.03.2007 2:34

Цитата
Проблема как раз в ф-ции заполнения массива Х...
no1.gif Как раз ТОЛЬКО в этой функции проблем и нет... Смотри на комментарии, я отметил все места, которые исправил, и написал, почему было неверно...

#include <STDIO.H>
#define n 2
void input_matr (int a[n][n])
{
int i,j;
printf ("Vvedite elementi matrici: \n");
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
scanf ("%d", &a[i][j]);
}

int *mas_x (int (*a)[n], int *x)
{
int i,j, min; // min описываем здесь - иначе это уже не С, а С++

for (i = 0; i < n; i++) // 0 - здесь надо убрать ";" иначе получается, что цикл ПУСТ
{
min = 1000; // 1
for (j = 0; j < n; j++) // 2 - убираем ";"
min = ( a[i][j] < min) ? a[i][j]: min;
// } - этот цикл заканчивается не здесь, а ниже ...
x[i] = ( min > 0 ) ? 1 : -1;
} // 3 - вот здесь ...

return x;
}

void output (int a[n][n], int x[])
{
int i,j;
printf ("Matrica a: \n");
for ( i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf ("%5d", a[i][j]);
printf ("\n");
}
printf ("Massiv x: \n");
for ( i= 0; i < n; i++) // 4 - аналогично - убираем ";"
printf ("%5d", x[i]);
printf ("\n");
}

void main ()
{
int a[n][n], x[n];
input_matr(a);
output(a,mas_x(a,x));
}


Автор: 18192123 2.03.2007 2:45

volvo , большое спасибо!