関数の中で入力したn,m,k,がどれも1>=0の時、その中で最小のものに40をかけて値引きをするプログラムを組んでいます。n=1,m=2,k=3の時は-40されて正しい結果が得られるのですが、n=3,m=2,k=1の時は-120されてしまいます。おそらくソートが正しくできていないのだと思います。どのように修正すればいいのでしょうか?
lang
1#include <stdio.h> 2#include <math.h> 3 4int main(void) { 5 void TotalPrice(int, int, int, int*, int*, int*); 6 int n, m, k, C, Tax, S; 7 8 printf("肉の数"); 9 fflush(0); 10 scanf("%d", &n); 11 printf("豆の数"); 12 fflush(0); 13 scanf("%d", &m); 14 printf("あめの個数"); 15 fflush(0); 16 scanf("%d", &k); 17 18 TotalPrice(n, m, k, &C, &Tax, &S); 19 printf("税抜き価格=%d円\n", C); 20 printf("消費税=%d円\n", Tax); 21 printf("税込み価格=%d円\n", S); 22 23 return (0); 24} 25 26void TotalPrice(int x, int y, int z, int *a, int *b, int *c) 27{ 28 29 30 31 if (x > 0 && y > 0 && z > 0) { 32 int i, j, jmin, datamin; 33 int data[3] = { x,y,z }; 34 for (i = 0; i < 2; i++) { 35 datamin = data[i]; 36 jmin = i; 37 38 for (j = i + 1; j < 3; j++) { 39 if (data[j] < jmin) { 40 jmin = j; 41 datamin = data[j]; 42 43 } 44 45 } 46 data[jmin] = data[i]; 47 data[i] = datamin; 48 } 49 50 51 *a = ((120 * x) + (100 * y) + (250 * z) )- (40 * data[0]); 52 *b = (((120 * x) + (100 * y) + (250 * z)) - (40 * data[0])) * 0.08; 53 *c = *a + *b; 54 } 55 else { 56 57 *a = (120 * x) + (100 * y) + (250 * z); 58 *b = ((120 * x) + (100 * y) + (250 * z)) * 0.08; 59 *c = *a + *b; 60 61 } 62 63} 64
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。