#1
by ぴぴ » 1年前
途中まで書いたのですがエラーがあり、もう少し簡単なコードもあるのではないかと思ってます。
問題文はこちらです。
寄付金の数量を更新する。システムは、従業員が特定の寄付を選択し、受領済みまたは分配済みの数量を示すことができるようにする必要があります。どちらの場合でも、選択された寄付の数量はdonation.txtファイルでそれに応じて更新される必要があります。
例:donation.txt ファイルにあるフェイスマスクの初期数量が100万個であるとします。社会が新しい在庫を受け取った場合、この数量はdonation.txtファイル内の既存の数量100万に追加されなければならない。また、病院への配付の場合は、donation.txt の数量から配付数量を差し引きます。
注:病院に寄付を配布する場合、寄付のコードと配布数をdist.txtという名前のテキストファイルに記録する必要があります。また、各寄付は病院間で共有することができます。
私の書いたコードはこちらなんですが、間違えているところともっといいやり方があれば教えてください。お願いします。
void Received() {
FILE *fp;
fp = fopen("donation.txt", "r+");
struct quantity;
char SupplyCode[6];
char amount[1];
printf("Choose from CT, HS, FM, SM, OM:");
scanf("%s", SupplyCode);
printf("How many do you get:");
scanf("%s", amount);
switch (SupplyCode) {
case 1:
if (strcmp(SupplyCode, "CT") == 0)
quantity.CT = quantity.CT + amount;
break;
case 2:
if (strcmp(SupplyCode, "HS") == 0)
qa.HS = qa.HS + amount;
break;
case 3:
if (strcmp(SupplyCode, "FM") == 0)
qa.FM = qa.FM + amount;
break;
case 4:
if (strcmp(SupplyCode, "SM") == 0)
qa.SM = qa.SM + amount;
break;
case 5:
if (strcmp(SupplyCode, "OM") == 0)
qa.OM = qa.OM + amount;
break;
}
}
void Distributed() {
FILE *fp;
fp = fopen("donation.txt", "r+");
char SupplyCode[6];
char amount;
struct quantity qa;
printf("Choose from CT, HS, FM, SM, OM:");
scanf("%s", SupplyCode);
printf("How many do you send:");
scanf("%s", amount);
switch (SupplyCode) {
case 1:
if (strcmp(SupplyCode, "CT") == 0)
qa.CT = qa.CT - amount;
break;
case 2:
if (strcmp(SupplyCode, "HS") == 0)
qa.HS = qa.HS - amount;
break;
case 3:
if (strcmp(SupplyCode, "FM") == 0)
qa.FM = qa.FM - amount;
break;
case 4:
if (strcmp(SupplyCode, "SM") == 0)
qa.SM = qa.SM - amount;
break;
case 5:
if (strcmp(SupplyCode, "OM") == 0)
qa.OM = qa.OM - amount;
break;
}
}
途中まで書いたのですがエラーがあり、もう少し簡単なコードもあるのではないかと思ってます。
問題文はこちらです。
寄付金の数量を更新する。システムは、従業員が特定の寄付を選択し、受領済みまたは分配済みの数量を示すことができるようにする必要があります。どちらの場合でも、選択された寄付の数量はdonation.txtファイルでそれに応じて更新される必要があります。
例:donation.txt ファイルにあるフェイスマスクの初期数量が100万個であるとします。社会が新しい在庫を受け取った場合、この数量はdonation.txtファイル内の既存の数量100万に追加されなければならない。また、病院への配付の場合は、donation.txt の数量から配付数量を差し引きます。
注:病院に寄付を配布する場合、寄付のコードと配布数をdist.txtという名前のテキストファイルに記録する必要があります。また、各寄付は病院間で共有することができます。
私の書いたコードはこちらなんですが、間違えているところともっといいやり方があれば教えてください。お願いします。
void Received() {
FILE *fp;
fp = fopen("donation.txt", "r+");
struct quantity;
char SupplyCode[6];
char amount[1];
printf("Choose from CT, HS, FM, SM, OM:");
scanf("%s", SupplyCode);
printf("How many do you get:");
scanf("%s", amount);
switch (SupplyCode) {
case 1:
if (strcmp(SupplyCode, "CT") == 0)
quantity.CT = quantity.CT + amount;
break;
case 2:
if (strcmp(SupplyCode, "HS") == 0)
qa.HS = qa.HS + amount;
break;
case 3:
if (strcmp(SupplyCode, "FM") == 0)
qa.FM = qa.FM + amount;
break;
case 4:
if (strcmp(SupplyCode, "SM") == 0)
qa.SM = qa.SM + amount;
break;
case 5:
if (strcmp(SupplyCode, "OM") == 0)
qa.OM = qa.OM + amount;
break;
}
}
void Distributed() {
FILE *fp;
fp = fopen("donation.txt", "r+");
char SupplyCode[6];
char amount;
struct quantity qa;
printf("Choose from CT, HS, FM, SM, OM:");
scanf("%s", SupplyCode);
printf("How many do you send:");
scanf("%s", amount);
switch (SupplyCode) {
case 1:
if (strcmp(SupplyCode, "CT") == 0)
qa.CT = qa.CT - amount;
break;
case 2:
if (strcmp(SupplyCode, "HS") == 0)
qa.HS = qa.HS - amount;
break;
case 3:
if (strcmp(SupplyCode, "FM") == 0)
qa.FM = qa.FM - amount;
break;
case 4:
if (strcmp(SupplyCode, "SM") == 0)
qa.SM = qa.SM - amount;
break;
case 5:
if (strcmp(SupplyCode, "OM") == 0)
qa.OM = qa.OM - amount;
break;
}
}