반응형

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 > 1return 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

 

 

반응형