0 / 0 / 0
Регистрация: 15.04.2019
Сообщений: 37
|
|
1 | |
Написать функцию (или функции) для обработки одномерного массива11.12.2019, 15:10. Показов 578. Ответов 2
Метки нет Все метки)
(
Дан целочисленный вектор A размерности n. Найти номер последнего минимального элемента среди четных положительных элементов, лежащих правее первого отрицательного элемента.
Функция не должна содержать ввод-вывод. Вызов функции, ввод исходных данных, вывод результатов реализовать в функции main. Массив, с которым осуществляется работа, должен быть динамическим. Выделение и освобождение памяти для массива также осуществлять в функции main. Глобальные переменные использовать нельзя.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
11.12.2019, 15:10 | |
Ответы с готовыми решениями:
2
Разработать внешнюю функцию для обработки одномерного массива Написать библиотеку для обработки одномерного динамического массива |
Модератор
![]() 3857 / 3180 / 479
Регистрация: 27.01.2014
Сообщений: 5,809
|
|
11.12.2019, 16:13 | 2 |
жесть... А как вы сами себе представляете все это? )
1
|
0 / 0 / 0
Регистрация: 15.04.2019
Сообщений: 37
|
|
11.12.2019, 17:52 [ТС] | 3 |
/*
Дан целочеисленный вектор A размерности n. Найти номер последнего минимального элемента среди четных положительных элементов, лежащих правее первого отрицательного элемента. Преобразовать вектор таким образом, чтобы сначала располагали сь все элементы, отличающиеся от минимального не более чем на 10, а потом все остальные. */ #include <stdio.h> #include <conio.h> #include <math.h> #include <stdlib.h> #include <malloc.h> #define nmax 100 int main () { int n, i, ineg = -1, ichet = -1, t = 0, imin, min; printf("n = "); scanf("%d", &n); int *a = (int *) malloc(n*sizeof(int)); for(i = 0; i < n; i++) { printf("a[%d] = ", i); scanf("%d", (a+i)); if(a[i] < 0 && t == 0) { ineg = i; t = 1; } if(*(a+i)%2 == 0 && * (*(a+i)) > 0) //? ichet = i; } printf("ish. v-r\n"); for(i = 0; i < n; i++) printf("%5d", *(a+i); printf("\n"); if(ineg == -1) printf("net otr.\n"); else if(ineg == n - 1) printf("otr na posl. meste\n"); else if(ichet == -1) printf("net chet. > 0 elem\n"); else if(ichet < ineg) printf("net. chet > 0 elem. posle otr.\n"); else { imin = ineg + 1; for(i = imin + 1; i < n; i++) if(*(a+i) <= a[imin] && *(a+i) > 0) imin = i; printf("min = %d", a[imin]); printf("\n"); } //min = a[0]; min=*a; for(i = 1; i < n; i++) if(*(a+i) < min ) min = *(a+i) printf("min = %d\n", min); int b[nmax], c[nmax], d[nmax], j=0, k=0; int *b = (int *) malloc(n*sizeof(int)) int *c = (int *) malloc(n*sizeof(int)) int *d = (int *) malloc(n*sizeof(int)) for(i = 0; i < n; i++) if(abs(*(a+i) - min) <= 10) { *(b+j) = *(a+i); j++; } else { *(c+k) = *(a+i); k++; } for(i = 0; i < j; i++) *(d+i) = *(b+i); for(i = 0; i < k; i++) d[i + j] = *(c+i); int m = 1; for(i = 0; i < n; i++) if(*(a+i) != *(d+i)) m = 0; if(m == 1) printf("vector bez izm."); else for(i = 0; i < n; i++) printf("%5d", *(d+i)); free(b); free(c); free(d); free(a); getch(); return 0; } Здесь используется работа через указатели + сортировка, вот это всё нужно сделать через функции
0
|
11.12.2019, 17:52 | |
Помогаю со студенческими работами здесь
3
Написать функцию, которая меняет элементы заданного списка или одномерного массива
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |