60日間全力プログラミング

プログラミング初心者が二ヶ月間でどこまでいけるかを記録したプログラミング学習ブログ

R43 1,00 商品番号 数量 値引率を求める

考察
同じものを対象としている文のifを何回も使うときは、else if にしてあげないと反応しない。if if if とかじゃダメ。
i とjの関係性がイマイチ不明瞭。
 
問題
 商品番号と数量を入力する。テーブルより商品名と単価を検索する。
 
 コード 101 102 103 201 202 301 302 401 402 501
 商品名 テレビ ラジオ パソコン CD DVD 掃除機 洗濯機 扇風機 加湿器 炊飯器
 単価 148000 6800 198000 23000 35000 26800 54000 12500 6800 15000
 
 金額、値引き後、税込みを算出する。
 値引率は金額が50万を超えるとき20%、30万を超えるとき10%、10万を超えるとき
5%、それ以外は値引きなしとする。税率は1.05とする。下記のように表示する。
 
   表示例
 
-------------------販売金額算出-------------------
商品番号を入力してください。--->nnn
販売数量を入力してください。--->nn
商品名:XXX 数量:nnn 単価:nnnnnn 金額:nnnnnnnnn
値引率:nn%  値引き後:nnnnnnnnn 税込み:nnnnnnnnn
--------------------------------------------------
 
 
考え方
(1)前処理
  ①商品番号テーブル(bango_t)、商品名テーブル(hinmei_t)、単価テーブル(tanka_t)
   に上記の内容を格納する。なお商品番号テーブルの最後に終了判定用として999を格
   納する。
  ②商品番号(bango)と数量(suryo)を入力する。
  ③検索結果用添え字jに99を格納する
(2)テーブル検索(for文を使用)
  (添え字はiを使用する。初期値は0とし、増分は+1、商品番号テーブルの値が999未満
   の間は繰り返す。)
  ①商品番号テーブルの内容が入力した商品番号と一致した場合は、そのときの添え字i
   をjに格納し、検索を終了(break)する。
(3)商品番号エラーの時(j=99のとき)
  「商品コードが正しくありません。」の表示を行い、以下の処理は実行しない。
(4)金額(kingaku)の算出。   金額=単価×数量
(5)値引率(ritu)の算出。
  ①金額>50万 値引率=20%
  ②金額>30万 値引率=10%
  ③金額>10万 値引率=5%
  ④それ以外   値引率0%
(6)値引き後(nebikigo)を算出する。 値引き後=金額×(1-値引率)÷100
(7)税込み(zeikomi)を算出する。  税込み=値引き後×105÷100
(8)商品名~値引き後までをレイアウトに合わせて表示する。
 
 
#include<stdio.h>
#include
<string.h>

int main(void){
   
   
int i,j,bango,suryo,tanka,kensu,kingaku,nebikiritu,nebikigo,zeikomi;
   
   
int bango_t={101,102,103,201,202,301,302,401,402,501,999};
   
char hinmei_t[
15]={"テレビ","ラジオ","パソコン","CD","DVD","掃除機","洗濯機","扇風機","加湿器","炊飯器"};
   
int tanka_t[]={148000,6800,198000,23000,35000,26800,54000,12500,6800,15000};
   
    printf(
"-------------販売金額算出--------------\n");
    printf(
"商品番号を入力してください。\n");
    scanf(
"%d",&bango);
    printf(
"販売数量を入力してください。\n");
    scanf(
"%d",&suryo);
   
    j=
99;
   
   
for (i=0;bango_t[i]<999; i++) {
       
if (bango_t[i]==bango) {
            j=i;
           
break;
        }
       
    }
   
if (j==99) {
        printf(
"商品コードが正しくありません。\n");
    }
   
else{
   
        kingaku = tanka_t[j] * suryo;
       
if (kingaku>500000) {
            nebikiritu =
20;
        }
       
else if (kingaku>300000) {
            nebikiritu =
10;
        }
       
else if (kingaku>100000) {
            nebikiritu =
5;
        }
       
else{
            nebikiritu =
0;
        }
   
        nebikigo = kingaku * (
100 - nebikiritu) / 100;
        zeikomi  = nebikigo*
108 / 100;
   
        printf(
"商品名:%s  数量:%d  単価:%d  金額:%d \n",hinmei_t[j],suryo,tanka_t[j],kingaku);
        printf(
"値引率:%-2d%%    値引き後:%-9d    税込:%-9d\n",nebikiritu,nebikigo,zeikomi);
        }
       
    printf(
"---------------------------------------\n");
   
   
       
return 0;
   
}