Повторяющиеся большие английские буквы - C (СИ)
Формулировка задачи:
Нужно найти количество повторяющихся больших английских букв(пример нужного слова:ASASSFF). Не пойму в чем ошибка. Выводит чисто 1. Есть 3 разных варика программы, что смог надумать. (П.С. - бред на бреде+я анскил)
#include <iostream> #include <stdio.h> #include <ctype.h> #include <conio.h> int f(char *s) { char g[26]; int i,j,k=0; for (i=0;s[i]!='\0';i++) if (s[i]>='A'&&s[i]<='Z') { j=s[i]-'A'; g[j]++; } if (g[j]>0&&g[j]>1) //Может не то сравниваю k++; return k; } void main() { const int n=4; int i; char s[n][200]; for (i=0;i<n;i++) gets(s[i]); cout<<f(s[i]); }
#include <iostream> #include <stdio.h> #include <ctype.h> #include <conio.h> void main() { int g[26]={0},i,j,k=0; char s[4][200]; for (i=0;i<4;i++) gets(s[i]); for (i=0;s[i]!='\0';i++) if (s[i]>='A'&&s[i]<='Z') { g[s-'A']+=1; } if (g[j]>0&&g[j]>1) k++; cout<<k; }
#include <iostream> #include <stdio.h> #include <ctype.h> #include <conio.h> void main() { int inChar; char s[26]; int i,k=0; getche(inChar); if (isalpha ( inChar) ) { s[inChar - 'A'] += 1; } if (s[i]>0&&s[i]>1) k++; cout<<k; }
Решение задачи: «Повторяющиеся большие английские буквы»
textual
Листинг программы
#include <stdio.h> #define N 26 int f(char *s) { unsigned char g[N] = {0}; int k = 0; for (size_t i = 0; s[i]; i++) { if (s[i]>='A'&&s[i]<='Z') { g[s[i]-'A']++; } } for (size_t i = 0; i<N; i++) if (g[i]>1) k++; return k; } int main(void) { char str[] = "ASASSFF"; printf("%d", f(str)); return 0; }
Объяснение кода листинга программы
- Включаем файл стандартного ввода/вывода
- Определяем константу N равную 26, которая представляет количество больших английских букв от A до Z.
- Функция f принимает указатель на строку s.
- Инициализируем массив g типа unsigned char с размером N и всем элементам равным 0.
- Переменная k инициализируется значением 0 и используется для подсчета повторяющихся букв.
- В цикле for перебираем символы строки s.
- Если текущий символ является большой английской буквой от A до Z, то увеличиваем соответствующий элемент массива g на 1.
- После окончания цикла, в цикле for перебираем элементы массива g и проверяем, если значение элемента больше 1, то увеличиваем значение переменной k на 1.
- Возвращаем значение переменной k из функции f.
- В функции main создаем строку str типа char с помощью фигурных скобок и присваиваем ей значение
ASASSFF
. - Вызываем функцию f с аргументом str и выводим результат её работы с помощью функции printf.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д