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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.81
seruy-t
 Аватар для seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
31.03.2012, 16:40     Счастливый билет (сумма первых трех цифр равна сумме последних трех) #1
Всем привет ! Нужно

Подсчитать количество счастливых билетов, у которых сумма первых трех цифр равна 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2012, 16:40     Счастливый билет (сумма первых трех цифр равна сумме последних трех)
Посмотрите здесь:

C++ дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no"
Вывести на экран только те, у которых сумма первых двух цифер равна сумме двух последних. C++
C++ составить линейную программу (сумма двух первых цифр заданного четырёхзначного числа равна сумме двух его последних цифр)
C++ Среди чисел найти все, у которых сумма первых двух равна сумме последних двух
C++ Подсчитать количество "счастливых" шестизначных автобусных билетов(сумма первых трех цифр равна сумме трех последних цифр)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
31.03.2012, 17:24     Счастливый билет (сумма первых трех цифр равна сумме последних трех) #2
C++
1
atoi("number[0]")
->
C++
1
atoi(number[0])
и зачем все так сложно?
Jettard
 Аватар для Jettard
40 / 38 / 5
Регистрация: 27.05.2010
Сообщений: 253
31.03.2012, 17:30     Счастливый билет (сумма первых трех цифр равна сумме последних трех) #3
наверное, трабл с переводом.
seruy-t
 Аватар для seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
31.03.2012, 17:31  [ТС]     Счастливый билет (сумма первых трех цифр равна сумме последних трех) #4
villu,
C++
1
atoi(number[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]);
...
Хотя я со стрингами особо не дружу, но так вроде работает
seruy-t
 Аватар для seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
31.03.2012, 17:33  [ТС]     Счастливый билет (сумма первых трех цифр равна сумме последних трех) #6
сложно, ибо через строки, а это условие поставленное преподом
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
31.03.2012, 17:33     Счастливый билет (сумма первых трех цифр равна сумме последних трех) #7
Цитата Сообщение от seruy-t Посмотреть сообщение
если так, то компилятор ругается
да, точно. та же у тебя не строка.
Тогда можно просто
C++
1
number[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;
}
dr.curse
 Аватар для dr.curse
386 / 342 / 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2012, 18:01     Счастливый билет (сумма первых трех цифр равна сумме последних трех)
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
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++;
     }
    }
Yandex
Объявления
31.03.2012, 18:01     Счастливый билет (сумма первых трех цифр равна сумме последних трех)
Ответ Создать тему
Опции темы

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