Advertisement
Qellex

lab5.1- 6v

Dec 2nd, 2022
699
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.23 KB | None | 0 0
  1. #include "stdio.h" // подключение ввода, вывода
  2. #include "locale.h" // подключение русского языка
  3. #include "stdlib.h" // подключение рандома
  4. #include "time.h"
  5.  
  6.  
  7. void input(int* a, int n) { // добавление массива рукописным вводом, передаем кол-во элементов в массиве и сам массив
  8.     printf("Введите числа (%d): ", n);
  9.     for (int i = 0; i < n; i++)
  10.         scanf_s("%d", &a[i]);
  11. }
  12.  
  13. void inputrand(int* a, int N) {// добавление массива рандомно передаем кол-во элементов в массиве и сам массив
  14.     for (int i = 0; i < N; i++) {
  15.         a[i] = rand() % 100;
  16.     }
  17. }
  18.  
  19. void output(int* a, int N) {  // вывод массива посимвольно, передаем кол-во элементов в массиве и сам массив
  20.     for (int i = 0; i < N; i++) {
  21.         printf("%3d", a[i]);
  22.     }
  23. }
  24.  
  25.  
  26. void main() {
  27.  
  28.     setlocale(LC_ALL, "rus"); // подключение русского языка
  29.  
  30.     int  N; // размер массива
  31.     srand(clock()); // датчик случайных чисел, нужно для рандома
  32.  
  33.     printf("Введите количество элементов массива: ");
  34.     do {
  35.         scanf_s("%d", &N);
  36.         if (N <= 0)
  37.             printf("Повторите ввод, введите положительное число: ");
  38.     } while (N <= 0);
  39.  
  40.     int* a = (int*)malloc(sizeof(int*) * N); //  создаем динамичный массив
  41.     int* b = (int*)malloc(sizeof(int*) * N);//  создаем динамичный массив для хранения различных символов
  42.     int sum = 0; // кол-во различных элементов
  43.  
  44.     printf("Выберите способ ввода массива:\n1-ввод с клавиатуры\n2-заполнение массива случайными числами\n");
  45.  
  46.     int f; // для определение ввода массива
  47.     do {
  48.         scanf_s("%d", &f);
  49.         if ((f != 1) && (f != 2)) // проверка на правильность выбора
  50.             printf("Введите 1 или 2: ");
  51.     } while ((f != 1) && (f != 2));
  52.     if (f == 1)
  53.         input(a, N);
  54.     else
  55.         inputrand(a, N);
  56.  
  57.  
  58.     /*вывод исходного массива*/
  59.     printf("массив: ");
  60.     output(a, N);
  61.  
  62.     b[0] = a[0]; // добавляем первый элемент
  63.     sum++;
  64.     // оходимся по всему массиву, если в массиве b нету элемента из массива а, то добавим его в b и увеличим кол-во на один
  65.     for (int i = 1; i < N; i++) {
  66.         int f = 1; // вариация правда и лжи
  67.         for (int j = 0; j < sum; j++) {
  68.             if (a[i] == b[j]) {
  69.                 f = 0;
  70.             }
  71.         }
  72.         if (f == 1) { b[sum] = a[i]; sum++; }
  73.     }
  74.  
  75.     printf("\nКол-во различных элементов равно: %d", sum);
  76.     printf("\nЭлементы: ");
  77.     output(b, sum);
  78.  
  79. }
  80.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement