合計 昨日 今日

C++言語について

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: とる
[URL]
Date: 2017年4月20日(木) 10:21
No: 1
(OFFLINE)

 C++言語について

ここを記述ということだけを記載して、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
と入力したら、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
と出力するプログラムを作りたいのですが、
上手くいきません...


コード[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
#include <iostream>
 
using namespace std;
 
int idx;
int buf[10];
 
 
void empty()
{
//ここを記述
}
 
 
void push(int v)
{
//ここを記述
}
 
int pop()
{
//ここを記述
}
 
 
int main()
{
empty();
int v;
 
for (int i=0;i < 10 ;i++){
cin >> v; push(v);
}
 
for(int i=0;i<10;i++){
cout << pop() << " ";
}
 
for (int i=0;i<10;i++){
cin >> v; push(v);
}
 
for(int i=0;i<10;i++){
cout << pop() << " ";
}
 
cout << endl;
    return 0;
}

Name: かずま
[URL]
Date: 2017年4月20日(木) 14:03
No: 2
(OFFLINE)

 Re: C++言語について

とる さんが書きました:ここを記述ということだけを記載して、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
と入力したら、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
と出力するプログラムを作りたいのですが、

これでいいのでしょうか?
コード[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
#include <iostream>
 
using namespace std;
 
int idx;
int buf[10];
 
void empty()
{
    idx = 0;
}
 
void push(int v)
{
    buf[idx++] = v;
}
 
int pop()
{
    int v = buf[--idx];
    return (v > 10 ? 31 : 11) - v;
}
 
int main()
{
    empty();
    int v;
     
    for (int i = 0; i < 10; i++) {
        cin >> v; push(v);
    }
     
    for (int i = 0; i < 10; i++) {
        cout << pop() << " ";
    }
     
    for (int i = 0; i < 10; i++) {
        cin >> v; push(v);
    }
     
    for (int i = 0; i < 10; i++) {
        cout << pop() << " ";
    }
     
    cout << endl;
    return 0;
}

Name: usao
[URL]
ハッカー(136,723 ポイント)
Date: 2017年4月20日(木) 14:44
No: 3
(OFFLINE)

 Re: C++言語について

C++初心者ですが,これでどうでしょうか?

>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
>と入力したら、
>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
>と出力する

という条件なので,そうじゃない入力をされた場合には,てきとーに違う出力をするようにしました.
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void empty()
{
    buf[0] = 1;
    buf[1] = 0;
}
 
 
void push(int v)
{
    if( buf[0]==v )++buf[0];
}
 
int pop()
{
    return ( buf[1]<buf[0]  ?  ++buf[1] : -1 );
}

Name: とる
[URL]
Date: 2017年4月20日(木) 20:06
No: 4
(OFFLINE)

 Re: C++言語について

ここのリターンのところはどういう意味でしょうか..?
もう少し簡単な表現に置き換えることはできますか?

コード[C++]: 全て選択
1
2
3
4
5
6
 
int pop()
{
    int v = buf[--idx];
    return (v > 10 ? 31 : 11) - v;
}

Name: かずま
[URL]
Date: 2017年4月20日(木) 20:23
No: 5
(OFFLINE)

 Re: C++言語について

とる さんが書きました:ここのリターンのところはどういう意味でしょうか..?
もう少し簡単な表現に置き換えることはできますか?

コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
int pop()
{
    int v = buf[--idx];
    int t;
    if (v > 10)
        t = 31;
    else
        t = 11;
    return t - v;
}


おまけ

入力がなんであっても、1 2 3 ... 20 を表示
コード[C++]: 全て選択
1
2
3
void empty() { }
void push(int v) { }
int pop() { return ++idx; }

入力がなんであっても、入力通り表示 (main は変更しないとして)
コード[C++]: 全て選択
1
2
3
void empty() { }
void push(int v) { buf[idx++] = v; }
int pop() { return buf[10 - idx--];


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: 三郎 & ゲスト[11人]