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

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

Восстановить пароль Регистрация
 
Sickle
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
25.06.2016, 18:53     Проверить какая из двух частей числа любой разрядности больше #1
Прошу помочь господа с этой дилеммой, проблема с нахождением этих цифр, в очередной раз. Вот что у меня получилось:
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++ Даны три числа. Проверить, не является ли одно из них суммой двух других.
C++ Перевод чисел любой разрядности
Написать программу, которая определяет: какая из цифр двухзначного числа больше: первая или вторая; C++
Проверить, больше ли сумма цифр заданного четырехзначного числа, чем 10 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 427
25.06.2016, 19:12     Проверить какая из двух частей числа любой разрядности больше #2
сначала делаете
C++
1
chislo = chislo / 10;
а потом на той же переменной где значение 0
C++
1
chislo = chislo % 10;
Добавлено через 6 минут
если части числа нужно равнять как сумму разрядов то нужно пощитать от 0 до razryad/2 и от razryad/2 до razryad
Даценд
Модератор
 Аватар для Даценд
2494 / 2409 / 1234
Регистрация: 20.04.2015
Сообщений: 4,597
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
Сообщений: 427
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
Сообщений: 427
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
Сообщений: 427
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
Нарушитель
294 / 280 / 61
Регистрация: 27.01.2015
Сообщений: 1,888
Записей в блоге: 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
Нарушитель
294 / 280 / 61
Регистрация: 27.01.2015
Сообщений: 1,888
Записей в блоге: 1
Завершенные тесты: 1
25.06.2016, 21:00     Проверить какая из двух частей числа любой разрядности больше #13
Sickle, число цифр кратно двум?
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 427
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
ну да
Ferrari F1
Нарушитель
294 / 280 / 61
Регистрация: 27.01.2015
Сообщений: 1,888
Записей в блоге: 1
Завершенные тесты: 1
25.06.2016, 21:51     Проверить какая из двух частей числа любой разрядности больше #16
Sickle, а такой вариант препод примет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string number;
    cin >> number;
    cout <<
        (
        stoull(string(number.cbegin(), number.cbegin() + number.size() / 2))
        >
        stoull(string(number.cbegin() + number.size() / 2, number.cend())) ?
        "1st part is greater" : "2nd part is greater"
        ) << endl;
    system("pause");
    return 0;
}
Правда, я не учел ситуацию, если пользователь ввел 1212, но тут, я думаю, ты доделаешь сам
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2016, 22:32     Проверить какая из двух частей числа любой разрядности больше
Еще ссылки по теме:

Как сделать из двух чисел третье, уникальное для любой комбинации первых двух? C++
Какая из двух заданных скоростей больше? C++
C++ Проверить сумма какой из половин числа ЛЮБОЙ разрядности больше

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

Или воспользуйтесь поиском по форуму:
Sickle
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
25.06.2016, 22:32  [ТС]     Проверить какая из двух частей числа любой разрядности больше #17
Оу, пожалуй это перебор, мне бы на основе циклов вывести ответ, массивы еще куда не шло, ну вот по принципу моего кода, не рабочего правда=)
Yandex
Объявления
25.06.2016, 22:32     Проверить какая из двух частей числа любой разрядности больше
Ответ Создать тему
Опции темы

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