ページ 11

C初心者です。

Posted: 2007年6月06日(水) 22:28
by ほけほけ
たとえば、点数をscanfで入力するプログラムで、
その値を黒画面上に棒グラフっぽく表す方法があれば教えて下さい。

あと、連続で文字を表示する場合、
例えば、**************と黒画面上に出したい場合、

<定義略>
printf(%14c,'*')

なんて書き方ありますかね?

超初心者です、
もしよければどなたか教えてください。

Re:C初心者です。

Posted: 2007年6月06日(水) 22:33
by 卓也
ただ単にprintf("**************");
と、表記して下さればできますよ

Re:C初心者です。

Posted: 2007年6月06日(水) 22:34
by box
> printf(%14c,'*')
>
> なんて書き方ありますかね?

私だったら、まずサンプルコードを書いて試してみます。
そうしてみる予定や余裕はありますか?

Re:C初心者です。

Posted: 2007年6月06日(水) 22:57
by ほけほけ
> ただ単にprintf("**************");
> と、表記して下さればできますよ

ぴよぴよさん
ありがとうございます。
ただ、レイアウトを考えて、黒画面に表示する場合、マスの数指定で表記はできないのかと思ったんです。
その場合、やはりループ処理で表記するしかないんですかね?

Re:C初心者です。

Posted: 2007年6月06日(水) 22:58
by ほけほけ
> > printf(%14c,'*')
> >
> > なんて書き方ありますかね?
>
> 私だったら、まずサンプルコードを書いて試してみます。
> そうしてみる予定や余裕はありますか?

boxさん、ありがとうございます。
いまコンパイルができない状態にありまして、すいません。
明日試してみます。

Re:C初心者です。

Posted: 2007年6月07日(木) 02:46
by 管理人
どうしてもループを使いたくないのなら、
文字列にそれぞれのスターを要素数に対応して格納しておけばどうでしょうか。

char st[10][10]={
{""},
{"*"},
{"**"},
{"***"},
{"****"},
{"*****"},
{"******"},
{"*******"},
{"********"},
{"*********"}
};

このように入れておいて、scanfで取り込んだ値を要素番号として表示すればその数だけスターが表示されます。
コレくらいしか方法は思いつきません・・。
forを使ったほうが早いかと思います。
 

Re:C初心者です。

Posted: 2007年6月07日(木) 03:08
by 管理人
サンプルです。エラー処理していません。
#include <stdio.h>

void main(){
	int n;
	char st[11][11]={
		{""},
		{"*"},
		{"**"},
		{"***"},
		{"****"},
		{"*****"},
		{"******"},
		{"*******"},
		{"********"},
		{"*********"},
		{"**********"},
	};
	printf("0~10の数字を入力してください\n");
	scanf("%d",&n);
	printf("%s",st[n]);
}

実行結果

0~10の数字を入力してください
10
**********
 

Re:C初心者です。

Posted: 2007年6月07日(木) 03:16
by 管理人
それから卓也さん、何度も申し上げていますが、お伝えしたい事があるので、私までメールを下さい。

Re:C初心者です。

Posted: 2007年6月07日(木) 04:31
by フリオ
 
 こんな方法もあります。
#include <stdio.h>

int main(void)
{
	int n;
	char *marks = "********************";
	
	puts(marks);
	n = 14;
	printf("%.*s", n, marks);
	return 0;
}
 

Re:C初心者です。

Posted: 2007年6月07日(木) 12:34
by 管理人
あ、その手がありますね。

質問者さん、フォーマット文字列のフォーマットについてこちら参考になります。
http://www.linux.or.jp/JM/html/LDP_man- ... ntf.3.html