Дана строка символов до точки. Определить, сколько каких латинских букв в ней содержится - C (СИ)

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

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

Как подсчитать количество каждой буквы?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
int main()
{
    int i=0,k=0;
    char s[]="Hello, world!.abcde";
    puts(s);
 
    for(i=0;i<strlen(s);i++)
    {
 
        if(s[i]=='.')
            break;
 
            printf("%c",s[i]);
    }
 
printf("\n");
 for(i=0;s[i]!='.';i++)
 {
 if((s[i]>'a')&&(s[i]<'z'))k++;
 if((s[i]>'A')&&(s[i]<'Z'))k++;
 }
printf("kolichestvo latinskih simvolov=%d\n",k);
 
system("pause");
return 0;
}

Решение задачи: «Дана строка символов до точки. Определить, сколько каких латинских букв в ней содержится»

textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
 
int main() {
    int alph[26] = { 0 };
    char str[] = "Hello, world! This is string for test.";
    char* p = str;
    int i;
 
    for (; *p; ++p) {
        if (isalpha(*p)) {
            alph[tolower(*p) - 'a']++;
        }
    }
 
    for (i = 0; i < 26; ++i) {
        if (alph[i]) {
            printf("%c = %d\n", i + 'a', alph[i]);
        }
    }
 
    return 0;
}

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

В этом коде:

  1. Объявляется массив alph размером 26 для подсчёта количества латинских букв в строке.
  2. Указывается исходная строка.
  3. Инициализируется указатель p на первый символ строки.
  4. В цикле for перебираются все символы строки.
  5. С помощью функции isalpha проверяется, является ли текущий символ латинской буквой.
  6. Если символ является латинской буквой, то его значение приводится к нижнему регистру, определяется его позиция в массиве alph и увеличивается соответствующее значение в массиве.
  7. В цикле for перебираются все позиции в массиве alph.
  8. Если значение в текущей позиции больше 0, то выводится название и значение этой позиции.
  9. Код завершается возвратом 0, что означает успешное выполнение.

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

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