Помощь - Поиск - Пользователи - Календарь
Полная версия: Многомерные массивы в языке СИ
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
18192123
Дана матрица А(55). Найти в каждой строке количество тех элементов, которые строго меньше двух своих соседей.
количество нужных элементов в каждой строке хочу записать в новый массив...но точно не знаю, как это сделать...


#include <STDIO.H>
void main ()
{
int a[5] [5], i, j;
FILE *fp;
for (i = 0; i < 5; i++)
for (j = 0; j <5; j++)
scanf ("%d" , & a[i] [j]);
fp = fopen("out.txt", "w");
for (i = 0; i <5; i++)
{
for (j = 0; j < 5; j++)
fprintf (fp, "%d", a[i] [j]);
fprintf (fp, "\n");
fprintf (fp, "============================");
}
int c[5], count ;
for (i = 0; i < 5; i++)
{
count = 0;
for (j = 0; j < 5; j++)
if ( (a[i][j+1] < a[i][j]) && (a[i][j+1] < a[i][j+2])
{
count = count + 1;
c[i] = c[i] + count;
fprintf (fp, "%d", c[i]);
}

}
fclose(fp);

}

klem4
#include <stdio.h>

const int n = 5;

int M[n][n] = {
{1, 4, 3, 4, 5},
{4, 5, 5, 1, 5},
{5, 2, 6, 2, 5},
{5, 4, 1, 5, 7},
{5, 9, 10, 9, 0}
}, counts[n];

int main(void){
for (int i = 0; i < n; i++){
int count = 0;
for (int j = 1; j < n - 1; j++)
count = ((M[i][j] < M[i][j - 1]) && (M[i][j] < M[i][j + 1])) ? ++count : count;
counts[i] = count;
}
for (int i = 0; i < n; i++) printf("i = %d, counts[%d] = %d\n", i, i, counts[i]);
return 0;
}
volvo
klem4,
for (int j = 1; j < n - 1; j++)
count += ((M[i][j] < M[i][j - 1]) && (M[i][j] < M[i][j + 1])) ? 1 : 0;
Полностью соответствует Стандарту, твой вариант может вызвать гнев некоторых компилеров...
18192123
 
#include <STDIO.H>
const int n = 5;
void main ()
{
int a[n] [n], i, j, counts[n];
FILE *fp;
for (i = 0; i < n; i++)
for (j = 0; j <n; j++)
scanf ("%d" , & a[i] [j]);
fp = fopen("out.txt", "w");
for (i = 0; i <n; i++)
{
for (j = 0; j < n; j++)
fprintf (fp, "%d", a[i] [j]);
fprintf (fp, "\n");
fprintf (fp, "============================");
}

for (i = 0; i < n; i++)
{
int count = 0;
for (j = 1; j < n - 1; j++)
count += ((a[i][j] < a[i][j-1]) && (a[i][j] < a[i][j+1] )) ? 1 : 0;

counts[i] = count;
}
fprintf (fp,"i= %d, counts[%d] = %d\n", i, i, counts[i] );


}
fclose(fp);

}




Объясните, из-из чего компилятор выдаёт ошибки?
volvo
Вопрос на засыпку: КАКОЙ компилятор у тебя?
klem4
Спасибо, надо запомнить.

Гнев - это плохо, особенно гнев компилятора smile.gif
volvo
18192123
У тебя напутано с открывающими/закрывающими скобками... Вот эти 2 строки компилятор считает лишними:
fclose(fp);

}
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.