R32 give up 1,00
考察
break;
このやり方でそれぞれの数字に名前を割り当てることができる。入力の手間を省くためにコード入力してもらう時に使えそう。
char buname_t[7][10];
kensu+=1;
keihi_t[kensu]=goukei;
bucode_t[kensu]=9;
keihi_t[kensu]=goukei;
bucode_t[kensu]=9;
strcpy(buname_t[kensu],"合計");
ここら辺のコードの理解が不十分。
問題
【金額は千円単位とする】
表示例
______________________________________________
コード 部門名 経費 比率 按分金額 → 見出し
-----------------------------------------------------
1 総務部 3200 6.4 % 256
2 人事部 9000 18 .0% 720
3 企画部 2000 4 .0% 160
4 営業部 12000 24.0% 960
5 製造部 23800 47.6% 1904
合 計 50000 100.0 % 4000
====================================================== → フッター
考え方
(1)前処理
①件数(kensu)、合計(goukei)を0に設定する。
②部門コード(bucode)と経費(keihi)を入力する。
(2)部門コードが9になるまで次の処理を繰り返す。(while文を使用)
①経費を合計に加算する。(累計)
②件数に1を加算する。(カウント)
④経費を経費テーブル(keihi_t)の該当個所に(件数を添え字)格納する。
添え字)格納する。(上記参照)
⑥二件目以降の部門コードを入力する。
⑦部門コードが9でなければ、経費を入力する。
(3)合計の格納と見出し表示
①件数に1を加える。
②部門コードテーブルの最後に(件数を添え字)9を格納する。
③部門名テーブルの最後に(件数を添え字)"合 計"を格納する。
④見出しを表示する。
(4)率、按分金額の計算と明細の表示(格納した件数分繰り返す)(for文を使用)
①率=部門別経費×100.0÷合計
②按分金額=4000×率÷100
③コード、 部門名、経費、比率、按分金額を表示する。
(5)フッターを表示する。
#include<stdio.h>
#include<string.h>
int main(void){
int i,kensu,goukei,bucode,keihi,anbun;
int bucode_t[7],keihi_t[7];
double ritu;
char buname_t[7][10];
kensu = 0;
goukei= 0;
printf("部門コードが9で終了\n");
printf("部門コードは");
scanf("%d",&bucode);
printf("経費は");
scanf("%d",&keihi);
while (bucode!=9) {
goukei += keihi;
kensu++;
bucode_t[kensu]=bucode;
keihi_t[kensu]=keihi;
switch (bucode) {
case 1:
strcpy(buname_t[kensu],"総務部");
break;
case 2:
strcpy(buname_t[kensu],"人事部");
break;
case 3:
strcpy(buname_t[kensu],"企画部");
break;
case 4:
strcpy(buname_t[kensu],"営業部");
break;
case 5:
strcpy(buname_t[kensu],"製造部");
break;
}
printf("部門コードは");
scanf("%d",&bucode);
if (bucode!=9) {
printf("経費は");
scanf("%d",&keihi);
}
}
kensu+=1;
keihi_t[kensu]=goukei;
bucode_t[kensu]=9;
strcpy(buname_t[kensu],"合計");
printf("コード 部門名 経費 比率 按分金額\n");
printf("-------------------------------------------\n");
for (i=1; i<=kensu; i++) {
ritu = (double)keihi_t[i]*100.0/(double)goukei;
anbun= 4000*ritu/100;
printf(" %d %s %8d %6.1f%% %8d\n",bucode_t[i],buname_t[i],keihi_t[i],ritu,anbun);
}
printf("===========================================\n");
return 0;
#include<string.h>
int main(void){
int i,kensu,goukei,bucode,keihi,anbun;
int bucode_t[7],keihi_t[7];
double ritu;
char buname_t[7][10];
kensu = 0;
goukei= 0;
printf("部門コードが9で終了\n");
printf("部門コードは");
scanf("%d",&bucode);
printf("経費は");
scanf("%d",&keihi);
while (bucode!=9) {
goukei += keihi;
kensu++;
bucode_t[kensu]=bucode;
keihi_t[kensu]=keihi;
switch (bucode) {
case 1:
strcpy(buname_t[kensu],"総務部");
break;
case 2:
strcpy(buname_t[kensu],"人事部");
break;
case 3:
strcpy(buname_t[kensu],"企画部");
break;
case 4:
strcpy(buname_t[kensu],"営業部");
break;
case 5:
strcpy(buname_t[kensu],"製造部");
break;
}
printf("部門コードは");
scanf("%d",&bucode);
if (bucode!=9) {
printf("経費は");
scanf("%d",&keihi);
}
}
kensu+=1;
keihi_t[kensu]=goukei;
bucode_t[kensu]=9;
strcpy(buname_t[kensu],"合計");
printf("コード 部門名 経費 比率 按分金額\n");
printf("-------------------------------------------\n");
for (i=1; i<=kensu; i++) {
ritu = (double)keihi_t[i]*100.0/(double)goukei;
anbun= 4000*ritu/100;
printf(" %d %s %8d %6.1f%% %8d\n",bucode_t[i],buname_t[i],keihi_t[i],ritu,anbun);
}
printf("===========================================\n");
return 0;
}