Преобразовать строку так, чтобы сначала шли цифры, а затем все буквы исходной строки, но в обратном порядке - 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;
Объяснение кода листинга программы
- Сначала программа проверяет, входит ли массив A в массив B, используя функцию in_array.
- Затем программа преобразует строку str, используя функцию transform.
- В функции transform, сначала числа копируются в целевую строку, а затем буквы копируются в обратном порядке.
- В функции in_array, программа проверяет, есть ли все элементы массива A в массиве B.
- Если все элементы массива A есть в массиве B, программа выводит
да A-массив входит в B-массив
. - Если хотя бы один элемент массива A отсутствует в массиве B, программа выводит
нет A-массива
. - Затем программа преобразует строку
str
вsout
с помощью функции transform. - Наконец, программа выводит преобразованную строку
sout
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д