アプリ版:「スタンプのみでお礼する」機能のリリースについて

プログラミングについて再度質問です。ソースコード教えて欲しいです。stdilbとかEXIT使わない簡単なやつ教えて欲しいです。注文多くてすいません。
定価と消費税率(%)を引数として税込価格を返す price関数を作成
– 定価はint型、税率はdouble型、税込価格はdouble型とする
– main関数内でprice関数を呼び出し税込価格を計算させる
– price関数はmain関数の後に記述する
– 定価、税率(%)、税込価格を表示する(main関数内)
–税込価格の表示は小数点以下の値も表示する(四捨五入や切り捨ての必要なし)

A 回答 (3件)

#include <stdio.h>



double price(int reg_price, double tax_ratio);

int main(int argc, char** argv) {
 int reg_price = 0;
 int tax_ratio = 0;
 int count = 0;
 int carry = 1;
 int base = 10;
 if (argc != 3) {
  return 1;
 }
 for (int i = 0; argv[1][i] != '\0'; i++) {
  count++;
 }
 for (int i = 0; argv[1][i] != '\0'; i++) {
  for (int j = count; j > 1; j--) {
   carry *= base;
 }
 reg_price += (argv[1][i] - '0') * carry;
 }
 count = 0;
 for (int i = 0; argv[2][i] != '\0'; i++) {
  count++;
 }
 carry = 1;
 for (int i = 0; argv[2][i] != '\0'; i++) {
  for (int j = count; j > 1; j--) {
   carry *= base;
  }
  tax_ratio += (argv[2][i] - '0') * carry;
 }
 printf("%lf\n", price(reg_price, tax_ratio/100.0));
 return 0;
}

double price(int reg_price, double tax_ratio) {
 return reg_price * (1 + tax_ratio);
}

/*
> stdilbとかEXIT使わない簡単なやつ教えて欲しいです。

適切なライブラリを用いないとむしろコードがややこしくなる、って事を知るべきだ。

*/
    • good
    • 1

おっと。

バグってるの書いちまった。
ほらな、コードがややこしくなるとバグの混入率も高くなるんだよ。

/* 修正版 */

#include <stdio.h>

double price(int reg_price, double tax_ratio);

int main(int argc, char** argv) {
 int reg_price = 0;
 int tax_ratio = 0;
 int count = 0;
 int carry = 1;
 int base = 10;
 if (argc != 3) {
  return 1;
 }
 for (int i = 0; argv[1][i] != '\0'; i++) {
  count++;
 }
 for (int i = 0; argv[1][i] != '\0'; i++) {
  for (int j = count - i; j > 1; j--) {
   carry *= base;
  }
  reg_price += (argv[1][i] - '0') * carry;
  carry = 1;
 }
 count = 0;
 for (int i = 0; argv[2][i] != '\0'; i++) {
  count++;
 }
 carry = 1;
 for (int i = 0; argv[2][i] != '\0'; i++) {
  for (int j = count - i ; j > 1; j--) {
   carry *= base;
  }
  tax_ratio += (argv[2][i] - '0') * carry;
  carry = 1;
 }
 printf("%lf\n", price(reg_price, tax_ratio/100.0));
 return 0;
}

double price(int reg_price, double tax_ratio) {
 return reg_price * (1 + tax_ratio);
}
    • good
    • 1

おっと、バグってるの書いちまった。


ほらな、コードがメンド臭くなるとバグの混入率も高くなるんだよ。

/* 修正版 */

#include <stdio.h>

double price(int reg_price, double tax_ratio);

int main(int argc, char** argv) {
 int reg_price = 0;
 int tax_ratio = 0;
 int count = 0;
 int carry = 1;
 int base = 10;
 if (argc != 3) {
  return 1;
 }
 for (int i = 0; argv[1][i] != '\0'; i++) {
  count++;
 }
 for (int i = 0; argv[1][i] != '\0'; i++) {
  for (int j = count - i; j > 1; j--) {
   carry *= base;
  }
  reg_price += (argv[1][i] - '0') * carry;
  carry = 1;
 }
 count = 0;
 for (int i = 0; argv[2][i] != '\0'; i++) {
  count++;
 }
 carry = 1;
 for (int i = 0; argv[2][i] != '\0'; i++) {
  for (int j = count - i ; j > 1; j--) {
   carry *= base;
  }
  tax_ratio += (argv[2][i] - '0') * carry;
  carry = 1;
 }
 printf("%lf\n", price(reg_price, tax_ratio/100.0));
 return 0;
}

double price(int reg_price, double tax_ratio) {
 return reg_price * (1 + tax_ratio);
}
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!