• 締切済み

プログラミングの練習中です。

こんにちは。 私はとある大学で機械工学を勉強している学生です。 C言語の練習をしようと、色々なプログラミングをやっていて、ふとやってみたくなったことがあるのですが・・・ 手元に手ごろなテキストもないし、学校の課題というわけでもないのでもらった資料(←これを見て練習しています)にもそれらしいものは載っていないし、ググろうにもその動作をさせる方法の呼び名も見当がつきません。そもそもできるのかどうかも今の私にはわかりません。 っと言うことで質問してみました。 それで、やってみたい事というのは、printf関数などで打ち込んだ、たとえば、   「あいうえお」   「かきくけこ」   「さしすせそ」 という文があったとします。 これを実行したとき、最初の「あいうえお」が表示されたところで、いったん止まり、 そこでenterキーか何かを押すと、次の文である「かきくけこ」が表示され、以下同じように最後まで続く、というようなことをやってみたいんです。 「そんなことして何の意味があるの?」とお思いでしょう。 すみません、ただの興味本位です。 興味本位ですが、今後どんな課題を出されるか分からないという不安もありますので、割と強く情報を欲しています。 具体的な方法でなくとも、 「ここのサイト見てみるといいよ」 とか 「キミみたいな初心者は『(お勧めのテキスト)』でも読んでなさい。」 等の意見でも、全力で大歓迎です。 皆様のご助力をお願いいたします。

みんなの回答

回答No.4

#2さんのように、getchar()を使うとこんな感じになります。 http://www9.plala.or.jp/sgwr-t/c/sec08.html ただ、プログラミングするためには、文字配列と若干のポインターの知識が必要です。 /* By MacOSX ----- 実行結果 ----- Hit Enter key to continue. 1: abcd 2: efgh 3: ijkl */ #include <stdio.h> int main(void) { char *dat[]={"abcd","efgh", "ijkl"}; int c, i; printf("Hit Enter key to continue.\n"); for(i=0; i<3; i++) { printf("%d: %s", i + 1, dat[i]); getchar(); } return 0; }

全文を見る
すると、全ての回答が全文表示されます。
  • Visar
  • ベストアンサー率19% (17/87)
回答No.3

つまり、表示行数を指定できるmoreコマンドの様な物を 作りたいと言うことですか? 参照URLで簡単なmoreコマンドの考え方を 解説されていますので参考になりませんか? 以上です。

参考URL:
http://masudahp.web.fc2.com/cl/tool/tool05.html
全文を見る
すると、全ての回答が全文表示されます。
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

getcharでも良さそう。 なお「任意のキー」で、というのは汎用的な方法がありません。

全文を見る
すると、全ての回答が全文表示されます。
  • k_kota
  • ベストアンサー率19% (434/2186)
回答No.1

それならscanfでいいんじゃないですかね。 適当にダミーの配列でも準備すればとりあえずは動くと思います。 まあ、基本をやって頭を使えば出てくる結論ではありますが、 せっかくやる気があるみたいなので。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • プログラミング合っているか教えて下さい。

    5つの整数をキーボードから入力し、合計値と平均値を出すプログラミングです。 (1)キーボードからの数値入力は「Enter 1st=○」のように表記。 (2)平均値は小数第二位まで表示。 (3)ループ文を使用する事。 #include<stidio.h> main() { int a sum=0; printf("データを5つ入力せよ\n"); scanf( %d",&a); switch(a) { case 1: printf("Enter 1st=%d",a); break; case 2: printf("Enter 2nd=%d",a); break; case 3: printf("Enter 3rd=%d",a); break; case 4: printf("Enter 4th=%d",a); break;   case 5: printf("Entre 5th=%d,a); break; } for (i=1;i<5;i++) {scanf("%d",&a; sum=sum+a;} printf("5つの合計値=%d",sum); printf("5つの平均値=%4.2f",(float)sum/5); } まだ初心者で勉強中のため、文法がおかしいかもしれませんが間違い等のご指摘、宜しくお願いします。

  • VB2005で練習課題のアイデアを探してます。テキストボックスのイベン

    VB2005で練習課題のアイデアを探してます。テキストボックスのイベントを理解する目的の課題で KeyDown、KeyPress、KeyUp、Enter、GotFocus、Leave、Validating、Validated、LostFocus、TextChanged のうち2つ以上を組み合わせて使うような課題を考えているのですが なかなか良いアイデアが浮かびません。 多くのイベントを1つの設問に盛り込むのではなく 2つのイベントを組み合わせて解く問題がたくさん欲しいです。 可能ならば、イベントの発生順を知らないと解けない問題や 似たイベントだけど違いを知らないと解けない問題だと最高です。

  • SQL操作のC#書き換え

    よろしくお願いします。 現在勉強のため、SQLとC#をやっています。 課題として出されたものが、 AテーブルのデータをTRUNCATEを使って 全削除するSQL文を、 C#を使って全く同じ操作ができるようにする、 要するにSQL文をC#に書き換える といったものが出ました。 正直初心者なので見当もつきません。 どうかご助力お願いします。

  • 要約練習の仕方は?

    天声人語や社説やコラム、その他の文章を要約練習する場合に、 「正解」がわからないのですが、何か良い方法がありますか? 小論文のテキストや参考書での練習をひたすら繰り返す以外は、 独学で文章作成や読解力の技術を上げる方法はないのでしょうか? 一番の希望としては、新聞の中身を要約&理解したいのですが・・ または、それらの間違いに気付ける訓練方法はありますか?

  • C言語 スロットみたいにするやり方が分かりません

    今自由課題でスロットのように数字を乱数で表示させて、Enterを押すと押したときの値を表示させたいです しかし、今書いているやつだとなぜかスロットみたいに数字の表示ができません。 おそらくif文で一旦止まってしまっていると思うのですが、どこが悪いのか教えてください。 #include <stdio.h> #include <stdlib.h> int main(){ int a,b,c; srand(time(NULL)); c = getchar(); b = rand()%6+1; for(;;){ a = rand()%6+1; printf("\033[H\033[J"); printf("%d",a); if(getchar() == '\n'){ printf("あなたのサイコロの値は%dです!!\n",a); break; }else{ continue; } } return 0; }

  • access

    accessの超初心者で文がおかしくなるかもしれませんがよろしくお願い致します。 フォームのテキストボックスに計算した答えを出したいのが私のしたい質問です。 具体的には同テーブル内にある       A 100       B  50 の引き算の答えを表示させたいのですが具体的にはどういった方法をとればいいでしょうか? テーブル内のA、Bは直接入力しているのでテキストボックスにはその答えが何らかの方法で表示させればいいのですがその方法が皆目見当がつかずよろしくお願い致します。

  • 商品の購入に関するプログラミング

    大学の授業でC言語のプログラミングを習っています。初心者でほとんどわからず、作ってみたものの、ごちゃごちゃになってまとめられなくなりました。 先日の授業で、商品購入の流れをプログラミングする問題が出て、それについて質問させてください。 内容は、 客が購入した合計金額を提示し、客が出したお金から、おつりを表示すること、 商品Aを購入した場合、別の商品Bを勧めることという課題がついています。 まず、合計金額を表示するとあるのですが、この場合商品それぞれに変数宣言をして行ったほうがよいのかという疑問があります。つまり、100円の商品に、Xという変数を付けるべきなのかなどです。 それに、最終的におつりを表示しなくてはいけないので、合計金額、出された金額、おつりにそれぞれ変数を付けなくてはいけないことになるとすると、変数が多すぎるという不安があります。 次に、商品Aを購入すると、商品Bを勧めるという課題についてです。ifを使うことはわかるのですが、客によってBを勧めても断られるか、購入するかによって、合計金額が変化すると思いますが、その対応の仕方もわかりません。また、購入の過程の間で、客との会話を表示するように言われ、ますます困惑しています。例えば、Bを勧めると、客から、いる、または、いらないと表示できるようにします。このように、scanf、printfを入れながら、計算をしていく方法がわからなくて困っています。 自分でも混乱していて、かなりまとまりのない文章になってしまっているのですが、よろしくお願いします。

  • ワンクリ詐欺でしょうか?

    教えてください。 サイトから、興味本位でリンクサイト(広告サイト)に飛びました。 動画再生画面で、再生ボタンを押したら、Enterが出てきて、押してしまいました・・ そうしたら、入会完了と出てきました。 個人情報見たいのが表示され、ばれてしまうのでしょうか? どうしたらいいでしょうか?すいません。教えてください。 反省いたします。

  • ダメだ・・・分からない。while文 無限ループ&’\n’エンター後無限ループ脱出

    忙しい中失礼します。 C言語超初心者のものです。while文での表示について質問があります。 下記の’プログラム内容’はEnterキーが押されるまで、 ’k’入力後 → Enterキー → ASCII value of k is 107.  ’t’入力後 → Enterキー → ASCII value of t is 116. ・・・ のように継続させ、 何もアルファベットを記入せず、’Enterキー’のみを押した場合はループから抜け、DOS画面を終了するようにしたいのですが、それが出来ません・・・。 ’k’入力後Enterキーを押すと、’Enter a character:’の表示がなされた後、’Press any key to continue・・・’となり画面を閉じなければいけなくなります。 while文の中の()内を何とかすれば、思い通りのプログラムになる、とは思うのですが、それが考え付きません。 申し訳ありませんが、よろしければそのヒントを下さい。多分すごく簡単なことだとは思うのですが、それが出来ません。 ※私個人の考えとしては、while文の中の(scanf("%c", &ch)&&(ch!='\n'))において、’&&(ch!='\n')’をプログラム文からなくせば、Enterキーを押さない限り(’k’入力後のEnterキー除く)、何度もパソコン側から尋ねられると思ったのですが・・・。・・・うまくいかず。 プログラミング内容: #include <stdio.h> #include <stdlib.h> int main() { char ch; printf("Enter a character:\n"); while(scanf("%c", &ch)&&(ch!='\n')) { printf("ASCII value of %c is %d.\n\n", ch, ch); printf("Enter a character:\n"); } system("PAUSE"); return 0; }

  • C言語のプログラミングについて質問です。

    以下の文を出力して入力:に16進数を入れると10進数に変換した数値の小さい列順に並ぶプログラムを作りたいのですがうまく出来ません。 仕様は以下に記載します。 入力:__、__、__、__、__EnterKeyで結果を表示。 以下のバブルソートの文のどこをいじれば良いでしょうか? 返答宜しくお願いします。 #include <stdio.h> int main (void) { char data[256]; int val[100]; int i = 0; int work; int j; int k; printf("入力 = "); scanf("%s",data); for(i=0;i<100;i++){ val[i] = 0; } k=0; for(i = 0;i<100 ; i++){ if(data[i] == 0x00){ //data[i]がNULLだったら処理を抜ける k++; break; //enterキーでprintf出力 } else if(data[i] == ','){ //カンマだったら /*printf("%d\n",k);*/ k++; } else{ if(data[i] >= 'A' && data[i] <= 'Z'){ //data[i]にAからZが入ったら val[k] = val[k] *16 + data[i] -'A'+10; } else if(data[i] >= '0' && data[i] <= '9'){ //data[i]に0から9が入ったら val[k] = val[k] *16 + data[i] -'0'; } } } /* printf("k=%d\n",k); for(i=0;i<k;i++){ printf("出力 = %d\n",val[i]); } */ //バブルソート//     for(i=0; i<k-1; i++) { if(val[i] < val[i+1]) { } else{ work = val[i]; val[i] = val[i+1]; val[i+1] = work; } } for(i=0;i<k;i++) { printf("出力 = %d\n",val[i]); } }

このQ&Aのポイント
  • RC500の録音トラックの長さが変わる問題について質問があります。1トラック目を4コード4小節で録音した後、2トラック目で4小節目終わりから入る感じでフレーズをスタートさせると、REC/PLAYが赤点滅になり、弾いたフレーズがすぐに鳴らない状態になります。1トラック目の長さが倍になって8小節分で回り出し、途中から録音したフレーズが連続せず、後半4小節だけ鳴る状態になります。この問題について解決方法を教えてください。
  • RC500の録音トラックの長さが変わる問題について質問があります。以前はRC30やRC300を使っていた際にはこのような問題は起きていませんでした。1トラック目を4コード4小節で録音した後、2トラック目で4小節目終わりから入る感じでフレーズをスタートさせると、REC/PLAYが赤点滅になり、弾いたフレーズがすぐに鳴らない状態になります。1トラック目の長さが倍になって8小節分で回り出し、途中から録音したフレーズが連続せず、後半4小節だけ鳴る状態になります。この問題について解決方法があれば教えてください。
  • RC500の録音トラックの長さが変わる問題に困っています。以前はRC30やRC300を使っていた際にはこのような問題は起きていませんでした。1トラック目を4コード4小節で録音した後、2トラック目で4小節目終わりから入る感じでフレーズをスタートさせると、REC/PLAYが赤点滅になり、弾いたフレーズがすぐに鳴らない状態になります。1トラック目の長さが倍になって8小節分で回り出し、途中から録音したフレーズが連続せず、後半4小節だけ鳴る状態になります。この問題について何か解決策がありますでしょうか?
回答を見る

専門家に質問してみよう