Программа выводит некорректные данные - 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, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д