Написать функцию:
int arrayUnique(int array[], int size)
, которая будет удалять из массива дубликаты элементов, и в конце работы вернёт новую длину массива.Предлагаю для решения этой задачи организовать заполнение массива случайными числами. Это сократит время на ввод элементов двумерного массива. Результат работы программы показан ниже:
// new_line_array.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iostream> #include <ctime> using namespace std; int arrayUnique(int *ar, int); int main(int argc, char* argv[]) { srand(time(NULL)); const int array_size = 20; // размер массива const int interval = 10; // масштаб генерируемых случайных чисел int ar[array_size]; for (int counter1 = 0; counter1 < array_size; counter1++) { ar[counter1] = rand() % interval; // заполняем массив случайными числами cout << ar[counter1] << " "; // печать элементов массива } cout << "\n"; for (int counter1 = 0; counter1 < arrayUnique(ar, array_size)/*вызов функции отбора значений*/; counter1++) { cout << ar[counter1] << " "; // печать элементов массива } cout << endl; system("pause"); return 0; } int arrayUnique(int *ar, int size) // функция, определяющая элементы массива в единственном экземпляре { for (int counter1 = 0; counter1 < size; counter1++) { for (int counter2 = counter1 + 1; counter2 < size ; counter2++) { if ( ar[counter1] == ar[counter2] ) // если найден одинаковый элемент { for (int counter_shift = counter2; counter_shift < size -1; counter_shift++) { // выполнить сдвиг всех остальных элементов массива на -1, начиная со следующего элемента, после найденного дубля ar[counter_shift] = ar[counter_shift + 1]; } size -= 1; // уменьшить размер массива на 1 if (ar[counter1] == ar[counter2]) // если следующий элемент - дубль { counter2--; // выполнить переход на предыдущий элемент } } } } return size; }
CppStudio.com
8 2 4 0 6 8 9 3 7 9 7 4 9 9 3 5 1 2 2 9 8 2 4 0 6 9 3 7 5 1
Комментарии
art_h4rd
iYasha
Максим Квачёв
Arthur
Arthur
Arthur
Функция удаляет все повторяющиеся элементы