Создать новый массив из различных элементов исходного - C (СИ)
Формулировка задачи:
Дан целочисленный массив A[n], среди элементов есть одинаковые. Создать массив из различных элементов A
Не могу понять в чем ошибка, меняет все элементы подряд а не те которые одинаковые, хотя 5 последнюю оставляет.
Подскажите в чем может быть ошибка
Листинг программы
- #include <conio.h>
- #include <stdio.h>
- #include <stdlib.h>
- #define n 7
- #define m 7
- void main()
- {
- randomize();
- clrscr();
- int a[n] ={1,1,2,0,3,2,5};
- int k,b[m],d;
- printf ("\nВывод массива*");
- for (int i=0; i<n;i++)
- printf ("\n %i",a[i]);
- printf ("\nЗамена элементов массива");
- for (i=0;i<n; i++)
- {
- k=a[i];
- for (int j=0; j<n; j++)
- {
- if (a[i]==k)
- a[j]= random(40);
- }
- }
- for (i=1;i<=n;i++)
- printf ("\n%i ",a[i]);
- getch();
- }
Решение задачи: «Создать новый массив из различных элементов исходного»
textual
Листинг программы
- for(i = 0; i < N; ++i){
- for(k = 0; k < N - 1; ++k){
- if(i == b[k])
- break;
- if(k == N - 2)
- printf("%d ", a[i]);
- }
- }
- return 0;
- }
Объяснение кода листинга программы
В данном коде происходит следующее:
- Создается два вложенных цикла, первый из которых идет от 0 до N, а второй от 0 до N-1.
- В каждой итерации внутреннего цикла проверяется равенство i элементу b[k]. Если равенство выполняется, то цикл прерывается с помощью оператора break.
- Если внутренний цикл завершается без прерывания, то выполняется проверка k == N-2 и выводится значение a[i] через printf.
- По завершению обоих циклов выполняется return 0, что означает успешный конец работы программы. Список не более 20 элементов:
- i = 0
- k = 0
- b[k] = ? (неизвестно, так как не определен массив b)
- a[i] = ? (неизвестно, так как не определен массив a)
- N = ? (неизвестно, так как не определена переменная N)
- break
- return 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д