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

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

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

1)Дана строка,содержащая буквы и цифры.Преобразовать строку так,что бы сначала шли цифры,а затем все буквы исходной строки,но в обратном порядке.Использовать указатели. 2)Ввести с клавиатуры 10 целых чисел.Определить максимальное значение среди четных элементов последовательности. 3)Даны два массива а и b.Верно ли что все элементы последовательности а входят в последовательность всех элементов b?

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

textual
Листинг программы
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <memory.h>
 
// сначала числа далее, буквы
void transform(char*  dst, const char* src) {
    const char* iter = src;
    while( *iter != '\0' ) {
        if( isdigit(*iter) || ! isalpha(*iter))
               *dst++ = *iter;
         *iter++;
    }
    while( *src != '\0' ) {
         if( isalpha(*src) || ! isdigit(*src))
               *dst++ = *src;
         *src++;
    }
   *dst = '\0';
}
 
 
// проверяет входит ли множестов массива - in_arr, в массив arr
int  in_array(const int* in_arr, int in_size, const int* arr, int size) {
    int len = 0, bound = 0;
    if(in_size > size)
        return 0;
    for(len = 0; len < size - in_size; len++) {
       if(! memcmp(arr + len, in_arr, in_size * sizeof(int)))
           return 1;
    }
    return 0;
}
 
 
 
// тест
int main(void)
{
   
   int A[4] = { 2, 4, 5, 5 };
   int B[]  = { 0, 2, 4, 5, 0, 5, 3, 7,
                2, 4, 5, 5,    -5, 7, 9, 9 };
 
   char str[] = "Secondary-2001, api *12, seventy off -7745-";
   char sout[255];
 
 
   if(in_array(A, sizeof(A)/sizeof(int), B, sizeof(B)/sizeof(int)))
         puts("yes A-array to enter B-array.");
   else
         puts("not A-array");
 
 
   transform(sout, str);
   printf("%s\n", sout);
 
   system("pause");
   return 0;

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

  1. Сначала программа проверяет, входит ли массив A в массив B, используя функцию in_array.
  2. Затем программа преобразует строку str, используя функцию transform.
  3. В функции transform, сначала числа копируются в целевую строку, а затем буквы копируются в обратном порядке.
  4. В функции in_array, программа проверяет, есть ли все элементы массива A в массиве B.
  5. Если все элементы массива A есть в массиве B, программа выводит да A-массив входит в B-массив.
  6. Если хотя бы один элемент массива A отсутствует в массиве B, программа выводит нет A-массива.
  7. Затем программа преобразует строку str в sout с помощью функции transform.
  8. Наконец, программа выводит преобразованную строку sout.

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


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

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

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