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

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

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

Author24 — интернет-сервис помощи студентам
Прошу помочь господа с этой дилеммой, проблема с нахождением этих цифр, в очередной раз. Вот что у меня получилось:
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; 
    }
Буду благодарен если будет за комментирована последовательность действий. Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2016, 18:53
Ответы с готовыми решениями:

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

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

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

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

16
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
25.06.2016, 19:12 2
сначала делаете
C++
1
chislo = chislo / 10;
а потом на той же переменной где значение 0
C++
1
chislo = chislo % 10;
Добавлено через 6 минут
если части числа нужно равнять как сумму разрядов то нужно пощитать от 0 до razryad/2 и от razryad/2 до razryad
1
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
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;
1
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
еще не отрабатывали(
0
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
25.06.2016, 19:53 5
вы переменную число перезатираете то есть у вас выходит вы щитаете число разрядов. работаете с переменной chislo а потом хотите пощитать сумму и опять берете ту же переменную chislo но она содержит уже не исходное значение а 0. Зделайте дубликат и юзайте его. перед каждим циклом скопировали из дубликата значение с chislo и вычислели чего нужно
1
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";
    }
0
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
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 секунд
вот примерно вот так криво
0
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
25.06.2016, 20:21  [ТС] 8
код не рабочий
0
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
25.06.2016, 20:40 9
сформулируте на основе чего должны сравниваться части числа? сумма разрядов двух частей?
0
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
25.06.2016, 20:43  [ТС] 10
ну да, то есть допустим число 1234 12 и 34, препод сказала что хотя бы четные сделайте
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
25.06.2016, 20:54 11
Sickle, а число 12345 на какие два числа делить? на 123 и 45 или на 12 345 ?
Четко задание скажите.
0
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
25.06.2016, 20:59  [ТС] 12
кратные например 1234, 123456, 12345678
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
25.06.2016, 21:00 13
Sickle, число цифр кратно двум?
0
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
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;
}
микс с вашим кодом. мозг не врубал писал что бы работало
1
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
25.06.2016, 21:06  [ТС] 15
ну да
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 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, но тут, я думаю, ты доделаешь сам
1
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 17
25.06.2016, 22:32  [ТС] 17
Оу, пожалуй это перебор, мне бы на основе циклов вывести ответ, массивы еще куда не шло, ну вот по принципу моего кода, не рабочего правда=)
0
25.06.2016, 22:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2016, 22:32
Помогаю со студенческими работами здесь

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

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

Дано четырехзначное натуральное число. Выяснить какая из двух его частей больше
Дано четырехзначное натуральное число. Выяснить какая из двух его частей больше.

Найти, какая из частей числа - левая или правая - больше (оператор for)
5. Найти какая из частей числа - левая или правая больше. Т.е. 1265 - получаем два числа 12 и 65....


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru