Найти число и значения элементов массива, повторяющихся два раза - C (СИ)
Формулировка задачи:
1)дан массив целых чисел, найти число и значения элементов повторяющихся два раза
2)дан массив целых чисел,требуется сформировать новый массив содержащий элементы исходного массива,расположенных между первыми и вторыми элементами равных нулю
нужно написать код на си
пожалуйста объясните мне как это делается вообще
в каком порядке что писать
не понимаю массивы
Решение задачи: «Найти число и значения элементов массива, повторяющихся два раза»
textual
Листинг программы
#include <conio.h> #include <iomanip> #include <stdio.h> void print(int* x,int n) { for(int j=0;j<n;j++) printf("%i \t",*x++); printf("\n"); } int main() { int n,*m; int x=-1,y=-1; n=10; int a[n]; for (int i=0;i<n;i++) a[i]=rand()%10; //a[9]=0;//умышленно сделать 9ый элемент нулевым print (a,n); for (int i=0;i<n;i++) { if(a[i]==0) { if(x==-1) x=i; else y=i; if (y!=-1) break; } } if(x==-1 || y==-1) return -1; printf("%i\t%i\n",x,y); //если элементов между нулевыми элементами нет if((y-x)==1) return -1; m=new int[y-x]; int *k=m; for (int i=x+1;i<y;i++) *k++=a[i]; //результирующий массив print (m,y-x-1); }
Объяснение кода листинга программы
Код выполняет следующие действия:
- Включает необходимые заголовочные файлы:
conio.h
используется для работы с консолью, в частности, с функциейgetch()
, которая используется для получения ввода пользователя без вывода символа ввода.iomanip.h
используется для манипулирования выводом, в частности, для выравнивания вывода по левому краю.stdio.h
используется для ввода и вывода данных.
- Определяет функцию print(), которая принимает указатель на первый элемент массива и его размер в элементах. Функция выводит все элементы массива через табуляцию.
- Определяет функцию main(), которая является точкой входа в программу.
- Инициализирует переменные:
n
инициализируется значением 10, что является размером массиваa
.x
иy
инициализируются значениями -1, которые будут использоваться для отслеживания индексов первого и второго нулевых элементов в массиве.a
инициализируется случайными значениями от 0 до 9.
- Создает массив a[], заполняет его случайными значениями от 0 до 9.
- Проверяет наличие нулевых элементов в массиве:
- Если встречается нулевой элемент, и это первый такой элемент, то его индекс сохраняется в
x
. - Если уже был найден первый нулевой элемент и встречается второй, то его индекс сохраняется в
y
. - Если
y
не равно -1, значит второй нулевой элемент не найден, и цикл прерывается.
- Если встречается нулевой элемент, и это первый такой элемент, то его индекс сохраняется в
- Проверяет наличие нулевых элементов между первыми двумя нулевыми элементами:
- Если
x
иy
не равны -1, значит между ними есть хотя бы один элемент, и программа возвращает -1.
- Если
- Выводит индексы первых двух нулевых элементов.
- Проверяет наличие элементов между нулевыми элементами:
- Если
y-x
равно 1, значит между нулевыми элементами нет других элементов, и программа возвращает -1.
- Если
- Выделяет память под массив, содержащий только повторяющиеся элементы:
m
указывает на начало нового массива.y-x-1
определяет размер нового массива, который на единицу меньше, чем расстояние между нулевыми элементами, так как нулевой элемент уже есть вm
.
- Копирует элементы из исходного массива в новый массив.
- Выводит новый массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д