반응형
C언어 기름값 계산
터미널로 문자열을 입력하여 기름값 계산
이동할 거리 (㎞), 연비 (㎞/ℓ), 리터당 기름값 (₩/ℓ) 을 터미널로 문자열을 입력하여 기름값 계산
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
70
71
72
73
74
75
76
77
78
79
80
81
82
|
/* Calculate the amount and cost of fuel used */
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.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 string to double
double convert(int n, const char input[]) {
char *eptr;
return isValid(n, input) ? strtod(input, &eptr) : -1;
}
// Check convert validigy
bool checkConvert(int distance, int kpl, int fuelCost) {
bool b = distance != -1 && kpl != -1 && fuelCost != -1;
return b;
}
// Calculate
double getTripCost(double distance, double kpl, double fuelCost) {
double tripCost = (distance / kpl) * fuelCost;
return tripCost;
}
// Check convert validity and print result
void printResult(double distance, double kpl, double fuelCost) {
double tripCost;
if (checkConvert(distance, kpl, fuelCost)) {
printf("distance: %.4f (km)\n", distance);
printf("KM/Liter: %.4f (km/l)\n", kpl);
printf("fuelCost: %.4f (won/l)\n", fuelCost);
tripCost = getTripCost(distance, kpl, fuelCost);
printf("Estimate Cost: %.4f KW\n", tripCost);
} else {
printf("Invalid input!!\n");
}
}
// Get string input
void getInputs(char dist[], char fe[], char ppl[]) {
printf("Input Distance (km): ");
scanf("%s", dist);
printf("Input Fuel Efficiency (km/l): ");
scanf("%s", fe);
printf("Input Price per liter (won/l): ");
scanf("%s", ppl);
}
int main() {
// distance(km), fuel efficiency(km/l), fuel cost per liter(won/l)
char dist[20];
char fe[20];
char ppl[20];
// Get input from terminal
getInputs(dist, fe, ppl);
// Convert string to double
double distance = convert(strlen(dist), dist);
double kpl = convert(strlen(fe), fe);
double fuelCost = convert(strlen(ppl), ppl);
// Check convert and print result
printResult(distance, kpl, fuelCost);
}
|
cs |
반응형
'C 언어 > C언어 기초' 카테고리의 다른 글
[C언어 #32] 다른 문자열 포함 여부 (0) | 2020.07.01 |
---|---|
[C언어 #15_2] 점수 학점 변환 (0) | 2020.07.01 |
[C언어 #31] 비만도 (BMI) 계산 (0) | 2020.06.28 |
[C언어 #30] 문자열 합치기 / 이어 붙이기 (0) | 2020.06.28 |
[C언어 #29] 문자열 비교 (0) | 2020.06.28 |