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

Функция: получить шестизначное число и проверить, равна ли сумма первых трех цифр сумме последних трех - C++

Восстановить пароль Регистрация
 
казуист
0 / 0 / 0
Регистрация: 05.01.2016
Сообщений: 20
26.01.2016, 18:45     Функция: получить шестизначное число и проверить, равна ли сумма первых трех цифр сумме последних трех #1
Написать функцию, которая принимает целое шестизначное число и проверяет равна ли сумма первых трех цифр сумме последних трех цифр(счастливый билет). Функция возвращает истину, если число счастливое (суммы равны) и ложь, если не счастливое (суммы не равны).
Где я допустил ошибки в моем решении?


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 "stdafx.h"
#include <iostream>
using namespace std;
 
bool H (int a1, int a2, int a3, int a4, int a5, int a6);
void main()
{
    setlocale(LC_CTYPE, "rus");
        int n;
    cout << "Введите шестизначное число = ";
    cin >> n;
    cout << H(n) << endl;
}
bool H (int a1, int a2, int a3, int a4, int a5, int a6);
{
    bool x;
    a1 = num / 100000;
    a2 = num / 10000 % 10;
    a3 = num / 1000 % 10;
    a4 = num / 100 % 10;
    a5 = num / 10 % 10;
    a6 = num % 10;
}
    if (a1 + a2 + a3 == a4 + a5 + a6)
        x = 1;//true
    else
        x = 0;//false
    return x;
 
cin.get(); cin.get();
    }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2016, 18:45     Функция: получить шестизначное число и проверить, равна ли сумма первых трех цифр сумме последних трех
Посмотрите здесь:

C++ Натуральное число, в котором n цифр, если сумма цифр возведённая в nую степень равна числу то вы вывесте число на экран(интервал чисел от 1 до k)
Вывести на экран только те, у которых сумма первых двух цифер равна сумме двух последних. C++
Счастливый билет (сумма первых трех цифр равна сумме последних трех) C++
C++ Подсчитать количество "счастливых" шестизначных автобусных билетов(сумма первых трех цифр равна сумме трех последних цифр)
C++ определить, совпадают ли суммы первых и последних трех цифр шестизначного числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Valera_
 Аватар для _Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
26.01.2016, 18:56     Функция: получить шестизначное число и проверить, равна ли сумма первых трех цифр сумме последних трех #2
мне не нравится твой код. А если бы нужно было сумму 100 найти? Напиши нормальную функцию циклом.

Добавлено через 1 минуту
Цитата Сообщение от казуист Посмотреть сообщение
cout << H(n) << endl;
один параметр

Цитата Сообщение от казуист Посмотреть сообщение
bool H (int a1, int a2, int a3, int a4, int a5, int a6);
а тут?
ThePlague
 Аватар для ThePlague
95 / 95 / 59
Регистрация: 30.06.2015
Сообщений: 262
26.01.2016, 18:58     Функция: получить шестизначное число и проверить, равна ли сумма первых трех цифр сумме последних трех #3
казуист,
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
#include <iostream>
using namespace std;
 
bool foo(int n)
{
    int a1 = n / 100000;
    int a2 = n / 10000 % 10;
    int a3 = n / 1000 % 10;
    int a4 = n / 100 % 10;
    int a5 = n / 10 % 10;
    int a6 = n % 10;
    if ((a1 + a2 + a3) == (a4 + a5 + a6))
        return true;
    else
        return false;
}
int main()
{
    int n;
    cout << "Enter digit = ";
    cin >> n;
    cout << boolalpha << foo(n) << endl;
    return 0;
}
исправил, все работает.
но!!!
ваш код конечно не очень...лучше перепишите через цикл...
GbaLog-
Не Эксперт C++
1430 / 616 / 173
Регистрация: 24.08.2014
Сообщений: 2,495
Записей в блоге: 1
Завершенные тесты: 2
26.01.2016, 19:00     Функция: получить шестизначное число и проверить, равна ли сумма первых трех цифр сумме последних трех #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
29
30
31
#include <iostream>
using namespace std;
 
bool H (int a1, int a2, int a3, int a4, int a5, int a6);
void main() // void неправильно!!! need int
{
setlocale(LC_CTYPE, "rus");
int n;
cout << "Введите шестизначное число = ";
cin >> n;
cout << H(n) << endl; // функция принимает 6 аргументов а вы тут 1 указываете
cin.get(); // вот тут надо!
}
bool H (int a1, int a2, int a3, int a4, int a5, int a6);
{
bool x; // необязательная переменная
a1 = num / 100000;
a2 = num / 10000 % 10;
a3 = num / 1000 % 10;
a4 = num / 100 % 10;
a5 = num / 10 % 10;
a6 = num % 10;
} // Тут функция кончается :facepalm:
if ((a1 + a2 + a3) == (a4 + a5 + a6))
x = 1;//true
else
x = 0;//false
return x;
 
cin.get(); cin.get(); // это ещё зачем?
}
Стыдно должно быть!
Вот как бы я написал.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
bool h(int n) {
    int a[6] = {0};
    for( int i = 5; n; ++i ) {
        a[i] = n%10;
        n /= 10;
    }
    if( (a[0]+a[1]+a[2]) == (a[3]+a[4]+a[5]) ) return true;
    else return false;
}
 
int main() {
    int n;
    cin >> n;
    cout << boolalpha << h(n) << endl;
    cin.get();
    return 0;
}
_Valera_
 Аватар для _Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
26.01.2016, 19:15     Функция: получить шестизначное число и проверить, равна ли сумма первых трех цифр сумме последних трех #5
makfak,
Цитата Сообщение от makfak Посмотреть сообщение
for( int i = 5; n; ++i ) {
ну и как будет работать цикл?

C++
1
2
3
4
5
6
7
8
9
bool h(int n) {
    int a[6] = {0};
    for( int i = 5; n; --i ) {
        a[i] = n%10;
        n /= 10;
    }
    return  ( (a[0]+a[1]+a[2]) == (a[3]+a[4]+a[5]) ) ;
  
}
GbaLog-
Не Эксперт C++
1430 / 616 / 173
Регистрация: 24.08.2014
Сообщений: 2,495
Записей в блоге: 1
Завершенные тесты: 2
26.01.2016, 19:20     Функция: получить шестизначное число и проверить, равна ли сумма первых трех цифр сумме последних трех #6
_Valera_, Тьфу блин, под чем я был?
C++
1
for( int i = 0; n && i < 6; ++i )
_Valera_
26.01.2016, 19:24     Функция: получить шестизначное число и проверить, равна ли сумма первых трех цифр сумме последних трех
  #7

Не по теме:

Цитата Сообщение от makfak Посмотреть сообщение
_Valera_, Тьфу блин, под чем я был?
бывает.

Yandex
Объявления
26.01.2016, 19:24     Функция: получить шестизначное число и проверить, равна ли сумма первых трех цифр сумме последних трех
Ответ Создать тему
Опции темы

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