ファイル
ファイル
学校の課題で ある24時間営業のコンビニエンスストアでの1日分の売り上げデータを利用して、時間帯別および売り上げ金額別の客数を出力するものである。空欄を埋めて、プログラムを完成させなさい。というプログラム作成がだされました
プログラムの8行目のtableの後と15行目の%11dの後のところだけ分かりません 教えてください
#include <stdio.h>
int main(void)
{
int table[24][6] = 0 ,hour,min,prank,price;
printf("時刻と金額を入力してください!¥n");
while((scanf("%2d%2d%6d",&hour,&min,&price;)) != EOF{
prank = (price / 1000) > 5 ? 5 : price / 1000;
table ++
}
printf("%21s"-999 1000-1900 2000-2999 "," ");
printf("3000-3999 4000-4999 5000-¥n");
for(hour = 0; hour <= 23; hour++){
printf("%2d:00-%2d:59", hour, hour);
for(prank = 0; prank <= 5; prank++)
printf("%11d", );
printf("¥n");
}
return 0;
}
プログラムの8行目のtableの後と15行目の%11dの後のところだけ分かりません 教えてください
#include <stdio.h>
int main(void)
{
int table[24][6] = 0 ,hour,min,prank,price;
printf("時刻と金額を入力してください!¥n");
while((scanf("%2d%2d%6d",&hour,&min,&price;)) != EOF{
prank = (price / 1000) > 5 ? 5 : price / 1000;
table ++
}
printf("%21s"-999 1000-1900 2000-2999 "," ");
printf("3000-3999 4000-4999 5000-¥n");
for(hour = 0; hour <= 23; hour++){
printf("%2d:00-%2d:59", hour, hour);
for(prank = 0; prank <= 5; prank++)
printf("%11d", );
printf("¥n");
}
return 0;
}
Re: ファイル
ではなぜminが要るのでしょう?KC さんが書きました:時刻と金額を格納するためでしょうか?
要りませんよね?
まあそれより、どの部分が穴埋めなのか分かりませんね。
コードをみる限り、コンパイルできないですけど。
なので、
上記はひとまず後回しでとりあえず指摘。KC さんが書きました:プログラムの8行目のtableの後と15行目の%11dの後のところだけ分かりません
配列を初期化する際には{0}のように{}で囲ってください。 whileの括弧がおかしいよ。またscanfの戻り値は値を代入した数ですよ。EOFはおかしいよ。 文字列の"のくくりがおかしいよ。
修正したら、修正したコードを掲示してください。
またコードは、[code]~[/code]で囲ってくださいね。
written by へにっくす
Re: ファイル
ヘニックスさん 訂正しました 空欄の部分は,tableと++の間と printf("%11d" の後の部分です。 minの方は例文のほうで初めからあるので外せないみたいです
#include <stdio.h>
int main(void)
{
int table[24][6] = {0} ,hour,min,prank,price;
printf("時刻と金額を入力してください!¥n");
while((scanf("%2d%2d%6d",&hour,&min,&price;)) != EOF){
prank = (price / 1000) > 5 ? 5 : price / 1000;
table ++
}
printf("%21s-999 1000-1900 2000-2999 "," ");
printf("3000-3999 4000-4999 5000-¥n");
for(hour = 0; hour <= 23; hour++){
printf("%2d:00-%2d:59", hour, hour);
for(prank = 0; prank <= 5; prank++)
printf("%11d", );
printf("¥n");
}
return 0;
}
#include <stdio.h>
int main(void)
{
int table[24][6] = {0} ,hour,min,prank,price;
printf("時刻と金額を入力してください!¥n");
while((scanf("%2d%2d%6d",&hour,&min,&price;)) != EOF){
prank = (price / 1000) > 5 ? 5 : price / 1000;
table ++
}
printf("%21s-999 1000-1900 2000-2999 "," ");
printf("3000-3999 4000-4999 5000-¥n");
for(hour = 0; hour <= 23; hour++){
printf("%2d:00-%2d:59", hour, hour);
for(prank = 0; prank <= 5; prank++)
printf("%11d", );
printf("¥n");
}
return 0;
}
Re: ファイル
code 付け忘れました
quote="KC"]ヘニックスさん 訂正しました 空欄の部分は,tableと++の間と printf("%11d" の後の部分です。 minの方は例文のほうで初めからあるので外せないみたいです
/quote]
quote="KC"]ヘニックスさん 訂正しました 空欄の部分は,tableと++の間と printf("%11d" の後の部分です。 minの方は例文のほうで初めからあるので外せないみたいです
#include <stdio.h>
int main(void)
{
int table[24][6] = {0} ,hour,min,prank,price;
printf("時刻と金額を入力してください!¥n");
while((scanf("%2d%2d%6d",&hour,&min,&price;)) != EOF){
prank = (price / 1000) > 5 ? 5 : price / 1000;
table ++
}
printf("%21s-999 1000-1900 2000-2999 "," ");
printf("3000-3999 4000-4999 5000-¥n");
for(hour = 0; hour <= 23; hour++){
printf("%2d:00-%2d:59", hour, hour);
for(prank = 0; prank <= 5; prank++)
printf("%11d", );
printf("¥n");
}
return 0;
}
Re: ファイル
おかしいとは限りません。scanfの返り値はEOFになることがあります。へにっくす さんが書きました:EOFはおかしいよ。
http://linuxjm.sourceforge.jp/html/LDP_ ... anf.3.html最初の変換が成功する前に入力の最後に達して、一致の失敗が起こった場合には、 EOF が返される。また、 読み込みエラーが発生した場合にも EOF が返される。
ただ、whileのかっこが足りないのと、余計なセミコロンが入っているのはおかしいですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ファイル
へにっくす さんが書きました:ではなぜminが要るのでしょう?KC さんが書きました:時刻と金額を格納するためでしょうか?
要りませんよね?
おそらくここでのminはminuteの略だと思うので、minを入力するのは自然だと思います。KC さんが書きました:minの方は例文のほうで初めからあるので外せないみたいです
確かに結果的には使用せず、%*dで読み飛ばしても良さそうですが、外せないならそのままでもいいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ファイル
このスレッドで続けてもらって構いません。K C さんが書きました:ログインしたので続きはそちらで大丈夫ですか?
「そちら」ってどちらですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ファイル
そうですね。確かにこの場合は3と比較して判定する方がより良いと思います。へにっくす さんが書きました:そうですか?そのあとにpriceを使ってるのに。みけCAT さんが書きました:おかしいとは限りません。scanfの返り値はEOFになることがあります。へにっくす さんが書きました:EOFはおかしいよ。
priceの値は、3つ数値を入力されないと入らないですよね(hour、min、priceの順で入るのだから)?
だからここはEOFでなく3で比較するのがいいのではないかと思うのですけど・・・
まあ課題でEOFになってるのなら別にそのままでいいと思います。
ただし、
これが常に正しいわけではない、ということですね。へにっくす さんが書きました:scanfの戻り値は値を代入した数ですよ。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ファイル
#include <stdio.h>
int main(void)
{
int table[24][6] = {0} ,hour,min,prank,price;
printf("時刻と金額を入力してください!¥n");
while((scanf("%2d%2d%6d",&hour,&min,&price;)) != EOF){
prank = (price / 1000) > 5 ? 5 : price / 1000;
table 空欄 ++
}
printf("%21s-999 1000-1900 2000-2999 "," ");
printf("3000-3999 4000-4999 5000-¥n");
for(hour = 0; hour <= 23; hour++){
printf("%2d:00-%2d:59", hour, hour);
for(prank = 0; prank <= 5; prank++)
printf("%11d", 空欄);
printf("¥n");
}
return 0;
}
Re: ファイル
最初の空欄は、hourとprankによって決められるtableの適切な要素に1を加算し、
コンパイルエラーを防ぐために後についている余分な++をコメントアウトするといいと思います。
2番目の空欄は、これまたhourとprankによって決められるtableの適切な要素にアクセスすればいいと思います。
コンパイルエラーを防ぐために後についている余分な++をコメントアウトするといいと思います。
2番目の空欄は、これまたhourとprankによって決められるtableの適切な要素にアクセスすればいいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ファイル
[coad]
#include <stdio.h>
int main(void)
{
int table[24][6] = {0} ,hour,min,prank,price;
printf("時刻と金額を入力してください!¥n");
while((scanf("%2d%2d%6d",&hour,&min,&price;)) != EOF){
prank = (price / 1000) > 5 ? 5 : price / 1000;
table [hour+1][prank+1]
}
printf("%21s-999 1000-1900 2000-2999 "," ");
printf("3000-3999 4000-4999 5000-¥n");
for(hour = 0; hour <= 23; hour++){
printf("%2d:00-%2d:59", hour, hour);
for(prank = 0; prank <= 5; prank++)
printf("%11d", 空欄);
printf("¥n");
}
return 0;
}
[/coad]
こんな感じですか? 二番目はよく分からないです
#include <stdio.h>
int main(void)
{
int table[24][6] = {0} ,hour,min,prank,price;
printf("時刻と金額を入力してください!¥n");
while((scanf("%2d%2d%6d",&hour,&min,&price;)) != EOF){
prank = (price / 1000) > 5 ? 5 : price / 1000;
table [hour+1][prank+1]
}
printf("%21s-999 1000-1900 2000-2999 "," ");
printf("3000-3999 4000-4999 5000-¥n");
for(hour = 0; hour <= 23; hour++){
printf("%2d:00-%2d:59", hour, hour);
for(prank = 0; prank <= 5; prank++)
printf("%11d", 空欄);
printf("¥n");
}
return 0;
}
[/coad]
こんな感じですか? 二番目はよく分からないです
Re: ファイル
#include <stdio.h>
int main(void)
{
int table[24][6] = {0} ,hour,min,prank,price;
printf("時刻と金額を入力してください!¥n");
while((scanf("%2d%2d%6d",&hour,&min,&price;)) != EOF){
prank = (price / 1000) > 5 ? 5 : price / 1000;
table [hour+1][prank+1]
}
printf("%21s-999 1000-1900 2000-2999 "," ");
printf("3000-3999 4000-4999 5000-¥n");
for(hour = 0; hour <= 23; hour++){
printf("%2d:00-%2d:59", hour, hour);
for(prank = 0; prank <= 5; prank++)
printf("%11d", 空欄);
printf("¥n");
}
return 0;
}
Re: ファイル
[quote="K C"]
こんな感じですか? 頭の中がごちゃごちゃしてきました 空欄が二個
なので新たに付け足すの出来ないです
#include <stdio.h>
int main(void)
{
int table[24][6] = {0} ,hour,min,prank,price;
printf("時刻と金額を入力してください!¥n");
while((scanf("%2d%2d%6d",&hour,&min,&price;)) != EOF){
prank = (price / 1000) > 5 ? 5 : price / 1000;
table [hour+1][prank]
}
printf("%21s-999 1000-1900 2000-2999 "," ");
printf("3000-3999 4000-4999 5000-¥n");
for(hour = 0; hour <= 23; hour++){
printf("%2d:00-%2d:59", hour, hour);
for(prank = 0; prank <= 5; prank++)
printf("%11d", 空欄);
printf("¥n");
}
return 0;
}
なので新たに付け足すの出来ないです
Re: ファイル
違います。両方とも(+1する必要はない)と思います。すなわち、hourに+1する必要も、prankに+1する必要も、ないと思います。
どういうことですか?問題がtable [<A>][<B>] ++のAおよびBを埋めよ、というようになっているということですか?K C さんが書きました:空欄が二個
なので新たに付け足すの出来ないです
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ファイル
今、この図のような表(のようなもの)が用意されています。
だとしたら、どうすればいいでしょうか?
この表を用いて、入力の(hour,prank)の組それぞれをカウントしたいのですよね?だとしたら、どうすればいいでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ファイル
最初の空欄はそんな感じでいいと思います。
二番目の空欄も、for文で指定されているhourとprankに対応する表の値を表示したいのですよね?
ということは…
二番目の空欄も、for文で指定されているhourとprankに対応する表の値を表示したいのですよね?
ということは…
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)