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

Что-то я снова понапутала....


int *mas_x (int (*a)[n], int *x)
{
int i,j, count, k;
for (j = 0; j < n; j++)
{
count = 0 ;
for (k = 0; k < n; k++)
for (i = 0; i < n-k-1; i++)
if (a[i][j] < a[i+1][j])
count+=1;
if (count == 3)
x[j] = 1;
else x[j] = -1;
}

return x;
}

18192123
Уже разобралась, в чём была ошибка:

int *mas_x (int (*a)[n], int *x)
{
int i,j, count, k;
for (j = 0; j < n; j++)
{
count = 0 ;
for (k = 0; k < n; k++)
for (i = 0; i < n-k-1; i++)
if (a[i][j] < a[i+1][j])

count+=1;
else break;

if (count == 3)
x[j] = 1;
else x[j] = -1;

}

return x;
}

klem4
Я бы так сделал:

# include <stdlib.h>
# include <stdio.h>

void CreateVector(int **mx, int *arr, int n) {
for (int j = 0; j < n; j++) {
int i = 0;
while ((i <= n - 3) && ! ((mx[i][j] < mx[i+1][j]) && (mx[i+1][j] < mx[i+2][j])))
i++;
arr[j] = (i <= n - 3) ? 1 : -1;
}
}

int n, *x, **m;

int main (void) {
n = 5;

x = (int*)malloc(n * sizeof(int));
m = (int**)malloc(n * sizeof(int*));

for (int i = 0; i < n; i++)
m[i] = (int*)malloc(n * sizeof(int));

srand(time(NULL));

for (i = 0; i < n; i++) {
printf("\n");
for (int j = 0; j < n; j++) {
m[i][j] = rand() % 10;
printf("%3d", m[i][j]);
}
}

CreateVector(m, x, n);

printf("\n\n");

for (i = 0; i < n; i++) printf("%3d", x[i]);

free(x);
for (i = 0; i < n; i++) free(m[i]);
free(m);

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