Определить, каких букв больше - М или Н - C (СИ)
Формулировка задачи:
Язык Си.
Дано предложение. Определить, каких букв в нем больше: м или н.
Помогите с решением кому не сложно.
Решение задачи: «Определить, каких букв больше - М или Н»
textual
Листинг программы
#include <stdio.h>
int main(void) {
char buf[BUFSIZ];
while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
char * p = buf;
int cmp = 0;
for ( ; *p; ++p ) {
if ( *p == 'm' )
--cmp;
else if ( *p == 'n' )
++cmp;
}
printf("%s\n", ( cmp < 0 ) ? "m wins" : ( cmp > 0 ) ? "n wins" : "the same");
}
return 0;
}
Объяснение кода листинга программы
В этом коде проводится анализ строки, введенной пользователем, с целью определить, какая из букв м или н встречается в ней чаще.
- В начале кода объявляется переменная типа char с именем buf и размером BUFSIZ, которая будет использоваться для хранения строки, введенной пользователем.
- Затем в цикле while выполняется следующее:
- Выводится приглашение для ввода строки.
- Считывается строка с помощью функции fgets.
- Проверяется, не пустая ли строка, чтобы избежать обработки пустой строки, оставшейся от предыдущего ввода.
- Внутри цикла while объявляется переменная типа char* с именем p, которая будет использоваться в качестве указателя на текущий символ в строке.
- Инициализируется переменная cmp нулем, которая будет использоваться для подсчета разницы в частоте встречаемости букв
мин. - В цикле for перебираются все символы в строке:
- Если текущий символ равен
м, то значение переменной cmp уменьшается на единицу. - Если текущий символ равен
н, то значение переменной cmp увеличивается на единицу.
- Если текущий символ равен
- После окончания цикла for выводится сообщение, сообщающее, какая из букв
милинвстречается чаще. - Если значение переменной cmp меньше нуля, выводится сообщение
м wins, что означает, что буквамвстречается чаще. - Если значение переменной cmp больше нуля, выводится сообщение
n wins, что означает, что букванвстречается чаще. - Если значение переменной cmp равно нулю, выводится сообщение
the same, что означает, что буквыминвстречаются одинаковое количество раз.