Расстановка функций вывода - 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;
}
Объяснение кода листинга программы
- В начале кода подключается стандартная библиотека ввода-вывода
. - Затем определена функция main(), которая является точкой входа в программу.
- Внутри функции main() определены две переменные:
- ch - тип данных char, используется для хранения символа, вводимого пользователем.
- expense - тип данных int, используется для подсчета количества замен символов.
- Далее, в цикле while с условием (ch = getchar()) != '#', происходит чтение символа от пользователя и присваивание его переменной ch.
- Внутри цикла while происходит проверка, не является ли введенный символ символом '#'.
- Если символ не равен '#', то происходит переход к блоку switch.
- В блоке switch происходит проверка введенного символа и замена его на другой символ:
- case '.': замена
.на!. - case '!': замена
!на!!.
- case '.': замена
- После замены символа, происходит вывод нового символа на экран с помощью функции printf().
- Затем, переменная expense увеличивается на единицу.
- После вывода нового символа, происходит переход к следующему блоку switch.
- Если введенный символ не равен '.' и не равен '!', то происходит вывод введенного символа на экран с помощью функции putchar().
- После вывода символа, происходит продолжение цикла while с помощью команды continue.
- Если введенный символ равен '#', то происходит завершение цикла while и вывод количества замен на экран с помощью функции printf().
- После вывода количества замен, происходит чтение двух символов от пользователя с помощью функции getchar().
- После чтения символов, функция main() возвращает значение 0, что означает успешное завершение программы.
- Значение 0 возвращается из функции main() и сохраняется в переменной return.
- Значение переменной return используется для завершения программы.
- Значение переменной expense не используется в коде.
- В коде нет обработки ошибок.
- В коде нет использования других библиотек, кроме
.