大学の自由課題で、「関数」「繰り返し」「条件分岐」「配列」を使ってプログラムを作っています。
なにも思いつかず、とりあえず授業時に使ったようなプログラムを切り貼りする感じで「映画の券売機」を作ることにしたのですが、
どうしても配列を使えません!!
内容的に無理があるのかもしれないのですが、なんとかならないでしょうか(;ω;)
2/27が締め切りなので、なるべく早くアドバイスいただけると嬉しいです!!
一応、自分で作ったところまでのプログラムリストを貼り付けておきます。
プログラミング初心者でもできそうなアイデアお待ちしてます・・・
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int code,tanka,total,daikin,unitprice,change;
void decide_position();
int sum = 0;
srand(time(NULL));
printf("==========料金表=========\n");
printf("1.一般 \n");
printf("2.大学生 \n");
printf("3.小・中学生 \n");
printf("4.幼児 \n");
printf("5.シルバー(60才以上) \n");
printf("=========================\n");
printf("\n");
printf("料金表から、あなたがあてはまる番号を入力してください: ");
scanf("%d",&code);
while((code < 1) || (code > 5)){
printf("1~5の番号の中から選んで下さい: ");
scanf("%d", &code);
}
switch (code)
{ case 1:
unitprice = 1800;
break;
case 2:
unitprice = 1500;
break;
case 3:
unitprice = 1000;
break;
case 4:
unitprice = 800;
break;
case 5:
unitprice = 1000;
break;
}
sum = unitprice ;
decide_position();
printf("料金は%d円です\n", unitprice);
printf("お金を入れてください: ");
scanf("%d", &daikin);
sum = unitprice ;
while(daikin <= 0){
printf("正の金額を投入してください: ");
scanf("%d",&daikin);
}
while(sum > daikin){
printf("投入金額が%d円不足しています。追加の金額を投入してください: ", sum - daikin);
sum=sum - daikin;
scanf("%d",&daikin);
}
change=daikin-sum;
if(daikin > sum){
printf("おつりをどうぞ: ");
while(change >= 5000) {
printf("[5000]");
change = change - 5000;
}
while(change >= 1000) {
printf("[1000]");
change = change - 1000;
}
while(change >= 500) {
printf("(500)");
change = change - 500;
}
while(change >= 100){
printf("(100)");
change = change - 100;
}
while((change >= 50) && (change < 100)){
printf("(50)");
change = change - 50;
}
while((change >= 10) && (change < 50)) {
printf("(10)");
change = change - 10;
}
while((change >= 5) && (change < 10)) {
printf("(5)");
change = change - 5;
}
while((change >= 1) && (change < 5)) {
printf("(1)");
change = change - 1;
}
printf("\n");
}
printf("ありがとうございました!\n",daikin);
return 0;
}
void decide_position(){/*int seat_line*/
int i,j,seat_position,seat_line;
printf("============座席表============\n");
for (i = 9; i > 0; i--){
printf("%d|",i);
for (j = 1; j < 10; j++){
printf(" ○ ");
}
printf("\n");
}
printf("ーーーーーーーーーーーーーーー\n");
printf(" ",i);
printf("ス ク リ - ン 側 ");
printf("\n");
printf("==============================\n");
printf("\n");
printf("座席表から、好きな座席の列の番号を選んでください: ");
scanf("%d",&seat_line);
seat_position = rand() % 8+1;
printf("%d列目の右から%d番目の席を取りました\n",seat_line,seat_position);
return;
}
配列をどのように使えばいいかわかりません…
- bitter_fox
- 記事: 607
- 登録日時: 14年前
- 住所: 大阪府
Re: 配列をどのように使えばいいかわかりません…
ゆみさん、コードを載せる際はcodeタグで囲っていただきますようにお願いします。
参考:
http://dixq.net/board/board.html
http://dixq.net/board/board.html#k10
また、仕様がよく解らないのでもっと詳しく仕様を教えていただきますでしょうか??
参考:
http://dixq.net/board/board.html
http://dixq.net/board/board.html#k10
また、仕様がよく解らないのでもっと詳しく仕様を教えていただきますでしょうか??
Re: 配列をどのように使えばいいかわかりません…
仕様というのがあんまり良く分かってないので応える内容がこれで当たってるのか分からないのですが
Ubuntu10.04ja-custom です(;ω;)
Ubuntu10.04ja-custom です(;ω;)
Re: 配列をどのように使えばいいかわかりません…
仕様とはPCの環境のことではなく、
「映画の券売機」の設計のことです。
つまり、このプログラムは具体的にどのような動作を期待して組んでいるのでしょうか?
「映画の券売機」の設計のことです。
つまり、このプログラムは具体的にどのような動作を期待して組んでいるのでしょうか?
Re: 配列をどのように使えばいいかわかりません…
1.料金表を表示
2.料金表の中から番号を選んでもらう
3.座席表を表示
4.座席表の中から列の番号を選んでもらう
5.座席と料金を表示
6.お金を入れてもらう
7.お釣りを出す
という感じです。
このなかに、なにか配列を使ったプログラムを入れたいのです><
2.料金表の中から番号を選んでもらう
3.座席表を表示
4.座席表の中から列の番号を選んでもらう
5.座席と料金を表示
6.お金を入れてもらう
7.お釣りを出す
という感じです。
このなかに、なにか配列を使ったプログラムを入れたいのです><
- bitter_fox
- 記事: 607
- 登録日時: 14年前
- 住所: 大阪府
Re: 配列をどのように使えばいいかわかりません…
まずはtoyoさんに教えていただいた部分を変えてみました。
コンパイルしてみたところ、エラーは出てこないのですが、
お金を入力すると、いくらいれたかにかかわらず5000円のおつりが無限ループのようなかんじで出てきてしまいます><
何がおかしいのでしょうか??
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int code,tanka,total,daikin,change;
int unitprice[] = {1800,1500,1000,800,1000};
void decide_position();
int sum = 0;
srand(time(NULL));
printf("==========料金表=========\n");
printf("1.一般 \n");
printf("2.大学生 \n");
printf("3.小・中学生 \n");
printf("4.幼児 \n");
printf("5.シルバー(60才以上) \n");
printf("=========================\n");
printf("\n");
printf("料金表から、あなたがあてはまる番号を入力してください: ");
scanf("%d",&code);
while((code < 1) || (code > 5)){
printf("1~5の番号の中から選んで下さい: ");
scanf("%d", &code);
}
decide_position();
printf("料金は%d円です\n", unitprice[code-1]);
printf("お金を入れてください: ");
scanf("%d", &daikin);
sum = unitprice ;
while(daikin <= 0){
printf("正の金額を投入してください: ");
scanf("%d",&daikin);
}
while(sum > daikin){
printf("投入金額が%d円不足しています。追加の金額を投入してください: ", sum - daikin);
sum=sum - daikin;
scanf("%d",&daikin);
}
change=daikin-sum;
if(daikin > sum){
printf("おつりをどうぞ: ");
while(change >= 5000) {
printf("[5000]");
change = change - 5000;
}
while(change >= 1000) {
printf("[1000]");
change = change - 1000;
}
while(change >= 500) {
printf("(500)");
change = change - 500;
}
while(change >= 100){
printf("(100)");
change = change - 100;
}
printf("\n");
}
printf("ありがとうございました!\n",daikin);
return 0;
}
void decide_position(){/*int seat_line*/
int i,j,seat_position,seat_line;
printf("============座席表============\n");
for (i = 9; i > 0; i--){
printf("%d|",i);
for (j = 1; j < 10; j++){
printf(" ○ ");
}
printf("\n");
}
printf("ーーーーーーーーーーーーーーー\n");
printf(" ",i);
printf("ス ク リ - ン 側 ");
printf("\n");
printf("==============================\n");
printf("\n");
printf("座席表から、好きな座席の列の番号を選んでください: ");
scanf("%d",&seat_line);
seat_position = rand() % 8+1;
printf("%d列目の右から%d番目の席を取りました\n",seat_line,seat_position);
return;
}
コンパイルしてみたところ、エラーは出てこないのですが、
お金を入力すると、いくらいれたかにかかわらず5000円のおつりが無限ループのようなかんじで出てきてしまいます><
何がおかしいのでしょうか??
- bitter_fox
- 記事: 607
- 登録日時: 14年前
- 住所: 大阪府