Advertisement
Guest User

Untitled

a guest
Apr 9th, 2020
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <conio.h>
  5.  
  6. /*
  7. Составить программу, которая преобразует одномерный целочисленный массив так,
  8. чтобы все его элементы содержащие нечётные числа остались на своих местах,
  9. а все его элементы содержащие чётные числа расположились в обратном порядке.
  10. Вывести одной строкой элементы исходного и преобразованного массива
  11. */
  12.  
  13. int main()
  14. {
  15.     const int N = 7; //мощность массива
  16.     const unsigned short RANGE = 100; //предел для значений элементов
  17.  
  18.     int i; //индекс (счетчик)
  19.     int j = 0; //индекс для массива b
  20.     int a[N]; //объявление исходного массива
  21.     int b[N]; //вспомогательный массив
  22.     int tmp = 0; //переменная для хранения промежуточных значений
  23.  
  24.     //заполнение массива случайными числами
  25.     srand(time(NULL)); //srand(15); => -5 -56 -38  -1 -62 -84 -44 :::   -5 -44 -84  -1 -62 -38 -56
  26.     printf("Автоматически сфомированный массив состоит из следующих элементов\n");
  27.     if (rand() % 2) //числа в массиве будут только отрицательными
  28.     {
  29.         for (i=0; i<N; i++)
  30.             {
  31.                 a[i] = (rand() % RANGE) * (-1);
  32.                 printf ("%4d", a[i]);
  33.             }
  34.     }
  35.     else //числа в массиве будут как отрицательными, так и положительными
  36.     {
  37.         for (i=0; i<N; i++)
  38.         {
  39.             if (rand() % 2)
  40.                 a[i] = (rand() % RANGE) * (-1);
  41.             else
  42.                 a[i] = (rand() % RANGE);
  43.             printf ("%4d", a[i]);
  44.         }
  45.     }
  46.  
  47.     //поиск всех четных элементов и их вывод в обратном порядке
  48.     printf("\nВывод исходного и преобразованного массивов через разделитель ' ::: '\n");
  49.     for (i=0; i<N; i++)
  50.     {
  51.         tmp = a[i];
  52.         printf("%4d", tmp);
  53.         if (!(tmp % 2))
  54.         {
  55.             j++;
  56.             b[N-j] = i;
  57.            
  58.         }
  59.     }
  60.  
  61.     printf(" ::: "); // Разделитель
  62.  
  63.     for (i=0; i<N; i++)
  64.     {
  65.         tmp = a[i];
  66.         if (tmp % 2)
  67.             printf("%4d", tmp);
  68.         else
  69.         {
  70.             printf("%4d", a[b[N-j]]);
  71.             j--;
  72.         }
  73.     }
  74.     getch();
  75.     return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement