Программа выводит некорректные данные - C (СИ)
Формулировка задачи:
#include<stdio.h>
int main() {
char c;
int a = 0,b;
while (((c = getchar()) != '\n') && (c != EOF)) {
if (('a' <= c) && (c <= 'z')) {
a++;
}
}
printf("%d\n", a);
return 0;
}Помогите пожалуйста исправить код, не могу понять где ошибка и как это исправить... Вот это нужно сделать....
Решение задачи: «Программа выводит некорректные данные»
textual
Листинг программы
#include <stdio.h>
int main() {
unsigned cnt = 1;
char ch, b;
ch = b = getchar();
while ((ch != '\n') && (ch != EOF)) {
ch = getchar();
if (b == ch) {
cnt++;
}
else {
if (cnt > 2) {
printf("%d%c", cnt, b);
}
else {
while (cnt--) {
printf("%c", b);
}
}
b = ch;
cnt = 1;
}
}
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Задается целочисленная переменная cnt, инициализированная значением 1, которая будет использоваться для подсчета количества одинаковых символов.
- Задаются две переменные типа char: ch и b, которые используются для хранения текущих символов ввода.
- Значение переменной b инициализируется значением первого введенного символа, а значение переменной ch инициализируется таким же значением.
- Запускается цикл while, который продолжает работу до тех пор, пока не будет введен символ новой строки или не достигнет конца файла.
- Внутри цикла, если текущий символ равен переменной b, значение переменной cnt увеличивается на 1.
- Если текущий символ не равен переменной b, проверяется, больше ли значение переменной cnt двух. Если это так, то на экран выводится значение переменной cnt, за которым следует символ переменной b.
- Если значение переменной cnt меньше или равно двум, то на экран выводится строка, состоящая из символа переменной b, повторенного cnt раз.
- После выхода из цикла, значение переменной b обновляется, а значение переменной cnt устанавливается равным 1.
- В конце программы возвращается 0, что означает успешное выполнение.