Создать массив без повторений элементов - 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; }
Объяснение кода листинга программы
Вывод программы позволяет создать массив без повторений элементов. Вот как это работает:
- Сначала функция
SozdanieMassiva
запрашивает у пользователя длину массива и заполняет его элементами с помощью функцииscanf
. - Затем вызывается функция
MassivPovtor
, которая ищет повторяющиеся элементы в массиве и удаляет их с помощью цикла. Цикл while используется для прохождения по всем элементам массива, а цикл for используется для удаления повторяющихся элементов. - Наконец, функция
main
выводит длину массива и элементы массива с помощью функцииprintf
иscanf
. Следует отметить, что этот код не является оптимальным для больших массивов, так как он использует медленную функциюscanf
для ввода массива и неэффективный циклfor
для поиска повторяющихся элементов. Кроме того, функцияMassivPovtor
не обрабатывает ситуацию, когда массив пуст или уже не содержит повторяющихся элементов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д