Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <conio.h>
- /*
- Составить программу, которая преобразует одномерный целочисленный массив так,
- чтобы все его элементы содержащие нечётные числа остались на своих местах,
- а все его элементы содержащие чётные числа расположились в обратном порядке.
- Вывести одной строкой элементы исходного и преобразованного массива
- */
- int main()
- {
- const int N = 7; //мощность массива
- const unsigned short RANGE = 100; //предел для значений элементов
- int i; //индекс (счетчик)
- int j = 0; //индекс для массива b
- int a[N]; //объявление исходного массива
- int b[N]; //вспомогательный массив
- int tmp = 0; //переменная для хранения промежуточных значений
- //заполнение массива случайными числами
- srand(time(NULL)); //srand(15); => -5 -56 -38 -1 -62 -84 -44 ::: -5 -44 -84 -1 -62 -38 -56
- printf("Автоматически сфомированный массив состоит из следующих элементов\n");
- if (rand() % 2) //числа в массиве будут только отрицательными
- {
- for (i=0; i<N; i++)
- {
- a[i] = (rand() % RANGE) * (-1);
- printf ("%4d", a[i]);
- }
- }
- else //числа в массиве будут как отрицательными, так и положительными
- {
- for (i=0; i<N; i++)
- {
- if (rand() % 2)
- a[i] = (rand() % RANGE) * (-1);
- else
- a[i] = (rand() % RANGE);
- printf ("%4d", a[i]);
- }
- }
- //поиск всех четных элементов и их вывод в обратном порядке
- printf("\nВывод исходного и преобразованного массивов через разделитель ' ::: '\n");
- for (i=0; i<N; i++)
- {
- tmp = a[i];
- printf("%4d", tmp);
- if (!(tmp % 2))
- {
- j++;
- b[N-j] = i;
- }
- }
- printf(" ::: "); // Разделитель
- for (i=0; i<N; i++)
- {
- tmp = a[i];
- if (tmp % 2)
- printf("%4d", tmp);
- else
- {
- printf("%4d", a[b[N-j]]);
- j--;
- }
- }
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement