C++言語について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
とる

C++言語について

#1

投稿記事 by とる » 1年前

ここを記述ということだけを記載して、
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
と出力するプログラムを作りたいのですが、
上手くいきません...

コード: 全て選択

#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;
}

かずま

Re: C++言語について

#2

投稿記事 by かずま » 1年前

とる さんが書きました:ここを記述ということだけを記載して、
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
と出力するプログラムを作りたいのですが、
これでいいのでしょうか?

コード: 全て選択

#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;
}

アバター
usao
記事: 1368
登録日時: 4年前

Re: C++言語について

#3

投稿記事 by usao » 1年前

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
>と出力する

という条件なので,そうじゃない入力をされた場合には,てきとーに違う出力をするようにしました.

コード: 全て選択

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 );
}

とる

Re: C++言語について

#4

投稿記事 by とる » 1年前

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

コード: 全て選択

 
int pop()
{
    int v = buf[--idx];
    return (v > 10 ? 31 : 11) - v;
}

かずま

Re: C++言語について

#5

投稿記事 by かずま » 1年前

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

コード: 全て選択

int pop()
{
    int v = buf[--idx];
    int t;
    if (v > 10)
        t = 31;
    else
        t = 11;
    return t - v;
}
おまけ

入力がなんであっても、1 2 3 ... 20 を表示

コード: 全て選択

void empty() { }
void push(int v) { }
int pop() { return ++idx; }
入力がなんであっても、入力通り表示 (main は変更しないとして)

コード: 全て選択

void empty() { }
void push(int v) { buf[idx++] = v; }
int pop() { return buf[10 - idx--];

返信

“C言語何でも質問掲示板” へ戻る