Сформировать вектор из элементов исходного, которые предшествуют наибольшему элементу. Выполнить сдвиг полученного массива - C (СИ)
Формулировка задачи:
Задан вектор T(n), n<=12. сформировать вектор Y из элементов T[I], которые предшествуют наибольшему элементу вектора T. Выполнить сдвиг полученного массива на 1 позицию вправо.
Задано вектор T(n), n<=12. сформувати вектор Y з елементів T[I], що передують найбыльшому елементу вектора T. Виконати зсув отриманого масиву на 1 позицію вправо.
Решение задачи: «Сформировать вектор из элементов исходного, которые предшествуют наибольшему элементу. Выполнить сдвиг полученного массива»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 12
int main()
{
int* T = new int[N];
for (int x = 0; x < N; x++)
{
T[x] = rand() % (2 * (N-1)) - N;
printf("%d ",T[x]);
}
printf("\n");
int max = 0;
for (int i = 0; i < N; i++)
if (abs(T[i]) > abs(T[max])) max = i;
int *Y = new int[max+1], j = 0;
while (j < max) Y[j] = T[j++];
for (int z = 0; z < max; z++)
printf("%d ",Y[z]);
printf("\n");
_getch();
return 0;
}
Объяснение кода листинга программы
В этом коде выполняется следующее:
- Создается массив типа int из N элементов, заполняется случайными числами и выводится на экран.
- Находится индекс наибольшего элемента в массиве.
- Создается новый массив типа int, размером на 1 больше найденного индекса.
- В цикле, пока индекс меньше найденного, в новый массив копируются элементы из старого массива.
- Элементы нового массива выводятся на экран.