Zeitenrechner



  • So ich bin noch ziemlicher Anfänger in C++ und hab jetz mal einen Rechner zur Addition und Subtraktion von Zeiten geschrieben!

    Feedbacks und Verbesserungsvorschläge erwünscht!

    Dann hätt ich noch ne Frage:
    Es gibt ja viele Befehle um das Programm anzuhalten welchen sollte man verwenden?
    _getch(),getch() //Conio.h
    getchar()
    system("Pause") //Windowsabhängig

    oder noch andere? :p

    Time.hpp

    #ifndef INCLUDED_TIME_HPP
    #define INCLUDED_TIME_HPP
    
    class Time
    {
    public:
    	Time(int Hour,float Minute);
    	~Time();
    
    	void getHour();
    	void getMinute();
    	void getHourDecimal();
    
    	void setTime(int &Hour,float &Minute);
    	void addTime(int &Hour,float &Minute);
    	void remTime(int &Hour,float &Minute);
    
    private:
    	int hours;
    	float minutes;
    };
    
    #endif
    

    Time.cpp

    #include "Time.hpp"
    
    #include <iostream>
    
    Time::Time(int Hour,float Minute)
    {
    	if(Minute >= 60)
    	{
    		while(Minute >= 60)
    		{
    		++Hour;
    		Minute-=60;
    		}
    		std::cout << Hour << ":" << Minute << "\n\n\n";
    	}
    	hours = Hour;
    	minutes = Minute;
    }
    
    Time::~Time()
    {}
    
    void Time::getHour()
    {
    	std::cout << "Anzahl Stunden: " << hours << "\n\n\n" << std::endl;
    }
    
    void Time::getMinute()
    {
    	std::cout << "Anzahl Minuten: " << minutes << "\n\n\n" << std::endl;
    }
    
    void Time::getHourDecimal()
    {
    	float temp = minutes/60 + hours;
    	std::cout << "Zeit (dezimal): " << temp << "\n\n\n" << std::endl;
    }
    
    void Time::setTime(int &Hour,float &Minute)
    {
    	if(Minute >= 60)
    	{
    		std::cout << "\nwurden umgewandelt zu \n\n";
    	}
    	while(Minute >= 60)
    	{
    		++Hour;
    		Minute-=60;
    	}
    	std::cout << Hour << " Stunden und " << Minute << " Minuten \n\n\n";
    	hours = Hour;
    	minutes = Minute;
    }
    
    void Time::addTime(int &Hour,float &Minute)
    {
    
    	if(Minute >= 60)
    	{
    		std::cout << "\nwurden umgewandelt zu \n\n";
    	}
    	while(Minute >= 60)
    	{
    		++Hour;
    		Minute-=60;
    	}
    	hours += Hour;
    	minutes += Minute;
    	while(minutes >= 60)
    	{
    		++hours;
    		minutes-=60;
    	}
    	std::cout << "\nDie neue Zeit beträgt: " << hours << " Stunden und " << minutes << " Minuten\n\n\n";
    }
    
    void Time::remTime(int &Hour,float &Minute)
    {
    	if(Minute >= 60)
    	{
    		std::cout << "\nwurden umgewandelt zu \n\n";
    		while(Minute >= 60)
    		{
    			++Hour;
    			Minute-=60;
    		}
    		std::cout << Hour << " Stunden und " << Minute << " Minuten\n\n\n";
    	}
    	if ((hours - Hour) < 0 || (minutes - Minute) < 0)
    	{
    		std::cout << "\nEingabe ungültig!\n\n\n";
    	}
    	else
    	{
    		std::cout << "\nDie neue Zeit beträgt: " << hours << " Stunden und " << minutes << " Minuten\n\n\n";
    	}
    }
    

    Main.cpp

    /* 
    	Ich habe hier ein kleines Programm zur Addition 
    	und Subtraktion von Zeiten geschrieben! Bei Fragen 
    	oder Anregungen könnt ihr mich gerne kontaktieren!
    
    	E-Mail:	kevin.winzeler@gmx.net
    	MSN:	kevin.winzeler@hotmail.com
    	ICQ:	406423878
    
    	Version 1.1
    */
    
    #include <locale>
    #include <iostream>
    #include <string>
    #include "Time.hpp"
    using namespace std;
    
    int main()
    {
        std::locale::global(std::locale("German_Switzerland"));
    
    	cout << "*************************************\n"
    		 << "*      Dieses Programm ist zur      *\n"
    		 << "*      Addition und Subtraktion     *\n"
    		 << "*           von Zeiten              *\n"
    		 << "*                                   *\n"
    	     << "*       coded by .:]{e]{e:.         *\n"
    		 << "*                                   *\n"
    		 <<	"*   E-Mail: kevin.winzeler@gmx.net  *\n"
    		 << "*   MSN: kevin.winzeler@hotmail.com *\n"
    		 << "*          ICQ: 406423878           *\n"
    		 << "*************************************\n\n\n\n";
    
    	//Startzeit setzen
    	Time aTime(0,0);
    
    	//Benötigte Variablen
    	int choice;
    
    	int hours;
    	float minutes;
    	int * const pHours = &hours;
    	float * const pMinutes = &minutes;
    	char seperator;
    	bool go_on = true;
    
    	while(go_on != false)
    	{
    		//Menu erzeugen
    		cout << "(1) Neue Startzeit setzen (Standard 0:00)\n";
    		cout << "(2) Zeit hinzuaddieren\n";
    		cout << "(3) Zeit subtrahieren\n";
    		cout << "(4) Stunden ausgeben\n";
    		cout << "(5) Minuten ausgeben\n";
    		cout << "(6) Zeit Dezimal ausgeben\n";
    		cout << "(7) Logo ausgeben\n";
    		cout << "(8) Programm beenden\n\n\n";
    
    		cin >> choice;
    		cout << "\n\n\n";
    
    		//Auswahl ausführen
    		switch(choice)
    		{
    		case 1:
    			{
    				cout << "Geben Sie die Anfangszeit ein: \t";
    				cin >> *pHours >> seperator >> *pMinutes;
    				aTime.setTime(*pHours,*pMinutes);
    				break;
    			}
    		case 2:
    			{
    				cout << "Geben Sie die Zeit ein die Sie hinzuaddieren moechten: \t";
    				cin >> *pHours >> seperator >> *pMinutes;
    				aTime.addTime(*pHours,*pMinutes);
    				break;
    			}
    		case 3:
    			{
    				cout << "Geben Sie die Zeit ein die Sie subtrahieren moechten: \t";
    				cin >> *pHours >> seperator >> *pMinutes;
    				aTime.remTime(*pHours,*pMinutes);
    				break;
    			}
    		case 4:
    			{
    				aTime.getHour();
    				break;
    			}
    		case 5:
    			{
    				aTime.getMinute();
    				break;
    			}
    		case 6:
    			{
    				aTime.getHourDecimal();
    				break;
    			}
    		case 7:
    			{
    				cout << " \n\n\n\n\n\n\n\n"
    					 << "      _________________________________________________________________\n"
    					 << "     ||----------------------------------------------------------------||\n"
    				     << "     ||                                                                ||\n"
    					 << "     ||  ********************    **********    *********************   ||\n"
    					 << "     ||  *********************   **********   **********************   ||\n"
    					 << "     ||                 *******  **********  ********                  ||\n"
    					 << "     ||                  ******* ********** ********                   ||\n"
    					 << "     ||                   *************************                    ||\n"
    					 << "     ||        **********************************************          ||\n"
    					 << "     ||        **********************************************          ||\n"
    					 << "     ||        **********************************************          ||\n"
    					 << "     ||                    ***********************                     ||\n"
    					 << "     ||                   *************************                    ||\n"
    					 << "     ||                  ******* ********** ********                   ||\n"
    					 << "     ||                 *******  **********  ********                  ||\n"
    					 << "     ||  *********************   **********   **********************   ||\n"
    					 << "     ||  ********************    **********    *********************   ||\n"
    					 << "     ||                                                                ||\n"
    					 << "     ||________________________________________________________________||\n"
    					 << "       ----------------------------------------------------------------\n\n\n";
    				getchar();
    				break;
    			}
    		case 8:
    			{
    				go_on = false;
    				break;
    			}
    		//Falsche Eingabe verhindern
    		default:
    			{
    				cout << "Eingabe ungültig!\n\n\n";
    				break;
    			}
    		}
    	}
    	return 0;
    }
    


  • http://www.c-plusplus.net/forum/viewtopic-var-t-is-39320.html

    Naja. Dein Tiimer mach für meinen Geschmack viel zu viel. 😉
    Respektive die Ausgabe gehört so da nicht hin. getter und setter sollten meist recht klein sein und lediglich einen Wert verändenr/zurückgeben. Und sind daher meist inline.

    Für die Ausgabe kannst du ja den << Operator überladen. Oder noch sperate Funktionen schreiben.

    Ansonsten würde ich die case's ein wenig mehr in Klassen portieren, was aber bei der recht kleinen Grösse noch nicht so schlimm ist. Aber nichts ist schlimmer,als ellenlagen case Blöcke, wo man nacher nicht mehr weiss, wo der aufhört. 😉

    btw:

    std::locale::global(std::locale("German_Switzerland"));

    Schweizer?



  • Danke für die Tipps, ich werds mir mal anschauen!

    Und ja ich bin schweizer^^


Anmelden zum Antworten