반응형

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

 

반응형