반응형
C언어 기름값 계산
이동할 거리 (㎞), 연비 (㎞/ℓ), 기름값 (₩/ℓ)
Calculate the amount and cost of fuel used
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
/* Calculate the amount and cost of fuel used */
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <limits.h>
// Check validity
bool isValid(int n, const char input[]) {
int count = 0;
// for (int i = 0; input[i] != '\0'; i++) {
for (int i = 0; i < n; i++) {
if (!isdigit(input[i])) {
if (input[i] == '.') {
count += 1;
if (count > 1) return false;
} else {
return false;
}
}
}
return true;
}
// Convert
double convert(int n, const char input[]) {
char *eptr;
return isValid(n, input) ? strtod(input, &eptr) : -1;
}
bool checkConvert(int distance, int kpl, int fuelUsed) {
bool b = distance != -1 && kpl != -1 && fuelUsed != -1;
return b;
}
void printInvalid() {
printf("Invalid input!!\n");
fprintf(stderr, "Try: .\\fuel or .\\fuel Distance (km), Fuel Efficiency (km/l), Fuel Cost (won/l)\n");
fprintf(stderr, "ex. .\\fuel 1000 15.49 1238\n");
}
// Calculate
double getTripCost(double distance, double kpl, double fuelUsed) {
double tripCost = (distance / kpl) * fuelUsed;
return tripCost;
}
int main(int n, char *args[n]) {
if (n == 4) {
double distance = convert(strlen(args[1]), args[1]);
printf("distance: %f (KM)\n", distance);
double kpl = convert(strlen(args[2]), args[2]);
printf("KM/Liter: %f (km/l)\n", kpl);
double fuelUsed = convert(strlen(args[3]), args[3]);
printf("fuelUsed: %f (liter)\n", fuelUsed);
double tripCost;
if (checkConvert(distance, kpl, fuelUsed)) {
tripCost = getTripCost(distance, kpl, fuelUsed);
printf("Estimate Cost: ""%.4f KW\n", tripCost);
} else {
printInvalid();
}
} else {
printInvalid();
}
return 0;
}
|
cs |
반응형
'C 언어 > C언어 기초' 카테고리의 다른 글
[C언어 #16] 100이하 가장 큰 소수 (0) | 2020.06.21 |
---|---|
[C언어 #15] 점수 학점 변환 (0) | 2020.06.20 |
[C언어 #13] 입력한 숫자까지의 합 (0) | 2020.06.19 |
[C언어 #12] 배열의 합과 평균 (0) | 2020.06.18 |
[C언어 #11] 2개 배열의 최대값 최소값 (0) | 2020.06.18 |