В строке найти максимальное и минимальное число - C (СИ)

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

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

В заданной строке найти минимальное и максимальное целое число (числа могут быть отрицательными, в этом случае знак “минус” перед ними ставится без пробела). Предусмотреть случай, когда в строке чисел нет. Входные данные: a*bc&19-l sb3>4-5z%x Выходные данные: max=19 min=-5

Решение задачи: «В строке найти максимальное и минимальное число»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4. #include <stdlib.h>
  5.  
  6. int i_sort(const void *a, const void *b)
  7. {      
  8.         return *(int*)a - *(int*)b;
  9. }
  10.  
  11. int main(void)
  12. {
  13.         int i, j = 0;
  14.         char *word;
  15.         int digit[80];
  16.       char text[] = "a*bc&19-l sb3>4-5z%x";
  17. //      char text[] = "a*bc&19-l sb3>4-5z%x :kjfasdf394 lskdj 3333"; //вариант проверки
  18. //      char text[] = "a*bc&-lsb>-z%x:kjfasdflskdj"; //проверка вывода ошибки
  19.         char buff[80];
  20.         for(i = 0; i < sizeof(text); i++)
  21.         {
  22.                 if(isdigit(text[i]) || (text[i] == '-' && isdigit(text[i+1])))
  23.                 {
  24.                         buff[j] = text[i];
  25.                         if(!isdigit(text[i+1]))
  26.                         {
  27.                                 j++;
  28.                                 buff[j] = ' ';    
  29.                         }
  30.                         j++;
  31.                 }
  32.         }
  33.         if(j == 0)
  34.                 puts("ERROR: цифр в строке не найдено"), exit(1);
  35.         word = strtok(buff, " ");
  36.         for(i = 0; word != NULL; i++)
  37.         {
  38.                 digit[i] = atoi(word);
  39.                 word = strtok(NULL, " ");
  40.         }
  41.         i--;
  42.         puts("Обнаружен ряд цифр в строке:");
  43.         for(j = 0; j < i; j++)
  44.                 printf("%d ", digit[j]);
  45.         qsort(digit, i, sizeof(int), i_sort);
  46.         puts("\nОтсортированый массив:");
  47.         for(j = 0; j < i; j++)
  48.                 printf("%d ", digit[j]);
  49.         puts("\nВывод крайних значений:");
  50.         printf("max=%d\nmin=%d\n", digit[i-1], digit[0]);
  51.         return 0;
  52. }

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

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

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


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

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

15   голосов , оценка 3.933 из 5

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

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

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