Отобрать все возможные значения элементов исходного массива в новый - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Итак. Есть массив, к примеру
int a[10]={1,2,2,4,5,4,1,3,4,3}
. В нем есть элементы, значения которых равны. Необходимо отобрать все возможные значения елементов в новый массив b (в моем примере это 1,2,3,4,5). Как это сделать?

Решение задачи: «Отобрать все возможные значения элементов исходного массива в новый»

textual
Листинг программы
#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
const int N=10;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int b[N], a[N]={1,2,2,4,5,4,1,3,4,3}; // Исходный массив;
int i,j;
int k=0,t=0;
b[t]=a[0];
for (i=1; i<N; i++)
    {   
        k=1;                //Флаг, для обозначения того, имеется ли в массиве b, текущий элемент массива a;
        for(j=0; j<i; j++)
            {
                if (a[i]==b[j]) // Сравниваем текущий элемент массива а, со всеми элементами массива b;
                {               // Изначально в массив b входит только первый элемент массива a;
                        k=0;    // Если текущий элемент массива а уже имеется в массиве b, то переключаем флажок;
                        j=i;    // И выходим из цикла
                }
                                            
            }
        if(k)                   // Если текущий элемент a не был обнаружен в массиве b;
            {
                t++;            // То в следующую ячейку массива b;
                b[t]=a[i];      // Записываем этот самый элемент a;
            }
    }
for(i=0;i<=t;i++)               // Выводим на экран полученный массив;
    printf("%u\t", b[i]);
getch();
}

Объяснение кода листинга программы

  1. #include — подключает стандартный поток вывода в программу
  2. #include — подключает библиотеку Windows
  3. #include — подключает библиотеку для работы с консолью
  4. using namespace std; — позволяет использовать стандартный пространство имен std
  5. const int N=10; — объявляет константу N равной 10
  6. int main() — объявляет функцию main()
  7. SetConsoleCP(1251); — устанавливает кодировку консоли на 1251 (кириллица)
  8. SetConsoleOutputCP(1251); — устанавливает кодировку вывода на консоль на 1251 (кириллица)
  9. int b[N], a[N]={1,2,2,4,5,4,1,3,4,3}; — объявляет массив a размером N и инициализирует его значениями {1,2,2,4,5,4,1,3,4,3}
  10. int i,j; — объявляет две переменные i и j типа int
  11. int k=0,t=0; — объявляет две переменные k и t типа int и инициализирует их значениями 0 и 0 соответственно
  12. b[t]=a[0]; — копирует первый элемент массива a в массив b
  13. for (i=1; i<N; i++) — начинает цикл, который будет выполняться от 1 до N-1 (т.к. i не может быть равным N)
  14. { — открывает блок кода, который будет выполняться при каждом шаге цикла
  15. k=1; — устанавливает флаг k в значение 1
  16. for(j=0; j<i; j++) — начинает внутренний цикл, который будет выполняться от 0 до i-1
  17. if (a[i]==b[j]) — сравнивает текущий элемент массива a с элементами массива b
  18. { — открывает блок кода, который будет выполняться, если текущий элемент массива a уже имеется в массиве b
  19. k=0; — меняет значение флага k на 0 (т.е. текущий элемент массива a уже имеется в массиве b)
  20. j=i; — устанавливает значение переменной j равным i (т.е. внутренний цикл будет выполняться только для текущего элемента массива a)
  21. } — закрывает блок кода, который открылся на строке 18
  22. if(k) — проверяет значение флага k
  23. { — открывает блок кода, который будет выполняться, если текущий элемент массива a не был обнаружен в массиве b
  24. t++; — увеличивает значение переменной t на 1
  25. b[t]=a[i]; — записывает текущий элемент массива a в массив b
  26. } — закрывает блок кода, который открылся на строке 23
  27. } — закрывает внешний цикл, который открылся на строке 13
  28. for(i=0;i<=t;i++) — начинает цикл, который будет выполняться от 0 до t (т.к. i не может быть больше t)
  29. printf(%u\t, b[i]); — выводит на экран значение i-го элемента массива b
  30. getch(); — приостанавливает выполнение программы и ожидает нажатия клавиши
  31. } — закрывает цикл, который открылся на строке 28
  32. } — закрывает функцию main()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы