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

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

Войти
Регистрация
Восстановить пароль
 
 
Sickle
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
#1

Проверить какая из двух частей числа любой разрядности больше - C++

25.06.2016, 18:53. Просмотров 315. Ответов 16
Метки нет (Все метки)

Прошу помочь господа с этой дилеммой, проблема с нахождением этих цифр, в очередной раз. Вот что у меня получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int chislo,razryad=0;
 
    cout << "Введите число: ";
    cin >> chislo;
 
    while (chislo>0)
    {
        razryad++;
        chislo = chislo / 10;
 
    }
    cout << razryad << "\n";
 
 
    int chast_1 = 0, chast_2 = 0;
 
    for (int i = 0; i < razryad/2; i++)
    {   
        chislo = chislo % 10;
        cout << chislo; 
    }
Буду благодарен если будет за комментирована последовательность действий. Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2016, 18:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить какая из двух частей числа любой разрядности больше (C++):

Проверить сумма какой из половин числа и какая из двух частей числа разрядности больше - C++
Доброе время суток всем!!! Интересная задачка, на которую не могу найти ответ!!! Объясните как это происходит....+ сделать циклом for ...

Какая из двух частей числа разрядности больше - C++
Доброе время суток, ребята, подскажите как решить задачу! Проверить какая из двух частей числа любой разрядности больше.

Проверить сумма какой из половин числа ЛЮБОЙ разрядности больше - C++
День добрый, господа знатоки:) Возникли проблемы с переменными, а точнее с их математическими действиями, запутался в край. Идею данной...

Циклы: проверить сумма какой из половин числа (любой разрядности) больше - C++
Ребята помогите, делал два задания, в итоге их надо сделать в ЦИКЛЕ любого типа!!! Сегодня надо сдать!!!((( №1.Проверить сумма какой из...

Используя цикл for, проверить, сумма какой из половин числа любой разрядности больше - C++
Доброе время суток, не могу разобраться с задачей!!! Честно, не имею представления, как ее делать!!! Проверить сумма какой из...

Проверить сумма какой из половин числа разрядности больше - C++
Проверить сумма какой из половин числа любой разрядности больше! Объясните, как это сделать комментируя пожалуйста! Я новичок,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 448
25.06.2016, 19:12 #2
сначала делаете
C++
1
chislo = chislo / 10;
а потом на той же переменной где значение 0
C++
1
chislo = chislo % 10;
Добавлено через 6 минут
если части числа нужно равнять как сумму разрядов то нужно пощитать от 0 до razryad/2 и от razryad/2 до razryad
Даценд
Модератор
Эксперт .NET
3284 / 3199 / 1632
Регистрация: 20.04.2015
Сообщений: 5,875
25.06.2016, 19:25 #3
Sickle,
Немного непонятно.
Для числа 1234567 части 123 и 567? Или 1234 и 4567?
Для первого варианта:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int number, first, last;
cout << "Enter number (2 and more digits): ";
cin >> number;
int count = log10(number) + 1;
first = number / pow(10, (count + 1) / 2);
last = number % (int)pow(10, count / 2);
cout << "number of digits " << count << endl;
cout << "first part " << first << endl;
cout << "last part " << last << endl;
if (first == last)
    cout << "equal parts" << endl;
else
    cout << ((first > last) ? "first larger" : "last larger") << endl;
Sickle
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
25.06.2016, 19:53  [ТС] #4
Вроде понятно, но не работает
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
int chislo,razryad=0;
 
    cout << "Введите число: ";
    cin >> chislo;
 
    while (chislo>0)
    {
        razryad++;
        chislo = chislo / 10;
 
    }
    cout << razryad << "\n";
 
    int chast_1 = 0, chast_2 = 0;
 
    for (int i = 0; i > razryad/2;)
    {   
        chast_1++;
        chislo = chislo % 10; 
    }
    cout << chast_1 << "\n";
 
    for (; razryad / 2 > razryad;)
    {
        chast_2++;
        chislo = chislo % 10;
    }
    cout << chast_2 << "\n";
Добавлено через 2 минуты

Добавлено через 1 минуту
Спасибо за ответ, но к сожалению такие моменты как
C++
1
log, pow
еще не отрабатывали(
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 448
25.06.2016, 19:53 #5
вы переменную число перезатираете то есть у вас выходит вы щитаете число разрядов. работаете с переменной chislo а потом хотите пощитать сумму и опять берете ту же переменную chislo но она содержит уже не исходное значение а 0. Зделайте дубликат и юзайте его. перед каждим циклом скопировали из дубликата значение с chislo и вычислели чего нужно
Sickle
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
25.06.2016, 20:05  [ТС] #6
пишет переопределение переменной chislo
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
32
33
34
35
int chislo,razryad=0;
 
    cout << "Введите число: ";
    cin >> chislo;
 
    while (chislo>0)
    {
        razryad++;
        chislo = chislo / 10;
 
    }
    cout << razryad << "\n";
 
    
    int chast_1 = 0;
    int chislo;
    for (int i = 0; i < razryad/2;)
    {   
        chast_1++;
        chislo = chislo / 10;
        chislo = chislo % 10;
 
        cout << chast_1 << "\n";
    }
    
    
    int chislo, chast_2 = 0;
    for (; razryad / 2 < razryad;)
    {
        chast_2++;
        chislo = chislo / 10;
        chislo = chislo % 10;
 
        cout << chast_2 << "\n";
    }
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 448
25.06.2016, 20:09 #7
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
    int chislo,razryad=0, tmpChislo;
    cout << "Введите число: ";
    cin >> chislo;
    tmpChislo = chislo;
    while (tmpChislo>0)
    {
        ++razryad;
        tmpChislo = tmpChislo / 10;
    }
    cout << razryad << "\n";
 
    int chast_1 = 0;
    tmpChislo = chislo;
    for (int i = 0; i < razryad/2;)
    {   
        chast_1++;
        tmpChislo = tmpChislo / 10;
        tmpChislo = tmpChislo % 10;
        cout << chast_1 << "\n";
    }
    
    
    int chast_2 = 0;
    tmpChislo = chislo;
    for (; razryad / 2 < razryad;)
    {
        chast_2++;
        tmpChislo = tmpChislo / 10;
        tmpChislo = tmpChislo % 10;
        cout << chast_2 << "\n";
    }
Добавлено через 25 секунд
вот примерно вот так криво
Sickle
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
25.06.2016, 20:21  [ТС] #8
код не рабочий
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 448
25.06.2016, 20:40 #9
сформулируте на основе чего должны сравниваться части числа? сумма разрядов двух частей?
Sickle
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
25.06.2016, 20:43  [ТС] #10
ну да, то есть допустим число 1234 12 и 34, препод сказала что хотя бы четные сделайте
Ferrari F1
=^_^=
562 / 449 / 94
Регистрация: 27.01.2015
Сообщений: 2,622
Записей в блоге: 1
Завершенные тесты: 1
25.06.2016, 20:54 #11
Sickle, а число 12345 на какие два числа делить? на 123 и 45 или на 12 345 ?
Четко задание скажите.
Sickle
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
25.06.2016, 20:59  [ТС] #12
кратные например 1234, 123456, 12345678
Ferrari F1
=^_^=
562 / 449 / 94
Регистрация: 27.01.2015
Сообщений: 2,622
Записей в блоге: 1
Завершенные тесты: 1
25.06.2016, 21:00 #13
Sickle, число цифр кратно двум?
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 448
25.06.2016, 21:03 #14
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <cmath>
using namespace std;
 
int getNrOfSigns(int num)
{
    int nrOfSigns = 0;
    while (num > 0)
    {
        ++nrOfSigns;
        num = num / 10;
    }
    return nrOfSigns;
}
 
int getSignsSum(int num, int nrOfSigns, int adapt)
{
    int sum = 0;
    num /= pow(10,adapt);
    for (int i = 0; i < nrOfSigns; ++i)
    {
        sum += num % 10;
        num /= 10;
    }
    return sum;
}
 
int main() 
{
    int chislo;
    cout << "Введите число: ";
    cin >> chislo;
    int razryad = getNrOfSigns(chislo);
    cout << razryad << "\n";
 
    int chast_1 = getSignsSum(chislo, razryad / 2, razryad & 1 == 1 ? razryad / 2 + 1 : razryad / 2);
    int chast_2 = getSignsSum(chislo, razryad / 2, 0);
    cout << chast_1 << endl;
    cout << chast_2 << endl;
    if (chast_1 > chast_2)
        cout << "First part is bigger" << endl;
    else
        cout << "Second part is bigger" << endl;
    return 0;
}
микс с вашим кодом. мозг не врубал писал что бы работало
Sickle
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
25.06.2016, 21:06  [ТС] #15
ну да
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2016, 21:06
Привет! Вот еще темы с ответами:

Числа. Подсчитать количество четных и нечетных чисел- разрядов. Найти суммы только всех четных и только нечетных, проверить какая из сумм больше - C++
Добрый день, не могу понять как же составить программу для этой задачи без использования массивов. Запросить у пользователя...

Какая из двух заданных скоростей больше? - C++
помогите нужен код решения задачи на с++. Известны две скорости: одна в километрах в час, другая - в метрах в секунду. Какая из скоростей...

Перевод чисел любой разрядности - C++
День добрый. Прошу помочь алгоритмом перевода чисел из одной системы счисления в другую - в данном случае из 8 в 10 и обратно - чисел...

С клавиатуры вводится целое число любой разрядности. Определить количество цифр в нем и их сумму - C++
С клавиатуры вводится целое число любой разрядности. Определить количество цифр в нем и их сумму Кол-во цифр уже сделал: #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.06.2016, 21:06
Ответ Создать тему
Опции темы

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