2012-12-22 11 views
7

अरे दोस्तों मैं सी ++ के लिए नया हूं - मैं एचएच: एमएम प्रारूप का उपयोग करके समय जोड़ने और घटाने के लिए एक प्रोग्राम बनाना चाहता था। नमूना इनपुट:समय जोड़ने और घटाना

12:00 + 3:00 - 6:00 

नमूना आउटपुट:

9:00 

एक और नमूना इनपुट:

9:00 + 8:00 + 13:00 - 2:25 

नमूना आउटपुट:

27:35 

मैं इस बारे में कैसे मिल गया हो? मैं सोच रहा था कि सब कुछ सेकंड में परिवर्तित करें और फिर गणित को लागू करें, फिर समय लौटने के लिए मॉड्यूलस 60 फ़ंक्शन का उपयोग करें। इस तरह के एक कार्यक्रम के निर्माण पर कोई मदद?

+0

लगता है जैसे आप यह मिल गया है। सौभाग्य!। – littleadv

+0

एकमात्र मुद्दा यह है कि मुझे निम्न शीर्षलेख फ़ाइल और समय वर्ग – Emptypeace

+1

का उपयोग करने की आवश्यकता है, इसके लिए आपको समय की आवश्यकता नहीं है .. यह समय बर्बाद होगा .. (कोई इरादा नहीं है) .. आप क्या आवश्यकता बहुत बुनियादी है और सामान्य अंकगणितीय परिचालनों के साथ आसानी से हासिल किया जा सकता है। – iKlsR

उत्तर

1

this (भाग 1) और this (भाग 2) होना चाहिए बिल्कुल आप क्या चाहते हैं ..

आप एक स्पष्ट विवरण और लाइन द्वारा कोड लाइन के माध्यम से लेखक चरणों मिलता है और वह भी सबसे अच्छा अभ्यास का उपयोग करता है ।

+1

तो, सबसे अच्छा अभ्यास क्या है? क्या आप यहां जवाब में इसका वर्णन करने जा रहे हैं? (अन्यथा यह एक लिंक-केवल उत्तर है, जो निराश है।) – jogojapan

+0

.. सर्वोत्तम अभ्यास, मैं थोड़ा अस्पष्ट था मुझे लगता है ..लेकिन मेरे संगठन और प्रस्तुति के लिए, उन्होंने स्पष्ट रूप से बताया कि वह क्या चाहते थे और कोड अलग फाइलों में अच्छी तरह से रखा गया है .. आदि और इस मामले में, ऐसा कुछ और नहीं था जिसे मैं टाइप कर सकता था जिसे पूरी तरह से समझाया नहीं गया होता लिंक (ओं) .. – iKlsR

+0

कृपया अगली बार कुछ कोड शामिल करें। 20 मिनट के वीडियो से केवल लिंक करना एक प्रश्न का उत्तर देने का एक अच्छा तरीका नहीं है। –

0

सरल समाधान सिर्फ पूर्णांक (std::istream का उपयोग) में इनपुट पार्स उन्हें एक tm (<time.h> में परिभाषित प्रकार) में डालें, और mktime फोन (भी <time.h> में) है। (सी ++ 11 में समय संभालने के लिए कुछ नई चीजें हैं, लेकिन मैं अभी तक इसके साथ वास्तव में परिचित नहीं हूं।)

1

आपको 'समय' से क्या मतलब है, इस पर विचार करने की आवश्यकता है। दो अवधारणाएं, समय बिंदु और अवधि हैं। यह एक दूसरे से समय बिंदु जोड़ने या घटाने का कोई मतलब नहीं है। यह अवधि को जोड़ने और घटाने के लिए समझ में आता है (जिसके परिणामस्वरूप अवधि होती है), और एक समय बिंदु के साथ एक अवधि जोड़ने और घटाने का अर्थ होता है (जिसके परिणामस्वरूप एक समय बिंदु होता है।

कई बार एपीआई बहुत अच्छा नहीं करते हैं काम दो अवधारणाओं के बीच फर्क है, लेकिन मानक सी ++ <chrono> पुस्तकालय काफी अच्छी तरह से करता है।

यहाँ कुछ कोड है कि आदेश उपयोगकर्ता से एक जोड़े को अवधियों प्राप्त करने के लिए गाली सी tm प्रकार, उन्हें एक साथ जोड़ता है, और इसके बाद गाली फिर tm परिणाम आउटपुट करने के लिए।

#include <iostream> // cout, cin 
#include <iomanip> // get_time, put_time 
#include <chrono> // hours, minutes, duration_cast 

int main() { 
    // input, get a couple durations to do arithmetic on 
    // technically std::tm represents a time point and get_time is supposed to 
    // parse a time point, but we treat the results as a duration 
    std::tm t; 
    std::cin >> std::get_time(&t, "%H:%M"); 

    auto duration1 = std::chrono::hours(t.tm_hour) + std::chrono::minutes(t.tm_min); 

    std::cin >> std::get_time(&t, "%H:%M"); 
    auto duration2 = std::chrono::hours(t.tm_hour) + std::chrono::minutes(t.tm_min); 

    // do the arithmetic 
    auto sum = duration1 + duration2; 

    // output 
    auto hours = std::chrono::duration_cast<std::chrono::hours>(sum); 
    auto minutes = std::chrono::duration_cast<std::chrono::minutes>(sum - hours); 

    t.tm_hour = hours.count(); 
    t.tm_min = minutes.count(); 

    std::cout << std::put_time(&t, "%H:%M") << '\n'; 
} 
0

मैं w सी ++ के लिए एक नौसिखिया के रूप में एक कार्यक्रम के लिए प्रश्न अनुरोध के रूप में कुछ कोड साझा करने के लिए anted। यह सही कोड नहीं है लेकिन सी ++ के लिए नए व्यक्ति के लिए अच्छा हाथ हो सकता है। यह समय टिकटें के अतिरिक्त और घटाव को संबोधित करेगा। यानी आप और अतिरिक्त सत्यापन जोड़ना पड़ सकता है दिन, सेकंड और मिलीसेकेंड प्रतिनिधित्व करने के लिए बढ़ाया जा सकता है ...

#include <iostream> 
#include <string> 

using namespace std; 

/// Represents the timestamp in HH:MM format 
class Time { 
public: 
    // Construct the time with hours and minutes 
    Time(size_t hours, size_t mins); 

    // Construct the time using a string 
    Time(const string& str); 

    // Destructor 
    ~Time() {} 

    // Add a given time 
    Time operator + (const Time& rTime) const; 

    // Subtract a given time 
    Time operator - (const Time& rTime) const; 

    // Get the members 
    int Hours() const { return m_Hours; } 
    int Minutes() const { return m_Minutes; } 

    // Get the time as a string in HH:MM format 
    string TimeStr(); 

private: 
    // Private members 
    int m_Hours; // Hours 
    int m_Minutes; // Minutes 
}; 

// Constructor 
Time::Time(size_t hours, size_t mins) { 
    if (hours >= 60 || mins >= 60) { 
     cout << "Invalid input" << endl;  
     exit(0); 
    } 

    // Update the members 
    m_Hours = hours; 
    m_Minutes = mins; 
} 

// Add the given time to this 
Time Time::operator + (const Time& rTime) const { 
    // Construct the time 
    int nTotalMinutes(m_Minutes + rTime.Minutes()); 
    int nMinutes(nTotalMinutes % 60); 
    int nHours(nTotalMinutes/60 + (m_Hours + rTime.Hours())); 

    // Return the constructed time 
    return Time(nHours, nMinutes); 
} 

// Construct the time using a string 
Time::Time(const string& str) { 
    if(str.length() != 5 || str[2] != ':') { 
     cout << "Invalid time string. Expected format [HH:MM]" << endl; 
     exit(0); 
    } 

    // Update the members 
    m_Hours = stoi(str.substr(0, 2)); 
    m_Minutes = stoi(str.substr(3, 2)); 
} 

// Substact the given time from this 
Time Time::operator - (const Time& rTime) const { 
    // Get the diff in seconds 
    int nDiff(m_Hours*3600 + m_Minutes*60 - (rTime.Hours()*3600 + rTime.Minutes()*60)); 

    int nHours(nDiff/3600); 
    int nMins((nDiff%3600)/60); 

    // Return the constructed time 
    return Time(nHours, nMins); 
} 

// Get the time in "HH:MM" format 
string Time::TimeStr() { 
    // Fill with a leading 0 if HH/MM are in single digits 
    return ((m_Hours < 10) ? string("0") + to_string(m_Hours) : to_string(m_Hours)) 
      + string(":") 
      + ((m_Minutes < 10) ? string("0") + to_string(m_Minutes) : to_string(m_Minutes)); 
} 


int main() { 
    Time time1("09:00"); // Time 1 
    Time time2("08:00"); // Time 2 
    Time time3("13:00"); // Time 3 
    Time time4("02:25"); // Time 4 

    //time1 + time 2 + time3 - time4 
    cout << (time1 + time2 + time3 - time4).TimeStr() << endl; 

    return 0; 
} 

आउटपुट: 27:35

संबंधित मुद्दे