Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.81
Stryagina
1 / 1 / 0
Регистрация: 14.09.2009
Сообщений: 9
#1

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

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

я очень плохо ориентируюсь на С++.Такой вопрос:можно числа переводить в строки?И если нет,то как осуществить решение задачи?Помогите, пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2009, 20:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как посчитать количество повторений каждой из цифр в числе N*N? (C++):

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

Найти количество повторений цифр в числе - C++
Найти количество повторений каждой цифры у заданного натурального числа (не используя массивов).

Посчитать количество 7-ок (цифр 7) в введенном числе - C++
4.Посчитать количество 7-ок (цифр 7) в введенном числе.

Определить количество цифр в числе и посчитать их сумму - C++
пользователь вводит число, опредилить количество цифр в числе, посчитать их сумму написал следующий код: #include <iostream> using...

нужно посчитать количество цифр 4 и 9 в данном числе - C++
например, чтобы при вводе числа 14599 программа выдавала 3 помогите пожалуйста

Посчитать количество четных цифр в трехзначном числе (линейно) - C++
трехзначное число, посчитать кол-во четных чисел в нем! Линейно пример циклично: #include<stdio.h> int main() { int x, b; ...

17
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
14.09.2009, 21:33 #2
Цитата Сообщение от Stryagina Посмотреть сообщение
Такой вопрос:можно числа переводить в строки?
да
0
Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
14.09.2009, 21:35 #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>
0
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
14.09.2009, 21:38 #4
Автор, от тебя много не требуется.
Ну, ты хотя бы вопрос сформулируй правильно, чтобы на твоей просьбе не спотыкались люди и за тебя не додумывали- что за числа, десятичные, шестнадцатиричные, дробные, опять же пояснил бы, что такое N*N...
0
M128K145
Эксперт С++
8300 / 3520 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
14.09.2009, 21:44 #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, да и не оптимален
0
Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
14.09.2009, 22:03 #6
Цитата Сообщение от M128K145 Посмотреть сообщение
алгоритм не универсальный
зато коротко и непонятно.
0
M128K145
Эксперт С++
8300 / 3520 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
14.09.2009, 22:12 #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 раз(отбрасываем последнюю цифру)
}
Мне кажется все предельно ясно, просто, и максимально линейно. Быстрее - теоретически невозможно!
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
14.09.2009, 22:37 #8
2M128K145: Берем например N == 0.
По твоему коду будет что цифр у этого числа нет вообще
1
M128K145
Эксперт С++
8300 / 3520 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
14.09.2009, 22:59 #9
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
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
14.09.2009, 23:02 #10
Можно так:
C
1
2
3
4
5
for ( ; ; ) {
    mas[N%10]++;
    N/= 10;
    if ( N == 0 ) { break; }
}
0
M128K145
Эксперт С++
8300 / 3520 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
15.09.2009, 08:02 #11
Или так
C++
1
2
3
4
5
    do
    {
        mas[N%10]++;
        N /= 10;
    }while(N > 0);
0
Stryagina
1 / 1 / 0
Регистрация: 14.09.2009
Сообщений: 9
15.09.2009, 19:02  [ТС] #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 раз(отбрасываем последнюю цифру)
}
Мне кажется все предельно ясно, просто, и максимально линейно. Быстрее - теоретически невозможно!
а куда результат записывается...в массив?т.е. как вывести результат сколько же повторений?
0
M128K145
Эксперт С++
8300 / 3520 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
15.09.2009, 19:07 #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 поста, а так на твое усмотрение любой из способов, они идентичны
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
15.09.2009, 19:07 #14
Результат записывается в массив.
Вывести - например в цикле от 0 до 9.
0
Stryagina
1 / 1 / 0
Регистрация: 14.09.2009
Сообщений: 9
15.09.2009, 19:11  [ТС] #15
огромное спасибо!!!!!попробую как-нибудь все это довести до целостной программы....только тут вот другая проблема появилась....с++ вообще не работает((((окошко выходит,а там ничего нет....(((((
0
15.09.2009, 19:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2009, 19:11
Привет! Вот еще темы с ответами:

Определить количество каждой из цифр 0,1,2...9 в числе N^N. - C++
Пожалуйста, помогите разобраться с задачей. Определить количество каждой из цифр 0,1,2...9 в числе N^N.

Как посчитать количество повторений действия? - C++
Как можно посчитать количество повторяемых действий. Задача такая, что если число чётное то выполняется одно действие, если нечётное, то...

Как вычислить количество цифр в числе? - C++
Как вычислить количество цифр в числе с помощью логарифмов?

Подсчитать число появлений в файле каждой строчной русской буквы и вывести в файл количество повторений каждой - C++
Дан текстовый файл. Подсчитать число появлений в нем каждой строчной (то есть маленькой) русской буквы и создать строковый файл, элементы...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.