Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Gaveyn
95 / 94 / 11
Регистрация: 12.09.2016
Сообщений: 168
1

Прибавить к строке целое число

22.08.2017, 17:37. Просмотров 885. Ответов 10
Метки нет (Все метки)

Обычная лотерея.Хочу реализовать что-то вроде истории,где описывалось бы,сколько ты выйграл и сколько проиграл.Но не как не могу прибавить к строке целое число Пробовал atoi,itoa,inttostr - ничего не получается
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <string>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
int main()
{
    string history="";
    srand(time(NULL));
    int rate; //ставка
    int random; // рандомное число
        yes:
    int points=100; //количество поинтов
    int selection; //выбор рандомного числа
    while(points>0)
    {
 
        cout<<"You have "<<points<< " points"<<endl;
    bid:
        cout<<"Enter your bid: ";
    cin>>rate;
    if(rate>points)
    {
        cout<<"You do not have "<<rate<<" points!True again!"<<endl;
        goto bid;
    }
    cout<<"Enter a number between 1 and 5 : ";
selection:
    cin>>selection;
 
    if(selection<1||selection>5)
    {
        cout<<"Enter a number between 1 and 5!True again!";
        goto selection;
    }
 
    random=rand()%5+1;
    cout<<"Number dropped: "<<random<<endl;
    if(selection==random)
    {
        cout<<"You win: "<<rate*2<<" points"<<endl;
    points+=rate*2;
    history+="You win : "+/*вот тут должно прибовлять выйгрыш*/+'\n';
 
    }
    else
    {
        cout<<"To regret, you lost "<<endl<<endl;
        points-=rate;
        history+="You lost: "+/*вот тут должно прибавлять проигрыш*/'\n';
        
    }
        cout<<"To continue, press any key"<<endl<<endl;
    _getch();
    system("cls");
    
    }
    cout<<"You Lose!";
        otv:
    cout<<"True again?(Yes/No/History):  ";
    string otv;
    cin>>otv;
    if(otv=="Yes"||otv=="yes")
    {
        system("cls");
        goto yes;
    }
    else if(otv=="No"||otv=="no")
    {
        return 0;
    }
    else if(otv=="history"||otv=="History")
    {
        cout<<"\n\n\n"<<history<<"\n\n\n";
        goto otv;
    }
    else{
        cout<<"Answer "yes" , "no" or "history"! "<<endl;
        goto otv;
    }
return 0;   
}
P.S. Знаю,что
C++
1
goto
это плохо
1
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2017, 17:37
Ответы с готовыми решениями:

Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его. Вывести полученное число
Дано целое число. Если оно является положительным, то прибавить к нему 1; в...

Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае вычесть из него
Когда ввожу положительное число,всё работает, ввожу отрицательное к примеру...

Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае вычесть из него 2
Дано целое число. Если оно является положительным, то прибавить к нему 1; в...

Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его
Подскажите пожалуйста или правильно я написал решения,а то всё работает,но мне...

Дано целое число.Если оно является положительным,то прибавить к нему 1;если отрицательное,то вычесть из него 2
Дано целое число.Если оно является положительным,то прибавить к нему 1;если...

10
anapshy
214 / 207 / 184
Регистрация: 14.11.2016
Сообщений: 808
Завершенные тесты: 3
22.08.2017, 17:47 2
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string> // string    to_string    stoi
 
int main(void)
{
    std::string str("99");
    int value(900);
    str = std::to_string(std::stoi(str) + value);
    std::cout << str << std::endl;
}
to_string - привести числовой тип к string
stoi (string to int) - привести string к int
1
повар1
197 / 160 / 142
Регистрация: 24.02.2017
Сообщений: 649
Завершенные тесты: 1
22.08.2017, 20:55 3
это работает

C++
1
2
3
4
5
string history="";
int value=55;
char str[10];
history="You win : ";
history+=itoa(value,str,10);
1
Gaveyn
95 / 94 / 11
Регистрация: 12.09.2016
Сообщений: 168
22.08.2017, 22:10  [ТС] 4
[Error] 'itoa' was not declared in this scope //для первого ответа


[Error] 'to_string' is not a member of 'std' // для второго
[Error] 'stoi' is not a member of 'std'
1
повар1
197 / 160 / 142
Регистрация: 24.02.2017
Сообщений: 649
Завершенные тесты: 1
22.08.2017, 22:23 5
Прототип функции itoa:
char *itoa( int value, char * string, int radix );

Заголовочный файл
Название Язык
stdlib.h С
cstdlib С++
0
Gaveyn
95 / 94 / 11
Регистрация: 12.09.2016
Сообщений: 168
22.08.2017, 22:40  [ТС] 6
Цитата Сообщение от повар1 Посмотреть сообщение
Прототип функции itoa:
char *itoa( int value, char * string, int radix );
Заголовочный файл
Название Язык
stdlib.h С
cstdlib С++
Хоть убейте,не получается
вот так делаю
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <iostream>
#include <string>
#include <conio.h>
#include <time.h>
#include <windows.h>
#include <cstdlib>
using namespace std;
int main()
{
char str[10];
    srand(time(NULL));
    int rate; //ставка
    int selection; //выбор рандомного числа
    int random; // рандомное число
        yes:
    string history="";
    int points=100; //количество поинтов
    while(points>0)
    {
 
        cout<<"You have "<<points<< " points"<<endl;
    bid:
        cout<<"Enter your bid: ";
    cin>>rate;
    if(rate>points)
    {
        cout<<"You do not have "<<rate<<" points!True again!"<<endl;
        goto bid;
    }
    cout<<"Enter a number between 1 and 5 : ";
selection:
    cin>>selection;
 
    if(selection<1||selection>5)
    {
        cout<<"Enter a number between 1 and 5!True again!";
        goto selection;
    }
 
    random=rand()%5+1;
    cout<<"Number dropped: "<<random<<endl;
    if(selection==random)
    {
        cout<<"You win: "<<rate*2<<" points"<<endl;
    points+=rate*2;
    history+="You win : "+itoa(rate*2,str,10);+'\n';
 
    }
    else
    {
        cout<<"To regret, you lost "<<endl<<endl;
        points-=rate;
        history+="You lost: "+itoa(rate,str,10);+'\n';
        
    }
        cout<<"To continue, press any key"<<endl<<endl;
    _getch();
    system("cls");
    
    }
    cout<<"You Lose!";
        otv:
    cout<<"True again?(Yes/No/History):  ";
    string otv;
    cin>>otv;
    if(otv=="Yes"||otv=="yes")
    {
        system("cls");
        goto yes;
    }
    else if(otv=="No"||otv=="no")
    {
        return 0;
    }
    else if(otv=="history"||otv=="History")
    {
        cout<<"\n\n\n"<<history<<"\n\n\n";
        goto otv;
    }
    else{
        cout<<"Answer "yes" , "no" or "history"! "<<endl;
        goto otv;
    }
return 0;   
}

In function 'int main()':
[Error] invalid operands of types 'const char [11]' and 'char*' to binary 'operator+'
[Error] invalid operands of types 'const char [11]' and 'char*' to binary 'operator+'
1
повар1
197 / 160 / 142
Регистрация: 24.02.2017
Сообщений: 649
Завершенные тесты: 1
22.08.2017, 22:52 7
Лучший ответ Сообщение было отмечено Gaveyn как решение

Решение

C++
1
char str[10];
замени на
C++
1
char str[20];

C++
1
 history+="You win : "+itoa(rate*2,str,10);+'\n';
замени на

C++
1
2
history="You win : ";
history+=itoa(rate*2,str,10);
и замени
C++
1
history+="You lost: "+itoa(rate,str,10);+'\n';
на
C++
1
2
history="You lost: ";
history+=itoa(rate*2,str,10);
1
Gaveyn
95 / 94 / 11
Регистрация: 12.09.2016
Сообщений: 168
22.08.2017, 23:13  [ТС] 8
Спасибо большое!Заработало!
1
Croessmah
++Ͻ
14741 / 8423 / 1597
Регистрация: 27.09.2012
Сообщений: 20,718
Записей в блоге: 2
Завершенные тесты: 1
23.08.2017, 05:52 9
Цитата Сообщение от повар1 Посмотреть сообщение
Прототип функции itoa:
char *itoa( int value, char * string, int radix );
Заголовочный файл
Название Язык
stdlib.h С
cstdlib С++
itoa - не стандартная функция и вполне может отсутствовать:
http://rextester.com/PWRDD45315
0
повар1
197 / 160 / 142
Регистрация: 24.02.2017
Сообщений: 649
Завершенные тесты: 1
23.08.2017, 08:45 10
Цитата Сообщение от Croessmah Посмотреть сообщение
itoa - не стандартная функция и вполне может отсутствовать:
http://rextester.com/PWRDD45315
там есть и другие компиляторы, где itoa присутствует:
http://rextester.com/l/cpp_online_compiler_visual
0
ValeryS
Модератор
7317 / 5559 / 704
Регистрация: 14.02.2011
Сообщений: 18,851
23.08.2017, 08:55 11
а чем старый добрый sprintf не угодил
C++
1
2
3
4
5
char buf[256];
int a=10;
int b=20;
char txt[]=" != ";
sprintf(buf," %d%s%d",a,txt,b);
0
23.08.2017, 08:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2017, 08:55

Дано целое число. Если оно является нечетным положительным, то прибавить к нему 1, если отрицательным, то вычесть 2, если нулевым, то заменить на 10
Дано целое число. Если оно является нечетным положительным, то прибавить к нему...

Проверить, есть ли в строке из символов целое число
Как проверить, есть ли в строке из символов целое число?

Составить функцию, которая, получив целое число определяет, уменьшается ли оно в целое число раз
задание такое Составить функцию, которая, получив целое число определяет,...


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

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

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