В строке найти максимальное и минимальное число - 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;
}

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

  1. Включаем необходимые заголовочные файлы
  2. Создаем функцию сортировки, которая будет сравнивать два числа
  3. В функции main() создаем переменные и строки для работы программы
  4. Проходим по каждому символу в строке и проверяем, является ли он числом или знаком, если да, то добавляем его в буфер
  5. Если после прохода по всем символам в буфере пусто, выводим сообщение об ошибке и завершаем программу
  6. Проходим по каждому слову в буфере и преобразуем его в число, сохраняем числа в массиве
  7. Сортируем массив чисел
  8. Выводим отсортированный массив чисел
  9. Выводим максимальное и минимальное значение из массива чисел

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


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

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

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