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

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

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

Дан целочисленный массив A[n], среди элементов есть одинаковые. Создать массив из различных элементов A
Листинг программы
  1. #include <conio.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #define n 7
  5. #define m 7
  6. void main()
  7. {
  8. randomize();
  9. clrscr();
  10. int a[n] ={1,1,2,0,3,2,5};
  11. int k,b[m],d;
  12. printf ("\nВывод массива*");
  13. for (int i=0; i<n;i++)
  14. printf ("\n %i",a[i]);
  15. printf ("\nЗамена элементов массива");
  16. for (i=0;i<n; i++)
  17. {
  18. k=a[i];
  19. for (int j=0; j<n; j++)
  20. {
  21. if (a[i]==k)
  22. a[j]= random(40);
  23. }
  24. }
  25. for (i=1;i<=n;i++)
  26. printf ("\n%i ",a[i]);
  27. getch();
  28. }
Не могу понять в чем ошибка, меняет все элементы подряд а не те которые одинаковые, хотя 5 последнюю оставляет. Подскажите в чем может быть ошибка

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

textual
Листинг программы
  1. for(i = 0; i < N; ++i){
  2.         for(k = 0; k < N - 1; ++k){
  3.             if(i == b[k])
  4.                 break;
  5.             if(k == N - 2)
  6.                 printf("%d ", a[i]);
  7.         }
  8.         }
  9.  
  10.     return 0;
  11. }

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

В данном коде происходит следующее:

  1. Создается два вложенных цикла, первый из которых идет от 0 до N, а второй от 0 до N-1.
  2. В каждой итерации внутреннего цикла проверяется равенство i элементу b[k]. Если равенство выполняется, то цикл прерывается с помощью оператора break.
  3. Если внутренний цикл завершается без прерывания, то выполняется проверка k == N-2 и выводится значение a[i] через printf.
  4. По завершению обоих циклов выполняется return 0, что означает успешный конец работы программы. Список не более 20 элементов:
  5. i = 0
  6. k = 0
  7. b[k] = ? (неизвестно, так как не определен массив b)
  8. a[i] = ? (неизвестно, так как не определен массив a)
  9. N = ? (неизвестно, так как не определена переменная N)
  10. break
  11. return 0

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


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

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

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы