Программа неправильно находит min и max в строке - C (СИ)
Формулировка задачи:
Помогите найти ошибку
Он неправильно находит min и max в строке
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int a, b, c, max, i, min; scanf("%d", &a); char str[a]; scanf("%s", str); for (i=0; i<a; i++); { if ((str[i-1]<str[i]) && (str[i]>str[i+1])) { max=str[i]; } if ((str[i-1]>str[i]) && (str[i]<str[i+1])) { min=str[i]; } } for (i=0; i<a; i++); { if ((str[i-1]>max) && (str[i+1]<max)) { a = str[i]; printf("%d", a); } if ((str[i-1]<min) && (str[i+1]>min)) { b = str[i]; printf("%d", b); } } return 0; }
Решение задачи: «Программа неправильно находит min и max в строке»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #define N 100 int main() { int max, min, i = 0; char str[N]; scanf("%s", str); min = str[0]; max = str[0]; while (str[i]) { if (str[i] > max) max = str[i]; if (str[i] < min) min = str[i]; i++; } printf("max=%c\n",max); printf("min=%c\n", min); return 0; }
Объяснение кода листинга программы
- Подключаются необходимые библиотеки для работы с файлами и строками.
- Определяется константа N, которая задает максимальную длину строки в массиве.
- В функции main() инициализируются переменные:
- max и min устанавливаются равными первому символу строки.
- i устанавливается равным 0.
- С помощью функции scanf() вводится строка.
- В цикле while происходит проход по всем символам строки:
- Если текущий символ больше max, то max присваивается этот символ.
- Если текущий символ меньше min, то min присваивается этот символ.
- i увеличивается на 1.
- Выводятся значения max и min.
- Функция main() возвращает 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д