ページ 1 / 1
forのプログラムについて
Posted: 2008年12月06日(土) 16:15
by ラン
・問題
キーボードから数値を入力して、その数値に10を加えた値までを表示するプログラムを作成しなさい。
・出力例(5を入力した場合)
input=5
5 6 7 8 9 10 11 12 13 14 15
です。私もプログラムを考えているのですが、全然わかりません。
個人的に問題解いてるのですが答えがなくてできません。
宿題でもないので急ぎはしません。
ゆっくりでいいのでプログラムを教えてください。
Re:forのプログラムについて
Posted: 2008年12月06日(土) 16:45
by Dixq (管理人)
解るところから少しずつといていき、解らなくなったところでその点を重点的に勉強するスタンスをとってはどうでしょう。
1 scanf関数でキーボードから整数を読み込み、表示するだけのプログラムを書きましょう
2 0~10までの整数をループ文を使って表示するプログラムを書きましょう
3 0~問題1で読み込んだ整数までの整数を表示するプログラムを書きましょう。
そして・・・
・問題
キーボードから数値を入力して、その数値に10を加えた値までを表示するプログラムを作成しなさい。
こうして順番に問題をといていけばわかりやすいのではないでしょうか。
躓いたらどの辺でつまずいて、何がわからないか詳しく教えて下さい。
また、聞く前に最大限自分で調べてみて下さい。
とりあえずscanf関数の使い方がわからなければ「scanf」でぐぐれば大量に使い方説明が出てきます。
Re:forのプログラムについて
Posted: 2008年12月06日(土) 17:03
by ラン
ありがとうございます。
#include <stdio.h>
void main()
{
int ia;
scanf("%d",&ia);
for(; ia<10; ia++){
printf("%d ",ia);
}
}
ここまで作れたのですが、入力した文字から10個表示ができません。
どうすればいいですか?
Re:forのプログラムについて
Posted: 2008年12月06日(土) 17:25
by ibis
あー。
10以下の数しか表示できないんですね。
入力された値からカウントアップするのは別の変数で行い、
その変数とiaとの差が10以下か否かをループの条件にする。
というのはどうでしょうか。
もうちょい具体的には、こんな感じでしょうかね。
int x = ia;
for(; x-ia<=10; x++){
printf("%d ",x);
}
Re:forのプログラムについて
Posted: 2008年12月06日(土) 17:35
by ラン
ありがとうございます。
でも、よくわかりません。
初心者なものですみません。
もう少しわかりやすいプログラムはありませんか?
Re:forのプログラムについて
Posted: 2008年12月06日(土) 17:50
by 初級者
#include <stdio.h>
int main(void)
{
int n, i;
printf("input=");
scanf("%d", &n);
for (i = n; i <= n + 10; i++) { // iはnから(n+10)まで変化する
printf("%d ", i);
}
return 0;
}
Re:forのプログラムについて
Posted: 2008年12月06日(土) 17:54
by stack
私の作成したこのプログラムはいかがでしょうか?キーボードから数値を入力する部分と、結果を出力する部分は関数化し、mainの中でそれらを呼び出すスタイルになりますが・・・・。mainの中で全部処理するなら
#include <stdio.h>
int main(void)
{
int i, num;
/* 整数のキー入力 */
printf("input = ");
scanf("%d", &num);
/* 計算結果の処理部分(ここをしっかり勉強して下さい) */
for (i = 0; i <= 10; i++) {
printf("%d ", (num + i));
}
printf("\n"); /* 最後に改行文字を出力して終了 */
return (0);
}
としてはいかがでしょうか?
Re:forのプログラムについて
Posted: 2008年12月06日(土) 17:55
by ラン
ありがとうございます。
そのプログラムを参考にオリジナルを考えてみます。
また、よろしくお願いします。
Re:forのプログラムについて
Posted: 2008年12月06日(土) 17:57
by ibis
わかりませんでしたか。
すみません。
全文ではこうなります。
先程の断片よりはわかりやすいでしょうか?
#include <stdio.h>
void main()
{
int ia;
int x;
scanf("%d",&ia);
x = ia;
/*for(; ia<10; ia++){
printf("%d ",ia);
}*/
for(; x-ia<10; ia ++){
printf("%d ",x);
}
}
Re:forのプログラムについて
Posted: 2008年12月06日(土) 17:59
by ibis
あら、すでに別の回答で解決してる。
Re:forのプログラムについて
Posted: 2008年12月06日(土) 18:00
by ラン
ibisさん。
本当にありがとうございます。
すごくわかりやすいです。
初心者なもので迷惑かけてすみせん。また、よろしくお願いします。
Re:forのプログラムについて
Posted: 2008年12月06日(土) 18:15
by ラン
他のプログラムを質問します。
・問題
キーボードから数値を入力して、その数値に10を加えた値までを表示するプログラムを作成しなさい。
・出力例(4の場合)
input: 4
田中太郎
田中太郎
田中太郎
田中太郎
です。よろしくお願いします。
Re:forのプログラムについて
Posted: 2008年12月06日(土) 18:49
by yu
最初の問題と同じような気がしますが?・・・
出力例は違いますが。
それと、一度自分でプログラムを作ってみましたか?
作ってみて分からないところがあったら教えてください。
こんなこと言ってる自分ですが、まだプログラムを始めて2か月ですorz
Re:forのプログラムについて
Posted: 2008年12月06日(土) 19:52
by ラン
すみません。
問題をうち間違えました。
・問題
キーボードから数値を入力し、その入力された数値の回数だけ自分の名前を表示するプログラムを作成しなさい。
・出力例(4の場合)
input: 4
田中太郎
田中太郎
田中太郎
田中太郎
です。プログラムを教えてください。
自分でも考えているのですが全然わからないです。
Re:forのプログラムについて
Posted: 2008年12月06日(土) 20:00
by conio
-----------------------------
#include<stdio.h>
int main(void){
int x,i;
/*xに値を入れさせる*/
for(i = 0; i < x; i++)
/*名前を表示させる処理*/
return(0);
}
-----------------------------
こんな感じでどうでしょう?
値を入れさせる処理はscanf関数、表示させる処理はprintf関数で出来ると思います。
Re:forのプログラムについて
Posted: 2008年12月06日(土) 20:06
by ラン
ありがとうございます。
具体的なプログラムはどうなりますか?
Re:forのプログラムについて
Posted: 2008年12月06日(土) 20:24
by conio
上のプログラムはほぼ答えです。
もし、プログラムをどう書けばいいのか全然見当がつかない、という事であれば
printf文、scanf文を学習すれば書ける様になると思います。
とりあえず、解答です↓
---------------------------------
int main(void)
{
int x,i;
printf("値を入力してください:");
scanf("%d",&x);
for(i = 0; i < x; i++)
printf("田中太郎\n");
return 0;
}
--------------------------------
Re:forのプログラムについて
Posted: 2008年12月06日(土) 20:32
by ラン
ありがとうございます。
Re:forのプログラムについて
Posted: 2008年12月06日(土) 21:16
by ラン
・問題
キーボードからアルファベット小文字を1文字を入力し、その続きからzまでを表示するプログラムを作成しなさい。
・実行結果(h)を入力した場合
moji?h
i j k l m n o p q r s t u v w x y z
です。自分の作ったプログラムを貼ります。
#include <stdio.h>
void main()
{
char i,n;
printf("moji?");
scanf("%c",&n);
for(i=n+1; i<='Z'; i++){
printf("%c ",i);
}
}
です。このプログラムで動きました。
で、小文字を入力したときに大文字として出力できません。
どこを変更すればいいですか?
Re:forのプログラムについて
Posted: 2008年12月06日(土) 22:12
by conio
上記のプログラムは、こちらでは動きませんでした。
数字文字とは違い、アルファベット文字には規則性が保証できないので、
インクリメントして表示させる方法はあまり良いとは思えません。
動かなかったので、個人的にプログラムを作りました。
大文字にしたい時はtoupper関数を使えばいいと思います。
--------------------------------------------
#include <stdio.h>
#include <ctype.h>
void main()
{
char mozi[27]="abcdefghijklmnopqrstuvwxyz";
char n,i=0;
printf("文字を入力してください:");
scanf("%c",&n);
while(n != mozi)
i++;
while(mozi[++i] != 0){
printf("%c",toupper(mozi));
}
}
--------------------------------------------
Re:forのプログラムについて
Posted: 2008年12月06日(土) 23:24
by 通りすがり
簡単な問題の質問トピの時だけ出てきて答えだけ書いて去っていく人どうなの?
本人気づいてないかもしれないけど、色んな方向からアドバイス試みている人に対して失礼です。
答えのプログラムだけ教えるのは適切な回答じゃない。質問者が考え方より答えを望んでいる場合は余計に。
Re:forのプログラムについて
Posted: 2008年12月06日(土) 23:36
by ムンバ
通りすがって、ご意見だけ書いてくのも失礼だと思いますけど。私の事ですか?^^;
>本人気づいてないかもしれないけど、色んな方向からアドバイス試みている人に対して失礼です。
ごめんなさい。
Re:forのプログラムについて
Posted: 2008年12月06日(土) 23:45
by conio
丸投げではなく、"考えた結果分からない、エラーが取れない"という事であれば、アドバイスをするのは良いと思います。
上記のstackさんibesさん初級者さんのように。
一応、自分はプログラムの一部を日本語で書く等して、そのまんまの答えを書くことは出来るだけ
避けています。
少しでも考える余地があれば、練習になると思っております。