Удалить из массива все четные элементы, у которых последняя цифра 2 - C (СИ)

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

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

Дан массив целых чисел из n элементов, заполненный случайным образом числами из за данного пользователем промежутка. Удалить из него все четные элементы, у которых последняя цифра 2. Отсортировать получившийся массив и вывести его на экран и в файл.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
    srand(time(NULL));
    int i,y,x1,x2;
    printf("Razmer mass:");
    scanf("%d",&y);
    printf("Znacheniya OT x1 DO x2:\n");
    printf("x1: ");
    scanf("%d",&x1);
    printf("x2: ");
    scanf("%d",&x2);
    int mas[y],mas2[y],arr[y];
    for(i = 0; i<y;i++) {
        mas[i]=rand()%(x2-x1)+x1;
        printf("%d ", mas[i]);
    }
    
    printf("\n");
    for(i=0;i<y;i=i+2) {
            mas2[i]=mas[i];
        while (mas2[i]/10!=0)
            mas2[i]=mas[i]%10;
        if (mas2[i]!=2) printf("%d ", mas[i]);
 
    }
    printf("\n");
    for(i=1;i<y;i=i+2)  printf("%d ", mas[i]);
 
    return 0;
}
Помогите доделать сортировку и запись в файл Сортировать я хотел нечто подобным
      for (int i = 0; i < y; i++)
                {
                    for (int j = 0; j < y - 1; j++)
                    {
                        if (arr[j + 1] < arr[j])
                        {
                            int z = arr[j + 1];
                            arr[j + 1] = arr[j];
                            arr[j] = z;
 
                        }
                    }
                }

Решение задачи: «Удалить из массива все четные элементы, у которых последняя цифра 2»

textual
Листинг программы
#include <stdio.h>
int* array_remove(int* fa, int* la, int (*pcmp)(int));
void array_bsort(int* fa, int* la, int (*pcmp)(int,int));
 
int cmp_del(int n) { return ((n % 2) == 0) && ((n % 10) == 2); }
int cmp_sort(int a, int b) { return (a < b); }
 
 
int main(void){ 
    int* p, *e;
    int a[] = { 22, 7, 102, 6, 2, 12, 2, 1, 202, 3, 4, 92, 5, 2, 702 };
    int n   = sizeof(a)/sizeof(a[0]);
 
    e = array_remove(a, a + sizeof(a)/sizeof(a[0]), &cmp_del);
    array_bsort(a, e, &cmp_sort);
    for(p = a; p != e; ++p)
        printf("%d ", *p);
    return 0;
}
 
//удаление
int* array_remove(int* fa, int* la, int (*pcmp)(int)){
    int* p;
    while((fa != la) && !(*pcmp)(*fa))
        ++fa;
 
    for(p = fa; p != la; ++p){
        if(!(*pcmp)(*p))
            *fa++ = *p;
    }
    return fa;
}
 
//сортировка
void array_bsort(int* fa, int* la, int (*pcmp)(int,int)){
    int t, *p;
    for(; fa != la; ++fa){
        for(p = la - 1; p > fa; --p){
            if((*pcmp)(*p, *(p - 1))){
                t  = *p;
                *p = *(p - 1);
                *(p - 1) = t;
            }
        }
    }
}

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

В этом коде реализована сортировка массива методом сортировки выбором с использованием функции array_remove, которая удаляет из массива все четные элементы, у которых последняя цифра 2. Список действий:

  1. Создаются две функции: array_remove и array_bsort.
  2. Определяется функция cmp_del, которая будет использоваться в качестве аргумента для array_remove. Она возвращает значение 1, если число четное и его последняя цифра 2.
  3. Определяется функция cmp_sort, которая будет использоваться в качестве аргумента для array_bsort. Она возвращает значение 0, если a меньше b.
  4. Создается массив a и инициализируется значениями.
  5. Вычисляется размер массива n.
  6. Вызывается функция array_remove, чтобы удалить из массива все четные элементы, у которых последняя цифра 2. В качестве аргументов передаются начало и конец массива a и функция cmp_del.
  7. Вызывается функция array_bsort, чтобы отсортировать массив a. В качестве аргументов передаются начало и конец массива a и функция cmp_sort.
  8. Используя цикл, элементы массива выводятся на экран.
  9. Программа завершается.

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


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

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

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