Расстановка функций вывода - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Меня интересует, как мне расположить функции вывода так, что бы количество замен выводилось не по окончанию цикла, а после каждого вывода знаков после замены так, что бы эти 2 значения не налазили друг на друга? А то у меня получается что то вида q0w0.1!!2 и тд, вертикальный вывод в расчет не брать
#include <stdio.h>
int main(void)
{
    char ch;
    int expense = 0;
    while((ch = getchar()) != '#')
    {
        if(ch != '#')
        switch(ch)
        {
        case '.':     //замена "." на "!"
            printf("!");
            expense++;
            break;
        
        case '!':        // замена "!" на "!!"
            printf("!!");
            expense++;
            break;

        default :
            putchar(ch);  //вывод знаков после замены
            continue;
        }
     
    }
        printf("%d", expense); //вывод количества замен
    getchar();
    getchar();
        return 0;
}

Решение задачи: «Расстановка функций вывода»

textual
Листинг программы
#include <stdio.h>
int main(void)
{
    char ch;
    int expense = 0;
    while((ch = getchar()) != '#')
    {
        if(ch != '#')
        switch(ch)
        {
        case '.':     //замена "." на "!"
            printf("!");
            expense++;
            break;
        
        case '!':        // замена "!" на "!!"
            printf("!!");
            expense++;
            printf("\n%i\n", expense);
            break;
        
            
        default :
            putchar(ch);  //вывод знаков после замены
            continue;
        }
     
    }
    printf("%d", expense); //вывод количества замен
    getchar();
    getchar();
    return 0;
}

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

  1. В начале кода подключается стандартная библиотека ввода-вывода .
  2. Затем определена функция main(), которая является точкой входа в программу.
  3. Внутри функции main() определены две переменные:
    • ch - тип данных char, используется для хранения символа, вводимого пользователем.
    • expense - тип данных int, используется для подсчета количества замен символов.
  4. Далее, в цикле while с условием (ch = getchar()) != '#', происходит чтение символа от пользователя и присваивание его переменной ch.
  5. Внутри цикла while происходит проверка, не является ли введенный символ символом '#'.
  6. Если символ не равен '#', то происходит переход к блоку switch.
  7. В блоке switch происходит проверка введенного символа и замена его на другой символ:
    • case '.': замена . на !.
    • case '!': замена ! на !!.
  8. После замены символа, происходит вывод нового символа на экран с помощью функции printf().
  9. Затем, переменная expense увеличивается на единицу.
  10. После вывода нового символа, происходит переход к следующему блоку switch.
  11. Если введенный символ не равен '.' и не равен '!', то происходит вывод введенного символа на экран с помощью функции putchar().
  12. После вывода символа, происходит продолжение цикла while с помощью команды continue.
  13. Если введенный символ равен '#', то происходит завершение цикла while и вывод количества замен на экран с помощью функции printf().
  14. После вывода количества замен, происходит чтение двух символов от пользователя с помощью функции getchar().
  15. После чтения символов, функция main() возвращает значение 0, что означает успешное завершение программы.
  16. Значение 0 возвращается из функции main() и сохраняется в переменной return.
  17. Значение переменной return используется для завершения программы.
  18. Значение переменной expense не используется в коде.
  19. В коде нет обработки ошибок.
  20. В коде нет использования других библиотек, кроме .

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


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

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

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