- ベストアンサー
コマンドプロンプトでのプログラム実行結果を生成する方法
- コマンドプロンプトでコンパイラして、指定したプログラムを実行すると、2013、hello、nagoya、kobe、osakaという結果が表示される。
- プログラムは初心者には難しいかもしれないが、指定した結果を生成するためには、ループ構造を使用する必要がある。
- プログラムが間違っている可能性もあるので、確認してみてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
あなたが書かれたものを改造するなら以下のようにしてください。 -------------------------------------------------- #include <stdio.h> void main(void) { int j; for(j=1;j <= 5;j++) { printf("\n"); printf("2013\n"); if (j == 1) continue; printf("hello\n"); if (j == 2) continue; printf("nagoya\n"); if (j == 3) continue; printf("kobe\n"); if (j == 4) continue; printf("osaka\n"); } } -------------------------------------------------- もっと、シンプルにしたいということであれば、以下のようにしてください。 --------------------------------------------------- #include <stdio.h> void main(void) { int i,j; char moji[][10] = {"2013\n","hello\n","nagoya\n","kobe\n","osaka\n"}; for(i=0;i < 5;i++) { for(j=0;j < 5;j++) { printf(moji[j]); if (i==j) break; } printf("\n"); } } -------------------------------------------------------------------------------
その他の回答 (5)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
#include <stdio.h> /* strs[0]~strs[n-1]をプリントする */ void print_n(const char* strs[], int n) { int i; for ( i = 0; i < n ; ++i ) { printf("%s\n", strs[i]); } } int main() { int i; const char* table[] = { "2013", "hello", "nagoya", "kobe", "osaka" }; for ( i = 1; i <= 5; ++i ) { print_n(table, i); printf("\n"); } return 0; }
- maru_yoshi_
- ベストアンサー率39% (17/43)
charではなく汎用テキストで書いてみる #include "stdafx.h" _TCHAR* strings[] = {_T("2013"),_T("hello"),_T("nagoya"),_T("kobe"),_T("osaka"),}; int _tmain(int argc, _TCHAR* argv[]) { for (int i = 0; i < sizeof(strings)/sizeof(strings[0]); ++i) { for (int j = 0; j <= i; ++j) { _tprintf(_T("%s\n"), strings[j]); } _tprintf(_T("\n")); } return 0; } ちなみに「コンパイラして」とは? 「コンパイルして」ならわかるが。
- Tasuke22
- ベストアンサー率33% (1799/5383)
知らないことを教えてもらうというのは大いに結構ですが、このような単純な論理の組立が出来ないようであれば、先行きが無いと思いますよ。 今のロジックでは 2013 hello nagoya kobe osaka が繰り返し回数だけプリントされる、というのは理解されていますか? 最初は、forを使わずに、プリントしたいものを羅列したら如何ですか? そこからforを使うことによってどうプログラムが短くなるか考えたらどうでしょう。
- Wr5
- ベストアンサー率53% (2173/4061)
"hello\n"を表示させる条件はなんですか? 同様に"nagoya\n"を表示させる条件はなんですか? # jがいくつ以上の時に表示指せる必要があるんでしょう? というか…二重ループにする必要ありますか??? for(5回のループ) ループ1回目以上なら"2013\n"出力 ループ2回目以上なら"hello\n"出力 : みたいに処理できませんか?
補足
すいません。その方法がわからないんです。(泣)
- koujikuu
- ベストアンサー率43% (429/993)
if文にて j>1 の条件を付け 条件を満たした時のみ printf("hello\n"); を表示する if文にて j>2 の条件を付け 条件を満たした時のみ printf("nagoya\n"); を表示する if文にて j>3 の条件を付け 条件を満たした時のみ printf("kobe\n"); を表示する printf("osaka\n"); も同じように for i ループは不要 又は、文字列を配列変数に格納し、for i ループで表示する
補足
具体的にプログラミングするとどういうプログラムになりますか?理解に乏しくてすみません。。。
補足
それは理解しております。 羅列はしましたが、もっとシンプルに効率よくする方法をしろとのことで・・・。