新着記事
08/24: 待ち時間・アカウントなしで4sharedにあるファイルをダウンロードするには
08/23: 色んな歌詞検索サイトから歌詞を探してくれる高機能歌詞検索ソフト -Lyrics Master-
08/01: フリーでいろんな国のIPアドレスを利用できるFireFoxのVPNアドオン -Hola Unblocker-
07/18: 著作権フリー・無料で利用できるBGMダウンロードサイト - audionautix
07/17: apngをブラウザ上で見るには
06/14: deviantARTなどで入手したテーマに変更するには
06/03: [KissAnime] - 日本語検索可能でいろんなタイトルが見れるアニメ無料視聴サイト
05/30: スマホをギターにして演奏してしまう動画
05/23: InoReader - シンプルで使いやすいRSSリーダー
05/18: [Apowersoft音声録音フリーツール] - PC・マイクから簡単に録音できるフリーツール
05/12: フリーのDNSへ簡単に変更出来るDNSチェンジャー - [ChrisPC DNS Switch]
05/11: C言語 入門 複合文について
05/10: TabsBy.Net - フリーで利用可能なオンラインTABプレーヤー
05/09: [Chrome Extension]Chromeで新しいタブを開いたときにWindows8のメトロ画面にするExtension - New MetroTab
05/06: Bop.fm - フリーでクールなインターフェイスのオンライン音楽プレーヤー
05/05: iAlbums - アルバムごとにカテゴライズされたプレイリスト作成も可能なオンライン音楽プレーヤー
09/20: [B1 Online Archiver] オンライン上で圧縮ファイルを解凍できるサイト
09/15: Operaの旧バージョン(15以前)にXSSの脆弱性が
09/10: ペルセウス座流星群を1分で
08/29: スマホアプリ紹介サイト
RSS feeds

2010年06月26日

C言語 入門 複数入力する場合と応用

前回、「scanf関数」について勉強しました。
しかし、実際に入力できた回数は1度です。2回、3回と入力させるにはどうしたらいいのかという疑問が生じます。
今回は複数の入力をするための勉強です。


複数入力する場合


さて、今までは入力できたのが一回でしたが、複数入力する場合はどうしたらいいのでしょうか。

とりあえず、簡単なプログラムを書いて「scanf("%d%d", &変数, &変数);」でやってみましょう。
入力は何でもいいですが私は100と101にしてみます。
#include <stdio.h>

int main(void)
{

    int no1, no2;

    scanf("%d%d", &no1, &no2); /* 入力する部分 */
    printf("[%d][%d] 。¥n", no1, no2);

    return 0;
}


ここでちょっと新しいことを勉強します。
/* 入力する部分 */」はコメントです。プログラムが複雑になっていくとどれがどの処理をするか分からなくなってしまいますよね。
そんな時に /* */ で囲ってやるとその部分にコメントが付け加えられます
また、コメントはプログラムを実行したときに一切影響を受けません
さらにどこに書いても、行をまたいで書いてもOKです。

ここではこんな処理をするんだということを書いておくとプログラムがより読みやすくなります。
不要だと感じた場合は本当に書かなくて結構です。

さて、どうやって複数に分けてやればいいでしょうか。
とりあえずEnterキーをおして100と101を区切って入力してみてください。

実行結果
100↵
101↵
[100][101]

複数入力するときはこのようにEnterキーで改行してやることで複数のデータを認識していきます。
入力してから「改行(Enterキー)」してやるとこんな感じになると思います。
ちなみにスペースやTabキーで区切っても大丈夫です。

重要なのはプログラムを実行して入力するときEnterキー・Tabキー・スペースで区切ってやるということです。


応用


さあ、この「scanf関数」を使用することでかなり幅が広がります。

なぜかというと、もう分かる方もいるかと思いますが、「数値を自由に指定できる」ので
例えば三角形の面積を求めるプログラムを作るとき、公式さえプログラムに組み込んでやれば後は実行中に数値をキーボードから入力してやるだけになります。

まあ、試しに作ってみましょう。

三角形の面積の求め方は「底辺×高さ÷2」ですよね。
奇数同士だと整数で割り切れないので実数を使い、「小数点第一」まで求めるようにしましょう。
変数の宣言は、底辺と高さだけでもかまいませんが、ここでは答えの部分も宣言して計算式を代入してやります。
#include <stdio.h>

int main(void)
{

    double bottom, high, sum;

/* 入力 */
    printf("三角形の面積を求めます。数字を入力後Enterキーを押してください。¥n");
    printf("底辺を入力してください:");    scanf("%lf", &bottom);
    printf("高さを入力してください:");    scanf("%lf", &high);

/* 三角形の面積の計算 */
    sum = bottom * high / 2;

/* 表示 */
    printf("三角形の面積は「%.1f」です。¥n", sum);

    return 0;
}


入力値は各々で決めてください。

実行結果
三角形の面積を求めます。数字を入力後Enterキーを押してください。
底辺を入力してください:13↵
高さを入力してください:9↵
三角形の面積は「58.5」です。


こんな風に作ってみました。ちょっと見てみましょう。
printf("底辺を入力してください:");    scanf("%lf", &bottom);
printf("高さを入力してください:");    scanf("%lf", &high);

という風にやってやるとプログラムを使用する人にとってわかりやすいですよね。

printf("底辺を入力してください:");    scanf("%lf", &bottom);
と一行で書いていますが、文の終わりには「;(セミコロン)」をつければよかったですよね。
また、フリーフォーマットだということを思い出していただければこういう風に書けるというのが分かると思います。
それだけでなく底辺に対し、bottomをscanf関数で読み取るというのが見ただけである程度理解できると思います。
こういった書き方の工夫も理解しやすくプログラムを書く秘訣だと思います。

また、コメントをつけてやることでどの部分がどの処理をするかがとても分かりやすいと思います(多分)。
他に、
sum = bottom * high / 2

と書きました。これもプログラムを理解しやすくするための工夫です。
printf関数のときに計算させてもいいのですが、それだと見づらい場合もあります。
こんな風に最終的に表示させたい答えの部分を変数として宣言して、どういった計算をさせるのかということを書いてやるのをオススメします。

プログラムは自分が分かればいいのではなく、他の人が理解しやすく、また使用者が使いやすいように作るのが一番だと思います。


メニューへ戻る
タグ:C言語


↓もしこの記事が役に立ったらクリックお願いします。
人気ブログランキングへ ブログランキング・にほんブログ村へ



posted by Yuichi at 13:11 | Comment(2) | TrackBack(0) | プログラミング>C言語 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
とてもわかりやすい解説で助かります。
ひとつ質問なのですが、上記でこの部分↓
----------------------------------------
#include <stdio.h>

int main(void)
{

int no1, no2;

scanf("%d", &num); /* 入力する部分 */
printf("[%d][%d] 。\n", no1, no2);

return 0;
}
----------------------------------------

これを入力しても出来ないのですが、自分なりに下記のように
打ち直したらうまく言ったのですが、他に違うやり方等ございましたら
教えてください。

----------------------------------------
#include <stdio.h>
int main(void)
{

int no1,no2;

scanf("%d %d",&no1,&no2);/*入力する部分*/
printf("[%d][%d]。\n",no1,no2);

return 0;
}
-----------------------------------------
Posted by No Name at 2011年03月14日 02:25
error: expected ‘;’ before ‘printf’

「;」がぬけているから
sum = bottom * high / 2;
Posted by No Name at 2011年05月24日 09:12
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック

Copyright (C) 2009-2010 Yuichi All Rights Reserved.