Повторяющиеся большие английские буквы - 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;
}

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

  1. Включаем файл стандартного ввода/вывода
  2. Определяем константу N равную 26, которая представляет количество больших английских букв от A до Z.
  3. Функция f принимает указатель на строку s.
  4. Инициализируем массив g типа unsigned char с размером N и всем элементам равным 0.
  5. Переменная k инициализируется значением 0 и используется для подсчета повторяющихся букв.
  6. В цикле for перебираем символы строки s.
  7. Если текущий символ является большой английской буквой от A до Z, то увеличиваем соответствующий элемент массива g на 1.
  8. После окончания цикла, в цикле for перебираем элементы массива g и проверяем, если значение элемента больше 1, то увеличиваем значение переменной k на 1.
  9. Возвращаем значение переменной k из функции f.
  10. В функции main создаем строку str типа char с помощью фигурных скобок и присваиваем ей значение ASASSFF.
  11. Вызываем функцию f с аргументом str и выводим результат её работы с помощью функции printf.
  12. Возвращаем 0, чтобы указать, что программа успешно завершилась.

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


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

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

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