В строке найти максимальное и минимальное число - C (СИ)
Формулировка задачи:
В заданной строке найти минимальное и максимальное целое число (числа могут быть отрицательными, в этом случае знак “минус” перед ними ставится без пробела). Предусмотреть случай, когда в строке чисел нет.
Входные данные:
a*bc&19-l sb3>4-5z%x
Выходные данные:
max=19
min=-5
Решение задачи: «В строке найти максимальное и минимальное число»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- #include <stdlib.h>
- int i_sort(const void *a, const void *b)
- {
- return *(int*)a - *(int*)b;
- }
- int main(void)
- {
- int i, j = 0;
- char *word;
- int digit[80];
- char text[] = "a*bc&19-l sb3>4-5z%x";
- // char text[] = "a*bc&19-l sb3>4-5z%x :kjfasdf394 lskdj 3333"; //вариант проверки
- // char text[] = "a*bc&-lsb>-z%x:kjfasdflskdj"; //проверка вывода ошибки
- char buff[80];
- for(i = 0; i < sizeof(text); i++)
- {
- if(isdigit(text[i]) || (text[i] == '-' && isdigit(text[i+1])))
- {
- buff[j] = text[i];
- if(!isdigit(text[i+1]))
- {
- j++;
- buff[j] = ' ';
- }
- j++;
- }
- }
- if(j == 0)
- puts("ERROR: цифр в строке не найдено"), exit(1);
- word = strtok(buff, " ");
- for(i = 0; word != NULL; i++)
- {
- digit[i] = atoi(word);
- word = strtok(NULL, " ");
- }
- i--;
- puts("Обнаружен ряд цифр в строке:");
- for(j = 0; j < i; j++)
- printf("%d ", digit[j]);
- qsort(digit, i, sizeof(int), i_sort);
- puts("\nОтсортированый массив:");
- for(j = 0; j < i; j++)
- printf("%d ", digit[j]);
- puts("\nВывод крайних значений:");
- printf("max=%d\nmin=%d\n", digit[i-1], digit[0]);
- return 0;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Создаем функцию сортировки, которая будет сравнивать два числа
- В функции main() создаем переменные и строки для работы программы
- Проходим по каждому символу в строке и проверяем, является ли он числом или знаком, если да, то добавляем его в буфер
- Если после прохода по всем символам в буфере пусто, выводим сообщение об ошибке и завершаем программу
- Проходим по каждому слову в буфере и преобразуем его в число, сохраняем числа в массиве
- Сортируем массив чисел
- Выводим отсортированный массив чисел
- Выводим максимальное и минимальное значение из массива чисел
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д