Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C प्रोग्राम: दो समय अवधियों का अंतर निकालना

समस्या

शुरुआत और समाप्ति समय (घंटे, मिनट, सेकंड) दर्ज करें और उनका अंतर निकालें।

लॉजिक

सेकंड्स और मिनट्स में उधार (बोरो) लेकर घटाव करें।

while(stop.sec > start.sec) {
    start.min--;
    start.sec += 60;
}
diff.sec = start.sec - stop.sec;

while(stop.min > start.min) {
    start.hrs--;
    start.min += 60;
}
diff.min = start.min - stop.min;
diff.hrs = start.hrs - stop.hrs;

C प्रोग्राम

#include <stdio.h>

struct time {
    int hrs, min, sec;
};

void diff_between_time(struct time start, struct time stop, struct time *diff);

int main() {
    struct time start_time, stop_time, diff;
    printf("Enter start time (hrs min sec): ");
    scanf("%d %d %d", &start_time.hrs, &start_time.min, &start_time.sec);
    printf("Enter stop time (hrs min sec): ");
    scanf("%d %d %d", &stop_time.hrs, &stop_time.min, &stop_time.sec);
    diff_between_time(start_time, stop_time, &diff);
    printf("Time Diff: %02d:%02d:%02d - %02d:%02d:%02d = %02d:%02d:%02d\n",
           start_time.hrs, start_time.min, start_time.sec,
           stop_time.hrs, stop_time.min, stop_time.sec,
           diff.hrs, diff.min, diff.sec);
    return 0;
}

void diff_between_time(struct time start, struct time stop, struct time *diff) {
    while (stop.sec > start.sec) {
        start.min--;
        start.sec += 60;
    }
    diff->sec = start.sec - stop.sec;
    while (stop.min > start.min) {
        start.hrs--;
        start.min += 60;
    }
    diff->min = start.min - stop.min;
    diff->hrs = start.hrs - stop.hrs;
}

आउटपुट

Enter start time: 12 45 57
Enter stop time: 20 35 20
Time Diff: 12:45:57 - 20:35:20 = -08:10:37

नोट

यदि स्टॉप टाइम स्टार्ट टाइम से पहले है, तो परिणाम नेगेटिव होगा। वास्तविक उपयोग में निरपेक्ष अंतर या 24-घंटे रैप-अराउंड हैंडल करें।

बेहतर दृष्टिकोण: कुल सेकंड्स में बदलें

int to_seconds(struct time t) {
    return t.hrs * 3600 + t.min * 60 + t.sec;
}

void diff_time(struct time t1, struct time t2, struct time *diff) {
    int sec1 = to_seconds(t1);
    int sec2 = to_seconds(t2);
    int diff_sec = sec1 - sec2; // या abs(sec1 - sec2)
    diff->hrs = diff_sec / 3600;
    diff_sec %= 3600;
    diff->min = diff_sec / 60;
    diff->sec = diff_sec % 60;
}
  1. C प्रोग्राम: डेकागन (Decagon) का परिमाप C प्रोग्राम: डेकागन (Decagon) का परिमाप

    डेकागन क्या है? भुजा दी गई है, कार्य डेकागन का परिमाप निकालना है। डेकागन एक प्रकार का बहुभुज है जिसमें 10 भुजाएं होती हैं, इसलिए इसे 10-गॉन बहुभुज भी कहा जाता है। इसमें 10 शीर्ष और किनारे होते हैं। एक नियमित डेकागन की भुजाएं समान लंबाई की होती हैं और प्रत्येक आंतरिक कोण 144° होता है। परिमाप का सूत्र

  1. C++ में दो संकेंद्रीय वृत्तों के बीच का क्षेत्रफल गणना करें C++ में दो संकेंद्रीय वृत्तों के बीच का क्षेत्रफल गणना करें

    संकेंद्रीय वृत्त क्या है?संकेंद्रीय वृत्त का अर्थ है वृत्त के अंदर वृत्त जिसका मतलब है कि वे सामान्य केंद्र साझा करते हैं लेकिन अलग-अलग त्रिज्या लंबाई के साथ यानी r1 और r2 जहां, r2>r1। दो संकेंद्रीय वृत्तों के बीच का क्षेत्रफल एन्यूलस के रूप में जाना जाता है।नीचे संकेंद्रीय वृत्त का चित्र दिया गय

  1. एक्सेल में दो संख्याओं के बीच प्रतिशत अंतर कैसे निकालें एक्सेल में दो संख्याओं के बीच प्रतिशत अंतर कैसे निकालें

    प्रतिशत अंतर की गणना आमतौर पर तब की जाती है जब आप दो संख्याओं के बीच प्रतिशत में अंतर जानना चाहते हैं। माइक्रोसॉफ्ट ऑफिस एक्सेल एक बेहतरीन टूल है जो आपको शुरुआत करने में मदद करता है। इस पोस्ट में, हम एक्सेल में 2 संख्याओं के बीच प्रतिशत अंतर निकालने की विधि देखते हैं। एक्सेल में दो संख्याओं के बीच प