Форум программистов, компьютерный форум CyberForum.ru

Как посчитать количество повторений каждой из цифр в числе N*N? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.81
Stryagina
1 / 1 / 0
Регистрация: 14.09.2009
Сообщений: 9
14.09.2009, 20:59     Как посчитать количество повторений каждой из цифр в числе N*N? #1
я очень плохо ориентируюсь на С++.Такой вопрос:можно числа переводить в строки?И если нет,то как осуществить решение задачи?Помогите, пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2009, 20:59     Как посчитать количество повторений каждой из цифр в числе N*N?
Посмотрите здесь:

Определить количество повторений каждой из цифр в числе C++
C++ Определить количество каждой из цифр 0,1,2...9 в числе N^N.
нужно посчитать количество цифр 4 и 9 в данном числе C++
Определить количество повторений в числе заданной цифры C++
Посчитать количество четных цифр в трехзначном числе (линейно) C++
Рекурсия: количество цифр в числе, сумма цифр и реверс числа C++
Как посчитать количество повторений действия? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
14.09.2009, 21:33     Как посчитать количество повторений каждой из цифр в числе N*N? #2
Цитата Сообщение от Stryagina Посмотреть сообщение
Такой вопрос:можно числа переводить в строки?
да
Adler
 Аватар для Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
14.09.2009, 21:35     Как посчитать количество повторений каждой из цифр в числе N*N? #3
примерно так.
C++
1
2
3
4
5
6
7
char symbol='4';
char c[16];
int val=14457483;
_itoa_s(val,c,10);
std::string s=c;
int count=0;
for(int i=0;i<(int)s.size();i++)if(s[i]==symbol){count++;};
count - кол-ва повторений.
val - число.
symbol - цифра.

зы: инклудать <string>
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,301
14.09.2009, 21:38     Как посчитать количество повторений каждой из цифр в числе N*N? #4
Автор, от тебя много не требуется.
Ну, ты хотя бы вопрос сформулируй правильно, чтобы на твоей просьбе не спотыкались люди и за тебя не додумывали- что за числа, десятичные, шестнадцатиричные, дробные, опять же пояснил бы, что такое N*N...
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
14.09.2009, 21:44     Как посчитать количество повторений каждой из цифр в числе N*N? #5
Вот решение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
int main()
{
    setlocale(LC_ALL, "Russian");
    int N, i;
    std::cout<<"Введите число:\n> ", std::cin>>N;
 
    std::cout<<"Квадрат числа "<<N<<" равен: ";
    N *= N;
    std::cout<<N;
    int mas[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
    while(N > 0)
    {
        mas[N%10]++;
        N /= 10;
    }
 
    std::cout<<"\n\nКоличество повторений каждого из символов:\n";
    for(i = 0; i < 10; ++i)
        if(mas[i])
            std::cout<<"Количество повторений цифры "<<i<<" равно "<<mas[i]<<'\n';
 
    std::cout<<std::endl;
    system("pause");
    return 0;
}


Adler, алгоритм не универсальный для типа int, да и не оптимален
Adler
 Аватар для Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
14.09.2009, 22:03     Как посчитать количество повторений каждой из цифр в числе N*N? #6
Цитата Сообщение от M128K145 Посмотреть сообщение
алгоритм не универсальный
зато коротко и непонятно.
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
14.09.2009, 22:12     Как посчитать количество повторений каждой из цифр в числе N*N? #7
C++
1
2
3
4
5
6
7
8
int mas[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; //Создаем массив на 10 элементов
//(сколько и цифр от 0 до 9) и обнуляем его
while(N > 0) // пока наше число больше 0, т.е. дву- и более значное
{
        mas[N%10]++; // элемент массива с индексом равным остатку от деления
        // нашего числа на 10 (т.е. получаем последнюю цифру) увеличиваем на 1
        N /= 10;// уменьшаем наше N в 10 раз(отбрасываем последнюю цифру)
}
Мне кажется все предельно ясно, просто, и максимально линейно. Быстрее - теоретически невозможно!
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
14.09.2009, 22:37     Как посчитать количество повторений каждой из цифр в числе N*N? #8
2M128K145: Берем например N == 0.
По твоему коду будет что цифр у этого числа нет вообще
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
14.09.2009, 22:59     Как посчитать количество повторений каждой из цифр в числе N*N? #9
C++
1
2
3
4
5
6
7
    while(N > 0)
    {
        mas[N%10]++;
        N /= 10;
    }
    if(!N)
        mas[0] = 1;
Вот так. Люди, берите пример с odip'a - человек не верит словам, а просматривает код. И таки находит ошибки! Спасибо! Вроде исправил)
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
14.09.2009, 23:02     Как посчитать количество повторений каждой из цифр в числе N*N? #10
Можно так:
C
1
2
3
4
5
for ( ; ; ) {
    mas[N%10]++;
    N/= 10;
    if ( N == 0 ) { break; }
}
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
15.09.2009, 08:02     Как посчитать количество повторений каждой из цифр в числе N*N? #11
Или так
C++
1
2
3
4
5
    do
    {
        mas[N%10]++;
        N /= 10;
    }while(N > 0);
Stryagina
1 / 1 / 0
Регистрация: 14.09.2009
Сообщений: 9
15.09.2009, 19:02  [ТС]     Как посчитать количество повторений каждой из цифр в числе N*N? #12
спасибо за советы!!!!только вот еще вопрос...

Добавлено через 2 минуты
Цитата Сообщение от M128K145 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
int mas[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; //Создаем массив на 10 элементов
//(сколько и цифр от 0 до 9) и обнуляем его
while(N > 0) // пока наше число больше 0, т.е. дву- и более значное
{
        mas[N%10]++; // элемент массива с индексом равным остатку от деления
        // нашего числа на 10 (т.е. получаем последнюю цифру) увеличиваем на 1
        N /= 10;// уменьшаем наше N в 10 раз(отбрасываем последнюю цифру)
}
Мне кажется все предельно ясно, просто, и максимально линейно. Быстрее - теоретически невозможно!
а куда результат записывается...в массив?т.е. как вывести результат сколько же повторений?
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
15.09.2009, 19:07     Как посчитать количество повторений каждой из цифр в числе N*N? #13
Stryagina, в массив. Вот вывод
C++
1
2
3
4
std::cout<<"\n\nКоличество повторений каждого из символов:\n";
for(i = 0; i < 10; ++i)
       if(mas[i])
              std::cout<<"Количество повторений цифры "<<i<<" равно "<<mas[i]<<'\n';
только обрати внимание на замечания к этому коду написанные в 8 посте и воспользуйся одним из способов устранения этой ошибки, приведенных в 9 - 11 постах. Что бы не много менять в коде используй код из 11 поста, а так на твое усмотрение любой из способов, они идентичны
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
15.09.2009, 19:07     Как посчитать количество повторений каждой из цифр в числе N*N? #14
Результат записывается в массив.
Вывести - например в цикле от 0 до 9.
Stryagina
1 / 1 / 0
Регистрация: 14.09.2009
Сообщений: 9
15.09.2009, 19:11  [ТС]     Как посчитать количество повторений каждой из цифр в числе N*N? #15
огромное спасибо!!!!!попробую как-нибудь все это довести до целостной программы....только тут вот другая проблема появилась....с++ вообще не работает((((окошко выходит,а там ничего нет....(((((
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
15.09.2009, 19:23     Как посчитать количество повторений каждой из цифр в числе N*N? #16
вот целостная программа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
int main()
{
        setlocale(LC_ALL, "Russian");
        int N, i;
        std::cout<<"Введите число:\n> ", std::cin>>N;
 
        std::cout<<"Квадрат числа "<<N<<" равен: ";
        N *= N;
        std::cout<<N;
        int mas[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
        do
        {
                mas[N%10]++;
                N /= 10;
        }while(N > 0);
 
        std::cout<<"\n\nКоличество повторений каждого из символов:\n";
        for(i = 0; i < 10; ++i)
                if(mas[i])
                        std::cout<<"Количество повторений цифры "<<i<<" равно "<<mas[i]<<'\n';
 
        std::cout<<std::endl;
        system("pause");
        return 0;
}
Stryagina
1 / 1 / 0
Регистрация: 14.09.2009
Сообщений: 9
15.09.2009, 20:16  [ТС]     Как посчитать количество повторений каждой из цифр в числе N*N? #17
спасибо!!!!!вы очень хорошие люди!!!!!

Добавлено через 41 минуту
еще раз большое спасибо!!!!у меня все,слава Богу,заработало)))))))))но как мне еще в этой программе добавить условие,что N<=1000
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2009, 20:52     Как посчитать количество повторений каждой из цифр в числе N*N?
Еще ссылки по теме:

C++ Найти количество повторений цифр в числе
Как вычислить количество цифр в числе? C++
Посчитать количество 7-ок (цифр 7) в введенном числе C++
Как найти количество цифр в десятичном числе? C++
C++ Определить количество цифр в числе и посчитать их сумму

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
15.09.2009, 20:52     Как посчитать количество повторений каждой из цифр в числе N*N? #18
два варианта:
При N > 1000 повторный ввод
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
int main()
{
    setlocale(LC_ALL, "Russian");
    int N, i;
inp:
    std::cout<<"Введите число:\n> ", std::cin>>N;
    if(N > 1000)
    {
        std::cout<<"Число должно быть положительным и меньше тысячи.\n";
        goto inp;
    }
    std::cout<<"Квадрат числа "<<N<<" равен: ";
    N *= N;
    std::cout<<N;
    int mas[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
    do
    {
        mas[N%10]++;
        N /= 10;
    }while(N > 0);
 
    std::cout<<"\n\nКоличество повторений каждого из символов:\n";
    for(i = 0; i < 10; ++i)
        if(mas[i])
            std::cout<<"Количество повторений цифры "<<i<<" равно "<<mas[i]<<'\n';
 
    std::cout<<std::endl;
    system("pause");
    return 0;
}

При N > 1000 выход из программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
int main()
{
    setlocale(LC_ALL, "Russian");
    int N, i;
    std::cout<<"Введите число:\n> ", std::cin>>N;
    if(N > 1000)
    {
        system("pause");
        return 0;
    }
    std::cout<<"Квадрат числа "<<N<<" равен: ";
    N *= N;
    std::cout<<N;
    int mas[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
    do
    {
        mas[N%10]++;
        N /= 10;
    }while(N > 0);
 
    std::cout<<"\n\nКоличество повторений каждого из символов:\n";
    for(i = 0; i < 10; ++i)
        if(mas[i])
            std::cout<<"Количество повторений цифры "<<i<<" равно "<<mas[i]<<'\n';
 
    std::cout<<std::endl;
    system("pause");
    return 0;
}
Yandex
Объявления
15.09.2009, 20:52     Как посчитать количество повторений каждой из цифр в числе N*N?
Ответ Создать тему
Опции темы

Текущее время: 05:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru