Программа выводит некорректные данные - 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;
}

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

В этом коде:

  1. Задается целочисленная переменная cnt, инициализированная значением 1, которая будет использоваться для подсчета количества одинаковых символов.
  2. Задаются две переменные типа char: ch и b, которые используются для хранения текущих символов ввода.
  3. Значение переменной b инициализируется значением первого введенного символа, а значение переменной ch инициализируется таким же значением.
  4. Запускается цикл while, который продолжает работу до тех пор, пока не будет введен символ новой строки или не достигнет конца файла.
  5. Внутри цикла, если текущий символ равен переменной b, значение переменной cnt увеличивается на 1.
  6. Если текущий символ не равен переменной b, проверяется, больше ли значение переменной cnt двух. Если это так, то на экран выводится значение переменной cnt, за которым следует символ переменной b.
  7. Если значение переменной cnt меньше или равно двум, то на экран выводится строка, состоящая из символа переменной b, повторенного cnt раз.
  8. После выхода из цикла, значение переменной b обновляется, а значение переменной cnt устанавливается равным 1.
  9. В конце программы возвращается 0, что означает успешное выполнение.

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


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

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

14   голосов , оценка 4 из 5
Похожие ответы