Отобрать все возможные значения элементов исходного массива в новый - C (СИ)
Формулировка задачи:
Итак. Есть массив, к примеру .
В нем есть элементы, значения которых равны. Необходимо отобрать все возможные значения елементов в новый массив b (в моем примере это 1,2,3,4,5). Как это сделать?
int a[10]={1,2,2,4,5,4,1,3,4,3}
Решение задачи: «Отобрать все возможные значения элементов исходного массива в новый»
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(); }
Объяснение кода листинга программы
- #include
— подключает стандартный поток вывода в программу - #include
— подключает библиотеку Windows - #include
— подключает библиотеку для работы с консолью - using namespace std; — позволяет использовать стандартный пространство имен std
- const int N=10; — объявляет константу N равной 10
- int main() — объявляет функцию main()
- SetConsoleCP(1251); — устанавливает кодировку консоли на 1251 (кириллица)
- SetConsoleOutputCP(1251); — устанавливает кодировку вывода на консоль на 1251 (кириллица)
- 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}
- int i,j; — объявляет две переменные i и j типа int
- int k=0,t=0; — объявляет две переменные k и t типа int и инициализирует их значениями 0 и 0 соответственно
- b[t]=a[0]; — копирует первый элемент массива a в массив b
- for (i=1; i<N; i++) — начинает цикл, который будет выполняться от 1 до N-1 (т.к. i не может быть равным N)
- { — открывает блок кода, который будет выполняться при каждом шаге цикла
- k=1; — устанавливает флаг k в значение 1
- for(j=0; j<i; j++) — начинает внутренний цикл, который будет выполняться от 0 до i-1
- if (a[i]==b[j]) — сравнивает текущий элемент массива a с элементами массива b
- { — открывает блок кода, который будет выполняться, если текущий элемент массива a уже имеется в массиве b
- k=0; — меняет значение флага k на 0 (т.е. текущий элемент массива a уже имеется в массиве b)
- j=i; — устанавливает значение переменной j равным i (т.е. внутренний цикл будет выполняться только для текущего элемента массива a)
- } — закрывает блок кода, который открылся на строке 18
- if(k) — проверяет значение флага k
- { — открывает блок кода, который будет выполняться, если текущий элемент массива a не был обнаружен в массиве b
- t++; — увеличивает значение переменной t на 1
- b[t]=a[i]; — записывает текущий элемент массива a в массив b
- } — закрывает блок кода, который открылся на строке 23
- } — закрывает внешний цикл, который открылся на строке 13
- for(i=0;i<=t;i++) — начинает цикл, который будет выполняться от 0 до t (т.к. i не может быть больше t)
- printf(
%u\t
, b[i]); — выводит на экран значение i-го элемента массива b - getch(); — приостанавливает выполнение программы и ожидает нажатия клавиши
- } — закрывает цикл, который открылся на строке 28
- } — закрывает функцию main()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д