Дан массив из N натуральных чисел a1,...,aN. Исключить из массива повторяющиеся элементы.
Решить не используя дополнительного массива.
Мне кажется, это возможно решить и без векторов, но попрошу вас придерживаться лишь использования <iostream> в решении.
C/C++
[C++] Помогите написать код!
int main()
{
srand(time(0));
setlocale(LC_ALL, "rus");
int a[20],flag;
for (int i = 0; i < 20; i++) {
a[i] = rand() % 20;
printf("%4d", a[i]);
}
printf("\n");
for (int i = 0; i < 20; i++) {
flag = 1;
for (int j = 0; j < 20; j++)
{
if (i - j != 0 && a[i] == a[j])
flag = 0;
}
if (flag) printf("%4d", a[i]);
}
return 0;
}
{
srand(time(0));
setlocale(LC_ALL, "rus");
int a[20],flag;
for (int i = 0; i < 20; i++) {
a[i] = rand() % 20;
printf("%4d", a[i]);
}
printf("\n");
for (int i = 0; i < 20; i++) {
flag = 1;
for (int j = 0; j < 20; j++)
{
if (i - j != 0 && a[i] == a[j])
flag = 0;
}
if (flag) printf("%4d", a[i]);
}
return 0;
}
#include < iostream >
using namespace std;
void sdvig(unsigned int* array, int size, int sdvig)
{
for (int i = sdvig; i < size-1; i++)
array[i] = array[i + 1];
}
int main()
{
int size;
int delta = 0; //уменьшение массива на кол-во совпадающих чисел
cout << "Enter size: ";
cin >> size;
unsigned int* array;
array = (unsigned int*)malloc(sizeof (unsigned int) * size); //создаем массив
if (!array) return 1;
for (int i = 0; i < size; i++)
array[i] = rand() % 17;
for (int i = 0; i < size; i++) // печать исходного массива
cout << array[i] << " ";
cout << endl;
for (int i = 0; i < size - 1 - delta; i++) //поиск совпадающих чисел
for (int j = i+1; j < size - delta ; j++)
{
if (array[i] == array[j]) {sdvig(array, size, j); delta++; j--;} //если есть совпадающие числа - сдвинуть
}
unsigned int* check = (unsigned int*)realloc(array, sizeof(unsigned int) * (size - delta)); //освобождаем лишнюю память delta
if (check) array = check; else return 1;
for (int i = 0; i < size - delta; i++) // печать итога
cout << array[i] << " ";
free(array); //удаляем массив
}
using namespace std;
void sdvig(unsigned int* array, int size, int sdvig)
{
for (int i = sdvig; i < size-1; i++)
array[i] = array[i + 1];
}
int main()
{
int size;
int delta = 0; //уменьшение массива на кол-во совпадающих чисел
cout << "Enter size: ";
cin >> size;
unsigned int* array;
array = (unsigned int*)malloc(sizeof (unsigned int) * size); //создаем массив
if (!array) return 1;
for (int i = 0; i < size; i++)
array[i] = rand() % 17;
for (int i = 0; i < size; i++) // печать исходного массива
cout << array[i] << " ";
cout << endl;
for (int i = 0; i < size - 1 - delta; i++) //поиск совпадающих чисел
for (int j = i+1; j < size - delta ; j++)
{
if (array[i] == array[j]) {sdvig(array, size, j); delta++; j--;} //если есть совпадающие числа - сдвинуть
}
unsigned int* check = (unsigned int*)realloc(array, sizeof(unsigned int) * (size - delta)); //освобождаем лишнюю память delta
if (check) array = check; else return 1;
for (int i = 0; i < size - delta; i++) // печать итога
cout << array[i] << " ";
free(array); //удаляем массив
}
Похожие вопросы
- Программирование на C++ .Помогите написать код.
- Прошу помогите написать код на c++, нужно сдать сегодня ?
- Помогите написать код с файлами C++
- Помогите написать код с файлами C++
- ПРОШУ, ПОМОГИТЕ НАПИСАТЬ КОД C++
- Помогите написать код c++
- Помогите написать код C++
- Помогите написать код C++ со строками
- Помогите написать код c++ со строками
- C++ Помогите с кодом