Создать массив без повторений элементов - C (СИ)

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

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

#include<stdio.h> 
#include<math.h> 
#include<conio.h> 
#include <locale.h>  

int MassivPovtor(int N,int arr[100])
{int i,j,k,n;
 i=0;
 n=N;
 j=0;
while (i<n){
  j=i+1;
    while (j<n) {
        if (arr[i]=arr[j])
            for (k=i;k<=(n-1);++k)
            {arr[k]=arr[k+1];
            --n;
        }
   else ++j;
};
  i++;  
};
 for (i=0;i<n;++i)
{printf( "%i ",arr[i]);};
scanf("%i",&N);
return 0;
};

int SozdanieMassiva (int N,int arr[100] )
{int i;
for (i=0;i<N;i++){scanf("%i",&arr[i]);}
 
return arr[100];
};
 
int main()
{ int N,n;
int arr[100];
int i;
setlocale(LC_CTYPE, "Russian");
printf( "Введите длину массива");
scanf("%i",&N);
SozdanieMassiva(N,arr);
MassivPovtor(N,arr);
return 0;
}
помогите исправить код пожалуйста

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

textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <locale.h>
 
int MassivPovtor(int N,int arr[100])
{
    int i,j,k,n;
    i=0;
    n=N;
    j=0;
    while (i<n)
    {
        j=i+1;
        while (j<n)
        {
            if (arr[i]==arr[j]) /* здесь должно быть сравнение, а не присваивание */
            {
                for (k=i; k<=(n-1); ++k)
                    arr[k]=arr[k+1];
                n -= 1; /* Это надо делать после цикла */
            }
            else ++j;
        }
        i++;
    }
    for (i=0; i<n; ++i)
    {
        printf( "%i ",arr[i]);
    }
    return 0;
};
 
 
void SozdanieMassiva (int N, int *arr)
{
    int i;
    for (i=0; i<N; i++)
    {
        scanf("%i",&arr[i]);
    }
};
 
int main()
{
    int N;
    int arr[100];
    setlocale(LC_CTYPE, "Russian");
    printf( "Введите длину массива");
    scanf("%i",&N);
    SozdanieMassiva(N,arr);
    MassivPovtor(N,arr);
    return 0;
}

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

Вывод программы позволяет создать массив без повторений элементов. Вот как это работает:

  1. Сначала функция SozdanieMassiva запрашивает у пользователя длину массива и заполняет его элементами с помощью функции scanf.
  2. Затем вызывается функция MassivPovtor, которая ищет повторяющиеся элементы в массиве и удаляет их с помощью цикла. Цикл while используется для прохождения по всем элементам массива, а цикл for используется для удаления повторяющихся элементов.
  3. Наконец, функция main выводит длину массива и элементы массива с помощью функции printf и scanf. Следует отметить, что этот код не является оптимальным для больших массивов, так как он использует медленную функцию scanf для ввода массива и неэффективный цикл for для поиска повторяющихся элементов. Кроме того, функция MassivPovtor не обрабатывает ситуацию, когда массив пуст или уже не содержит повторяющихся элементов.

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


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

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

9   голосов , оценка 3.778 из 5
Похожие ответы