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

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

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

Дан массив целых чисел из n элементов, заполненный случайным образом числами из за данного пользователем промежутка. Удалить из него все четные элементы, у которых последняя цифра 2. Отсортировать получившийся массив и вывести его на экран и в файл.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(void) {
  4. srand(time(NULL));
  5. int i,y,x1,x2;
  6. printf("Razmer mass:");
  7. scanf("%d",&y);
  8. printf("Znacheniya OT x1 DO x2:\n");
  9. printf("x1: ");
  10. scanf("%d",&x1);
  11. printf("x2: ");
  12. scanf("%d",&x2);
  13. int mas[y],mas2[y],arr[y];
  14. for(i = 0; i<y;i++) {
  15. mas[i]=rand()%(x2-x1)+x1;
  16. printf("%d ", mas[i]);
  17. }
  18. printf("\n");
  19. for(i=0;i<y;i=i+2) {
  20. mas2[i]=mas[i];
  21. while (mas2[i]/10!=0)
  22. mas2[i]=mas[i]%10;
  23. if (mas2[i]!=2) printf("%d ", mas[i]);
  24. }
  25. printf("\n");
  26. for(i=1;i<y;i=i+2) printf("%d ", mas[i]);
  27. return 0;
  28. }
Помогите доделать сортировку и запись в файл Сортировать я хотел нечто подобным
Листинг программы
  1. for (int i = 0; i < y; i++)
  2. {
  3. for (int j = 0; j < y - 1; j++)
  4. {
  5. if (arr[j + 1] < arr[j])
  6. {
  7. int z = arr[j + 1];
  8. arr[j + 1] = arr[j];
  9. arr[j] = z;
  10. }
  11. }
  12. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2. int* array_remove(int* fa, int* la, int (*pcmp)(int));
  3. void array_bsort(int* fa, int* la, int (*pcmp)(int,int));
  4.  
  5. int cmp_del(int n) { return ((n % 2) == 0) && ((n % 10) == 2); }
  6. int cmp_sort(int a, int b) { return (a < b); }
  7.  
  8.  
  9. int main(void){
  10.     int* p, *e;
  11.     int a[] = { 22, 7, 102, 6, 2, 12, 2, 1, 202, 3, 4, 92, 5, 2, 702 };
  12.     int n   = sizeof(a)/sizeof(a[0]);
  13.  
  14.     e = array_remove(a, a + sizeof(a)/sizeof(a[0]), &cmp_del);
  15.     array_bsort(a, e, &cmp_sort);
  16.     for(p = a; p != e; ++p)
  17.         printf("%d ", *p);
  18.     return 0;
  19. }
  20.  
  21. //удаление
  22. int* array_remove(int* fa, int* la, int (*pcmp)(int)){
  23.     int* p;
  24.     while((fa != la) && !(*pcmp)(*fa))
  25.         ++fa;
  26.  
  27.     for(p = fa; p != la; ++p){
  28.         if(!(*pcmp)(*p))
  29.             *fa++ = *p;
  30.     }
  31.     return fa;
  32. }
  33.  
  34. //сортировка
  35. void array_bsort(int* fa, int* la, int (*pcmp)(int,int)){
  36.     int t, *p;
  37.     for(; fa != la; ++fa){
  38.         for(p = la - 1; p > fa; --p){
  39.             if((*pcmp)(*p, *(p - 1))){
  40.                 t  = *p;
  41.                 *p = *(p - 1);
  42.                 *(p - 1) = t;
  43.             }
  44.         }
  45.     }
  46. }

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

В этом коде реализована сортировка массива методом сортировки выбором с использованием функции 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы