Создать третий массив из индексов повторяющихся элементов исходных массивов - C (СИ)
Формулировка задачи:
Привет всем! Помогите пожалуйста, уже все перепробовал, ни как не получается сделать прогу.
Задать два массива целых чисел с помощью датчика случайных чисел. Создать третий массив из индексов повторяющихся элементов исходных массивов (индексы первого массива).
На экран вывести как исходные данные, так и результирующий массив.
Решение задачи: «Создать третий массив из индексов повторяющихся элементов исходных массивов»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
short check(unsigned int data,unsigned int *array,unsigned int size)
{
unsigned int i, flag=0;
for (i=0; i<size; i++)
if ( array[i] == data )
flag++;
return flag;
}
int main(int argc, char* argv[])
{
int *array1;
unsigned int n=0, i, j, k, *array2;
int item;
srand(time(NULL));
printf("Input number of elements: ");
scanf("%i", &k);
array1 = (int*) malloc(4*k);
array2 = (unsigned int*) malloc(4*k);
printf("Your random array:\n");
for(i=0;i<k;i++)
{
item = rand() % 20 - 10;
printf("%d ", item);
array1[i] = item;
} printf("\n");
for(i=0; i<k-1; i++)
for(j=i+1; j<k; j++)
if (array1[i] == array1[j])
{
if ( !check(i+1, array2, n) )
array2[n++] = i+1;
if ( !check(j+1, array2, n) )
array2[n++] = j+1;
}
printf("Your new array:\n");
for(i=0;i<n;i++)
printf("%i ", array2[i]);
printf("\n");
system("pause");
return 0;
}
Объяснение кода листинга программы
В этом коде создается массив из индексов повторяющихся элементов исходных массивов. Вот список действий, которые выполняются в коде:
- Функция
checkпринимает три аргумента:data(данные),array(массив) иsize(размер массива). Она проверяет, сколько раз встречаетсяdataв массивеarray. - В функции
mainсоздается массивarray1из 40 элементов, инициализированных случайными числами от -10 до 10. - Создается массив
array2из 40 элементов, инициализированных нулями. Он будет использоваться для хранения индексов повторяющихся элементов. - Выводится сообщение
Input number of elements:и считывается количество элементов, которое пользователь хочет добавить в массив. - Массив
array1выводится на экран. - Для каждого элемента
array1проверяется, сколько раз он встречается в массиве. Если он встречается более одного раза, его индекс добавляется вarray2. - Выводится сообщение
Your new array:и выводятся все индексы, которые были добавлены вarray2. - Программа ожидает нажатия клавиши, чтобы пользователь мог увидеть результат. Этот код поможет вам создать третий массив из индексов повторяющихся элементов исходных массивов.