Программа неправильно находит 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, что означает успешное завершение работы программы.