質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

988閲覧

Visual Studio Codeでの標準入力について

nana8823

総合スコア6

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/05/20 04:39

c++

以下のコードをVScodeのターミナルからg++ rootedtrees.cpp -o rootedtreesでコンパイルして、./rootedtreesで実行し、 13 0 3 1 4 10 1 2 2 3 2 0 3 0 4 3 5 6 7 5 0 6 0 7 2 8 9 8 0 9 0 10 2 11 12 11 0 12 0 のようにターミナルに打ったのですが、最後の行を打つと、出力を待たずに、ターミナルを抜けてしまいます。他のエディターでは、正しい出力が出たので、コードに間違いはないと思うのですが、どうしたらターミナルに出力が出るようになるでしょうか?

該当のソースコード

c++

1#include<iostream> 2using namespace std; 3#define MAX 100005 4#define NIL -1 5 6struct Node{int p,l,r;}; /*p=parent,l=mostleft-child,r=right-sibling*/ 7 8Node T[MAX]; 9int n, D[MAX]; 10 11void print(int u){ 12 int i,c; 13 cout<<"node"<<u<<":"; 14 cout<<"parent"<<T[u].p<<","; 15 cout<<"depth"<<D[u]<<","; 16 17 if(T[u].p==NIL)cout<<"root,"; 18 else if (T[u].l==NIL)cout<<"leaf,"; 19 else cout<<"internal node,"; 20 21 cout<<"["; 22 23 for(i=0,c=T[u].l;c!=NIL;i++,c=T[c].r){ 24 if(i)cout<<","; 25 cout<<c; 26 } 27 cout<<"]"<<endl; 28} 29 30int rec(int u,int p){ 31 D[u]=p; 32 if(T[u].r!=NIL)rec(T[u].r,p); 33 if(T[u].l!=NIL)rec(T[u].l,p+1); 34} 35 36int main(){ 37 int i,j,d,v,c,l,r; 38 cin>>n; /*number of node*/ 39 for(i-0;i<n;i++)T[i].p=T[i].l=T[i].r=NIL; 40 41 for(i=0;i<n;i++){ 42 cin>>v>>d; /*v=node number,d=number of node's child*/ 43 for(j=0;j<d;j++){ 44 cin>>c; 45 if(j==0)T[v].l=c; 46 else T[l].r=c; 47 l=c; 48 T[c].p=v; 49 } 50 } 51 for(i=0;i<n;i++){ 52 if(T[i].p==NIL)r=i; 53 } 54 55 rec(r,0); 56 for(i=0;i<n;i++)print(i); 57 58 return 0; 59} 60

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Bull

2020/05/20 07:29

デバッグはしていますか? デバッグをすれば、どこでエラー終了しているのが、わかるかもしません。 コンパイルする時は -Wall オプションをつけて、できるだけ warning が出るようにしましょう。そうすれば、プログラムの重大な間違いが見付かる可能性が高まります。
SHOMI

2020/05/20 08:49

>コードに間違いはない for (i - 0; i < n; i++) 明らかにまずいです
nana8823

2020/05/20 14:31

for (i - 0; i < n; i++)が原因でした。ありがとうございました。今後はデバッグを利用して、ミスを見つけられるようにします。
guest

回答1

0

ベストアンサー

for (i - 0; i < n; i++)for (i = 0; i < n; i++)

としたら、結果が出ますね。 (Windows10, Visual Studio 2019)

i - 1 だと、iが初期化されていないので、値が不定。
環境によって結果が異なります。従って、運が良ければ、正しく動く。

ちなみに、VisualStudio2019の CLコマンドでコンパイルすると、この箇所に警告がでます。また、関数rec()が値を返さないと、こちらはエラー。
この辺には注意すべきです。

投稿2020/05/20 12:01

pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nana8823

2020/05/20 14:27 編集

修正したら結果が出ました。コンパイルは通ってしまっていたので、タイプミスに気づけなかったようです。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問