(C++)queの事についてです。

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

(C++)queの事についてです。

#1

投稿記事 by ドドド素人 » 8年前

queをクラスとして実現したいのですが、
このmain関数を変えずに作るには
emptyやpushやpopなどはどうしらた良いのでしょうか...

コード:

#include <iostream>

using namespace std;



int main()
{
que a,b;

int n,v;

cin>>n;
a.empty();
b.empty();
for(int i=0;i<n;i++){
cin>>v;a.push(v);
cin>>v;b.push(v);
}
for(int i=0;i<n;i++){
cout<<a.pop()<<endl;
cout<<b.pop()<<endl;
}
return 0;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: (C++)queの事についてです。

#2

投稿記事 by みけCAT » 8年前

まず、ここで作りたい「que」に求められる仕様を日本語で説明してください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

かずま

Re: (C++)queの事についてです。

#3

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

que とは何ですか?
何をするものですか?
empty, push, pos は、どういう動作をすればいいのですか?
詳しく説明してください。

試しに、que をクラスとして実現してみました。
empty, push, pos をメソッドとして実装してみました。
main は、インデントだけを変えました。

コード:

#include <iostream>
 
using namespace std;
 
class que {
public:
    void empty() {}
    void push(int v) {}
    int pop() const { static int v; return ++v; }
};

int main()
{
    que a, b;
    int n, v;

    cin >> n;
    a.empty();
    b.empty();
    for (int i = 0; i < n; i++) {
        cin >> v;
        a.push(v);
        cin >> v;
        b.push(v);
    }
    for (int i = 0; i < n; i++) {
        cout << a.pop() << endl;
        cout << b.pop() << endl;
    }
    return 0;
}
実行結果

コード:

2  (入力)
1  (入力)
2  (入力)
3  (入力)
4  (入力)
1
2
3
4
どういう入力に対して、どういう出力を期待していますか?

ドドド素人

Re: (C++)queの事についてです。

#4

投稿記事 by ドドド素人 » 8年前

返信ありがとうございます。

4↓
1 2 3 4 5 6 7 8
と入力したら、
1
2
3
4
5
6
7
8
と出力するようにしたいです。

ドドド素人4

Re: (C++)queの事についてです。

#5

投稿記事 by ドドド素人4 » 8年前

4↓
10 20 30 40 50 60 70 80
と入力したら、
10
20
30
40
50
60
70
80
というふうに、入力した数値通りのものを表示させたいです。

かずま

Re: (C++)queの事についてです。

#6

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

ドドド素人 さんが書きました:4↓
1 2 3 4 5 6 7 8
と入力したら、
1
2
3
4
5
6
7
8
と出力するようにしたいです。
ということは、私の解答でいいということですか?
そのプログラムを実行してみましたか?

ドドド素人

Re: (C++)queの事についてです。

#7

投稿記事 by ドドド素人 » 8年前

実行してみたのですが、
10 20 30 40 50 60 70 80
と入力しても

2
3
4
5
6
7
8
となってしまいます...

かずま

Re: (C++)queの事についてです。

#8

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

これでどうでしょうか?

コード:

#include <iostream>
 
using namespace std;
 
class que {
    int b[100];
    int i, o;
public:
    void empty() { i = o = 0; }
    void push(int v) { b[i++] = v; }
    int pop() { return b[o++]; }
};
 
int main()
{
    que a, b;
    int n, v;
 
    cin >> n;
    a.empty();
    b.empty();
    for (int i = 0; i < n; i++) {
        cin >> v;
        a.push(v);
        cin >> v;
        b.push(v);
    }
    for (int i = 0; i < n; i++) {
        cout << a.pop() << endl;
        cout << b.pop() << endl;
    }
    return 0;
}
これはだめなんです。
何が問題だと思いますか?

ドドド素人

Re: (C++)queの事についてです。

#9

投稿記事 by ドドド素人 » 8年前

何故ダメなのですか?!?!

かずま

Re: (C++)queの事についてです。

#10

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

ドドド素人 さんが書きました:何故ダメなのですか?!?!
配列の範囲外参照の可能性が気になりませんか?
push の回数より、pop の回数が多い場合の対応は?

返信

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