Удалить из массива все элементы, у которых первая и вторая цифры одинаковые - C (СИ)
Формулировка задачи:
Решение задачи: «Удалить из массива все элементы, у которых первая и вторая цифры одинаковые»
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <memory.h> #include <math.h> #define N 100 bool isequal(long n); void swap(int& n1, int& n2); int main(int argc, char* argv[]) { FILE* fp = NULL; const char* filename = "output.txt"; if ((fp = fopen(filename,"w")) == NULL) { printf("Unable to open file %s for writing\n",filename); return -1; } int* A = new int[N]; memset((void*)A, 0x00, sizeof(int) * N); for (int t = 0; t < N; t++) { A[t] = rand() % (10 * (N-1)) + 1; printf("%d ",A[t]); } printf("\n\n"); for (int i = 0; i < N; i++) if (isequal(A[i])) { printf("%d ",A[i]); for (int k = i; k < N; k++) A[k] = A[k+1]; } printf("\n\n"); for (int q = 0; A[q] > 0; q++) { int min = q; for (int r = q+1; A[r] > 0; r++) min = (A[r] < A[min]) ? r : min; swap(A[q],A[min]); } for (int z = 0; A[z] > 0; z++) { printf("%d ",A[z]); fprintf(fp, "%d ",A[z]); } printf("\n"); fclose(fp); _getch(); return 0; } bool isequal(long n) { long i = 6; while ((n / (long)pow((double)10,i)) == 0) i--; return (n / (long)pow((double)10,i)) % 10 == (n / (long)pow((double)10,i-1)) % 10 ? 1 : 0; } void swap(int& n1, int& n2) { int _tn = n1; n1 = n2; n2 = _tn; }
Объяснение кода листинга программы
В этом коде реализована сортировка массива методом слияния. Сначала мы создаем массив целых чисел A динамически, заполняем его случайными числами от 1 до 1000000. Затем мы проверяем каждое число в массиве с помощью функции isequal, которая проверяет, являются ли первая и вторая цифры числа одинаковыми. Если это так, мы удаляем число из массива, перемещая последующие числа на одну позицию вперед. Далее мы используем алгоритм сортировки слиянием для сортировки массива. Мы находим минимальный элемент в неотсортированной части массива и меняем его местами с первым элементом неотсортированной части. Повторяем эту операцию до тех пор, пока массив не будет полностью отсортирован. Наконец, мы записываем отсортированный массив в файл output.txt и выводим его на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д