Строки в языке Си

125
19 апреля 2018, 11:51

Задание : Строка содержит произвольный текст. Вывести сколько раз в ней встречается цифра 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Найти две наиболее часто встречающиеся цифры. Входные данные: строка S.

Я разработал такой код

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char s[255] = { 0 };
    int num = 0;
    printf("Введите строку: ");
    gets(s);
    for (int i = 0; i < strlen(s); i++)
    {
        for (int j = i; j < strlen(s); j++)
            if (s[i] == s[j]) 
                num++;
        for (int k = i +1; k < strlen(s); k++)
            if (s[k] == s[i]) s[k] = 0;
        if (s[i]!=0)
            printf("Символ %c встречается %d раз\n", s[i], num);
        num = 0;
    }

Но не понимаю, как его довести до выполнения поставленной задачи

Answer 1
char s[255] = {0};
int m[10] = {0};
gets(s);
size_t n = strlen(s);
for (size_t i = 0; i < n; ++i) {
    if(isdigit(s[i]))
        ++m[int(s[i] - '0')];
}
//в этом массиве индексы соответствуют цифре, а значения количеству
int max1 = 0, max2 = 0, index1 = 0, index2 = 0;;
for (int i = 0; i < 10; ++i) {        
    if(m[i] > max1) {
        max2 = max1;
        index2 = index1;
        max1 = m[i];
        index1 = i;
    }
}
cout << index1 <<"  встречается  " << max1 <<" раз" <<endl
     <<index2 << "  встречается  " << max2 <<" раз";
READ ALSO
Ввод информации с клавиатуры

Ввод информации с клавиатуры

Здравствуйте, перед вами очередная студенческая задачаХотелось бы узнать принцип работы моего кода, который я не могу понять

161
Как удалить динамически созданный LineEdit?

Как удалить динамически созданный LineEdit?

Я хочу иметь возможность удалить добавленный LineEdit

150
Ошибка при компиляции *.sass через Gulp

Ошибка при компиляции *.sass через Gulp

Для проекта нужно сделать компиляцию *sass файлов через gulp

144