Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/29: Рейтинг темы: голосов - 29, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 14.09.2009
Сообщений: 9

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

14.09.2009, 20:59. Показов 6279. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я очень плохо ориентируюсь на С++.Такой вопрос:можно числа переводить в строки?И если нет,то как осуществить решение задачи?Помогите, пожалуйста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.09.2009, 20:59
Ответы с готовыми решениями:

Определить количество повторений каждой из цифр 1,2...9 в числе N^N
Определить количество повторений каждой из цифр 1,2...9 в числе N^N(N в степени N), N от 1 до 1000 Нашёл на С++, но оно не работает...

Определить количество повторений каждой из цифр в числе
Определить количество повторений каждой из цифр 0,1,2,...,9 в числе N.

Определить количество повторений каждой из цифр в числе
1)Фишка может двигатся по полю длины N только вперёд.Длина хода фишки не более K. Найти число различных путей, по которым фишка может...

17
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
14.09.2009, 21:33
Цитата Сообщение от Stryagina Посмотреть сообщение
Такой вопрос:можно числа переводить в строки?
да
0
 Аватар для Adler
80 / 85 / 19
Регистрация: 07.05.2009
Сообщений: 336
14.09.2009, 21:35
примерно так.
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>
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
14.09.2009, 21:38
Автор, от тебя много не требуется.
Ну, ты хотя бы вопрос сформулируй правильно, чтобы на твоей просьбе не спотыкались люди и за тебя не додумывали- что за числа, десятичные, шестнадцатиричные, дробные, опять же пояснил бы, что такое N*N...
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
14.09.2009, 21:44
Вот решение
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, да и не оптимален
0
 Аватар для Adler
80 / 85 / 19
Регистрация: 07.05.2009
Сообщений: 336
14.09.2009, 22:03
Цитата Сообщение от M128K145 Посмотреть сообщение
алгоритм не универсальный
зато коротко и непонятно.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
14.09.2009, 22:12
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 раз(отбрасываем последнюю цифру)
}
Мне кажется все предельно ясно, просто, и максимально линейно. Быстрее - теоретически невозможно!
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
14.09.2009, 22:37
2M128K145: Берем например N == 0.
По твоему коду будет что цифр у этого числа нет вообще
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
14.09.2009, 22:59
C++
1
2
3
4
5
6
7
    while(N > 0)
    {
        mas[N%10]++;
        N /= 10;
    }
    if(!N)
        mas[0] = 1;
Вот так. Люди, берите пример с odip'a - человек не верит словам, а просматривает код. И таки находит ошибки! Спасибо! Вроде исправил)
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
14.09.2009, 23:02
Можно так:
C
1
2
3
4
5
for ( ; ; ) {
    mas[N%10]++;
    N/= 10;
    if ( N == 0 ) { break; }
}
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.09.2009, 08:02
Или так
C++
1
2
3
4
5
    do
    {
        mas[N%10]++;
        N /= 10;
    }while(N > 0);
0
1 / 1 / 0
Регистрация: 14.09.2009
Сообщений: 9
15.09.2009, 19:02  [ТС]
спасибо за советы!!!!только вот еще вопрос...

Добавлено через 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 раз(отбрасываем последнюю цифру)
}
Мне кажется все предельно ясно, просто, и максимально линейно. Быстрее - теоретически невозможно!
а куда результат записывается...в массив?т.е. как вывести результат сколько же повторений?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.09.2009, 19:07
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 поста, а так на твое усмотрение любой из способов, они идентичны
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
15.09.2009, 19:07
Результат записывается в массив.
Вывести - например в цикле от 0 до 9.
0
1 / 1 / 0
Регистрация: 14.09.2009
Сообщений: 9
15.09.2009, 19:11  [ТС]
огромное спасибо!!!!!попробую как-нибудь все это довести до целостной программы....только тут вот другая проблема появилась....с++ вообще не работает((((окошко выходит,а там ничего нет....(((((
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.09.2009, 19:23
вот целостная программа
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;
}
0
1 / 1 / 0
Регистрация: 14.09.2009
Сообщений: 9
15.09.2009, 20:16  [ТС]
спасибо!!!!!вы очень хорошие люди!!!!!

Добавлено через 41 минуту
еще раз большое спасибо!!!!у меня все,слава Богу,заработало)))))))))но как мне еще в этой программе добавить условие,что N<=1000
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.09.2009, 20:52
два варианта:
При 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.09.2009, 20:52
Помогаю со студенческими работами здесь

Как посчитать количество цифр в числе?
Для каждого пункта напишите функцию, возвращающую ответ. 0) Дано число, посчитайте количество цифр в числе. Например, 123456 -&gt; 6 ...

Как посчитать количество цифр в числе ?
Как посчитать количество цифр в числе ?

Как посчитать количество цифр в числе
i1:= 3284; i2:=214; i3:= 23473; i4:= 1; Как посчитать количество цифр в числе в i1 - 4 i2 - 3 i3 - 5 i4 - 1

Как посчитать количество цифр в числе после запятой
есть число 3.45678 как посчитать числа после запятой т.е. 5

Как посчитать количество цифр в числе типа Real
Допустим у меня есть два числа типа Real r1:= 32.3456 r2:= 1.63 Как в них посчитать и целую часть и десятичную чтобы он...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru