私は、収入に基づいて、世帯で誰が何を支払うべきかを判断するプログラムを書いています。望ましい動作は次のとおりです。
- ウェルカム メッセージを印刷し、世帯の人数を尋ねます。
- 入力した数が 10 以下の場合は、名前を尋ねます。
- 一人一人の収入を聞いてください。<-ここが問題です
- 総収入を表示します。
- 結果を計算して表示します。
明らかに、このプログラムは完全ではなく、ユーザーが負の値を入力するのを止める必要がありますが、最大の問題は、ユーザーが各個人の収入を入力するときにリターン キーを押すと、それ以上ユーザー入力を求められず、totalEarnings が出てくることです。 0 として。
私は C++ でのプログラミングに慣れているので、C の癖を見逃していることを願っています。
main.c
#include <stdio.h>
int main(void){
short numberOfPeople = 0;
char* names[10] = {0,0,0,0,0,0,0,0,0,0};
float earnings[10] = {0,0,0,0,0,0,0,0,0,0};
float totalEarnings = 0;
float bills = 0;
printf("Welcome!\nThis program calculates who should pay what for the bills in a proportional manner, based upon each persons income.\nHow many people are in your household?\n\n");
do {
printf("You can enter up to 10: ");
scanf("%d", &numberOfPeople);
} while(numberOfPeople > 10);
puts("");
for(short j = 0; j < numberOfPeople; ++j){
printf("What is person %d's name? ", j+1 );
scanf(" %s", &names[j]);
}
puts("");
for(short i = 0; i < numberOfPeople; ++i){
printf("How much did %s earn this month? ", &names[i]);
scanf(" %.2f", &earnings[i]);
totalEarnings += earnings[i];
}
printf("\nTotal earnings are %.2f.\n\n", &totalEarnings);
printf("How much are the shared bills in total? ");
scanf(" %.2f", &bills);
puts("");
for(short k = 0; k < numberOfPeople; ++k){
printf("%s should pay %.2f", &names[k], &bills);
}
puts("");
return 0;
}