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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.81
seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
#1

Счастливый билет (сумма первых трех цифр равна сумме последних трех) - C++

31.03.2012, 16:40. Просмотров 4784. Ответов 9
Метки нет (Все метки)

Всем привет ! Нужно

Подсчитать количество счастливых билетов, у которых сумма первых трех цифр равна N.

Счастливым билетом называется билет с шестизначным номером у которого сумма первых трех цифр равна сумме последних трех.

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
template <typename T>
std::string toString(T val)
{
    std::ostringstream oss;
    oss<< val;
    return oss.str();
}
 
template<typename T>
T fromString(const std::string& s)
{
  std::istringstream iss(s);
  T res;
  iss >> res;
  return res;
}
 
 
int main()
{
    string number;
    short int param;
 
cin >> param;
char i1,i2,i3,i4,i5,i6;
 
long long i,counter;
counter =0;
for(i=100000;i<=999999;i++){
 
 number= toString(i);
i1 = number[0] ;
i2 = number[1] ;
i3 = number[2] ;
 
i4 = number[3] ;
i5 = number[4];
i6 = number[5];
 
 
 
 
if((i1+i2+i3) == (i4+i5+i6)  && (i4+i5+i6) == param) {
 
    cout << i1+i2+i3 <<" = "<<i4+i5+i6<<endl;
    counter++;}
 
                           }
 
cout << counter;
 
 
    return 0;
}

P.S. сделать нужно с использованием строк

Добавлено через 6 часов 51 минуту
переделал код ибо заметил ошибку
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
46
47
48
49
50
51
52
53
#include <iostream>
#include <string>
#include <sstream>
#include <stdlib.h>
 
using namespace std;
 
template <typename T>
std::string toString(T val)
{
    std::ostringstream oss;
    oss<< val;
    return oss.str();
}
 
template<typename T>
T fromString(const std::string& s)
{
  std::istringstream iss(s);
  T res;
  iss >> res;
  return res;
}
 
 
int main()
{
    string number;
    short int param;
 
cin >> param;
 
 
long long i,counter;
counter =0;
for(i=100000;i<=999999;i++){
 
 number= toString(i);
 
 
 
    if((atoi("number[0]")+ atoi("number[1]")+atoi("number[2]")) == (atoi("number[3]")+ atoi("number[4]")+ atoi("number[5]"))
        && (atoi("number[3]")+ atoi("number[4]")+ atoi("number[5]")) == param) {
 
    counter++;}
 
                           }
 
cout << counter;
 
 
    return 0;
}
Результат тот же - выводит 0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2012, 16:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Счастливый билет (сумма первых трех цифр равна сумме последних трех) (C++):

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

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

Подсчитать количество "счастливых" шестизначных автобусных билетов(сумма первых трех цифр равна сумме трех последних цифр) - C++
Подсчитать количество &quot;счастливых&quot; шестизначных автобусных билетов, т.е таких, в номерах которых сумма трех первых цифр равна сумме трех...

Определить, равна ли сумма первых двух цифр четырехзначного числа сумме двух последних цифр - C++
Определить, равна ли сумма первых двух цифр данного четырехзначного числа сумме двух его последних цифр. Создать программу, в которой...

составить линейную программу (сумма двух первых цифр заданного четырёхзначного числа равна сумме двух его последних цифр) - C++
составить линейную программу , печатающую значение true , если указанное высказывание является истинным , и false - в противном случае. ...

Вывести на экран элементы массива, сумма первых двух цифр равна сумме двух последних - C++
//Массив из n четырехзначных натуральных чисел. //Вывести па экран только те, у которых сумма первых двух цифр равна сумме двух...

9
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
31.03.2012, 17:24 #2
C++
1
atoi("number[0]")
->
C++
1
atoi(number[0])
и зачем все так сложно?
0
Jettard
40 / 38 / 5
Регистрация: 27.05.2010
Сообщений: 253
31.03.2012, 17:30 #3
наверное, трабл с переводом.
0
seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
31.03.2012, 17:31  [ТС] #4
villu,
C++
1
atoi(number[0])
если так, то компилятор ругается
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 17:31 #5
C++
1
2
3
4
5
6
7
8
9
int toint (char c)
{
    return (int)c-48;
} 
...
int numbers[6];
     for (int j=0;j<6;j++) 
       numbers[j]=toint(number[j]);
...
Хотя я со стрингами особо не дружу, но так вроде работает
0
seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
31.03.2012, 17:33  [ТС] #6
сложно, ибо через строки, а это условие поставленное преподом
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
31.03.2012, 17:33 #7
Цитата Сообщение от seruy-t Посмотреть сообщение
если так, то компилятор ругается
да, точно. та же у тебя не строка.
Тогда можно просто
C++
1
number[0] - '0'
делать, как уже предложили.
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 17:35 #8
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
46
47
48
49
50
#include <iostream>
#include <string>
#include <sstream>
#include <stdlib.h>
 
using namespace std;
 
template <typename T>
std::string toString(T val)
{
    std::ostringstream oss;
    oss<< val;
    return oss.str();
}
 
template<typename T>
T fromString(const std::string& s)
{
  std::istringstream iss(s);
  T res;
  iss >> res;
  return res;
}
 
int toint (char c)
{
    return (int)c-48;
} 
int main()
{
    int param;
    cout << "Param: ";
    cin >> param;
    int counter=0;
    for(int i=100000;i<=999999;i++)
    {
     string number=toString(i);
     int numbers[6];
     for (int j=0;j<6;j++) 
       numbers[j]=toint(number[j]);
     if((numbers[0]+ numbers[1]+numbers[2]) == (numbers[3]+ numbers[4]+ numbers[5])
        && (numbers[3]+ numbers[4]+ numbers[5]) == param) 
     {
      counter++;
     }
    }
    cout << counter;
    system("pause"); 
    return 0;
}
1
dr.curse
389 / 345 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
31.03.2012, 17:55 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstdlib>
bool lucky(char *s,int n)
{
    return ((s[0]+s[1]+s[2]==s[3]+s[4]+s[5]) && s[0]+s[1]+s[2]==);
}
int main()
{
    int n,k=0;
    std::cin >> n;
    for (int i=100000;i<=999999;i++)
    {
        char buf[128];
        itoa(i,buf,10);
        k+=lucky(buf,n);
    }
    std::cout << k;
    return 0;
}
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
31.03.2012, 18:01 #10
Надо через стринг, а не char *

Добавлено через 3 минуты
А вообще да, можно сразу чарами без перевода
C++
1
2
3
4
5
6
7
8
9
    for(int i=100000;i<=999999;i++)
    {
     string number=toString(i);
     if((number[0]+ number[1]+number[2]) == (number[3]+ number[4]+ number[5])
        && (number[3]+ number[4]+ number[5]) == (3*'0'+param))
     {
      counter++;
     }
    }
0
31.03.2012, 18:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2012, 18:01
Привет! Вот еще темы с ответами:

Найти все четырехзначные числа у которых сумма первых двух цифр равна сумме двух последних - C++
найти все четырехзначные числа у которых сумма первых двух цифр равна сумме двух последних.

определить, совпадают ли суммы первых и последних трех цифр шестизначного числа - C++
вот мой код. компилятор выдаёт ошибку в 4ой строке. не могу понять как исправить.. #include &lt;iostream&gt; using namespace std main(){...

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

Вывести на экран только те, у которых сумма первых двух цифер равна сумме двух последних. - C++
Дан массив из n четырёхзначных натуральных чисел. Вывести на экран только те, у которых сумма первых двух цифер равна сумме двух последних.


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

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

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