C Einstiegsaufgabe (Uhrzeit)

Schnelle objektorientierte, kompilierende Programmiersprache.
Lämpi
Beiträge: 57
Registriert: So Mär 23, 2014 4:46 pm

C Einstiegsaufgabe (Uhrzeit)

Beitrag von Lämpi » So Mär 23, 2014 4:54 pm

Hallo Leute,

Ich fang gerade erst an C zu programmiern, und hab folgende Aufgabe bekommen

ich soll ein Programm schreiben wo man eine Uhrzeit im 24h Format eingibt , und dann in eine Uhrzeit im 12h Format umwandelt.Es soll auch testen ob die eingegebenen Uhrzeiten auch gültig sind , und eine Fehlermeldung ausgeben wenn nicht.Könnt ihr mir tipps geben wie ich das am besten mache

Also folgendes ist klar

#include <stdio.h>

int main() {

int Stunden;
int Minuten;

printf("Bitte geben sie ein Uhrzeit im 24 Stunden Format ein!!!\n");
scanf("%i:%i",&Stunden,&Minuten);

wie kann ich das jetzt am besten durchführen??

FritziFoppel
Beiträge: 101
Registriert: Sa Mär 02, 2013 6:53 pm
Wohnort: Göppingen

Re: C Einstiegsaufgabe (Uhrzeit)

Beitrag von FritziFoppel » So Mär 23, 2014 7:03 pm

Tach,

Wenn ich dich richtig verstehe versuchst du sowas hier zu programmieren:

Eingabe: 12:35 -> Ausgabe: 12:35
Eingabe: 17:40 -> Ausgabe: 5:40

Am besten ist es, wenn du zuerst überprüfst ob der eingegebene Wert auch gültig ist bevor du ihn veränderst. Macht Sinn :mrgreen: .
Da die die Uhrzeit nur zwischen 0:00 und 23:59 angegeben werden kann, überprüfst du ob die Zahl eben in diesem Bereich liegt. Am besten mit einer einfachen if-Abfrage.
Danach schaust du ob der Wert kleiner/gleich als 12:59 ist, da ansonsten keine Veränderung gemacht werden muss. Ist der Wert größer muss ja nur der Wert der Stunden umgewandelt werden. Hierbei hilft die der "%"-Operator (Google mal falls der dir nichts sagt).
Am Ende gibst du den veränderten Stundenwert aus und hängst einfach die Minuten hinten an.

Zuerst selber überlegen, dann weiter lesen!
Falls du bis hierher gelesen hast und immer noch nicht weißt wie du anfangen sollst: ein bisschen Code

Code: Alles auswählen

if((stunden <= 23 && stunden >= 0) && (minuten <= 59 && minuten >= 0))
{
	if(stunden > 12)
	{
		stunden % 12 = stundenIn12;
		printf("%d:%d", stundenIn12, minuten);
	}
	else
	{
		printf("%d:%d", stunden, minuten);
	}
	
}

Lämpi
Beiträge: 57
Registriert: So Mär 23, 2014 4:46 pm

Re: C Einstiegsaufgabe (Uhrzeit)

Beitrag von Lämpi » So Mär 23, 2014 7:18 pm

hey, danke für dein Beitrag

das % bedutet doch Modulo,oder?? also Rest einer Division,ich komm ehrlich gesagt noch nicht ganz mit

es sollte halt z.B bei einer Eingabe von 15:30---->3:30 ausgegeben werden

FritziFoppel
Beiträge: 101
Registriert: Sa Mär 02, 2013 6:53 pm
Wohnort: Göppingen

Re: C Einstiegsaufgabe (Uhrzeit)

Beitrag von FritziFoppel » So Mär 23, 2014 7:24 pm

Da hast du absolut recht. ;)
Wenn du eine Uhrzeit eingibst die über 12 ist, also 15:30 und diese dann durch 12 teilst, bekommst du mit dem Modulo-Operator 3 heraus. 3:30.
Lämpi hat geschrieben:also Rest einer Division,ich komm ehrlich gesagt noch nicht ganz mit
Ist das jetzt auf meinen Beitrag bezogen, dass du nicht alles verstanden hast, oder meinst du, dass du Operatoren bzw. Programmieren allgemein?

Lämpi
Beiträge: 57
Registriert: So Mär 23, 2014 4:46 pm

Re: C Einstiegsaufgabe (Uhrzeit)

Beitrag von Lämpi » So Mär 23, 2014 7:31 pm

Hey

ich meinte deinen Quellcode habe ich noch nicht ganz durchschaut.

was bedeutet das stundenIn?? und das else das gehört zu der letzteren if Anweisung ,oder???

FritziFoppel
Beiträge: 101
Registriert: Sa Mär 02, 2013 6:53 pm
Wohnort: Göppingen

Re: C Einstiegsaufgabe (Uhrzeit)

Beitrag von FritziFoppel » So Mär 23, 2014 7:42 pm

Oke, damit fang ich schon eher was an.
Lämpi hat geschrieben:ich meinte deinen Quellcode habe ich noch nicht ganz durchschaut.

Code: Alles auswählen

if((stunden <= 23 && stunden >= 0) && (minuten <= 59 && minuten >= 0)) 
//Hier wird überprüft, ob die Stunden/Minuten dem gültigen Bereich entsprechen. 
//Stunden muss zwischen 0 und 12 liegen und Minuten zwischen 0 und 59. Soweit die erste if-Anweisung
{
   if(stunden > 12) 
   //Wenn Stunden größer als 12 ist, muss etwas geändert werden
   {
      stunden % 12 = stundenIn12; 
      //stundenIn12 hab ich aus Gründen der Verständnis gewählt, es soll eine normale Variable sein, in der Wert der Stunden gespeichert wird, 
      //falls er größer als 12 ist (kannst du auch anders nennen)
      printf("%d:%d", stundenIn12, minuten);
   }
   else // die else-Anweiung zur letzten if-Anweisung
   {
      printf("%d:%d", stunden, minuten);
   }
}
Lämpi hat geschrieben:und wo steht das,dass Modulo 3 ist??
Du hast doch vorher selbst gesagt, dass der Modulo-Operator den Rest der Division angibt.
15 % 12 = 3;
stunden % 12 = Rest aus der Division von stunden/12

Lämpi
Beiträge: 57
Registriert: So Mär 23, 2014 4:46 pm

Re: C Einstiegsaufgabe (Uhrzeit)

Beitrag von Lämpi » So Mär 23, 2014 7:47 pm

ok danke jetzt hab ich es eigentlich verstanden,habs auch probiert zu kompilieren aber er bringt noch Fehler.
das stundenIn muss ich am Anfang schon alls Variable deklarieren oder???

FritziFoppel
Beiträge: 101
Registriert: Sa Mär 02, 2013 6:53 pm
Wohnort: Göppingen

Re: C Einstiegsaufgabe (Uhrzeit)

Beitrag von FritziFoppel » So Mär 23, 2014 7:57 pm

Für eine Einstiegsaufgabe solltest du dir eigentlich den Code selbst überlegen und nicht von irgendjemand schreiben lassen.
Aber ich denke, wenn du den Code soweit übernommen hast, sollte der Compiler deshalb meckern, ja.
Außerdem musst du

Code: Alles auswählen

stunden % 12 = stundenIn12;
in

Code: Alles auswählen

stundenIn12 = stunden % 12;
verändern, da du eine Zuweisung auf stundenIn12 machst.

Das nächste Mal überlegst du dir am besten selber den Code, aber Hauptsache du hast den Code kapiert. ;)
Viel Spaß

Lämpi
Beiträge: 57
Registriert: So Mär 23, 2014 4:46 pm

Re: C Einstiegsaufgabe (Uhrzeit)

Beitrag von Lämpi » So Mär 23, 2014 8:05 pm

hey vielen Dank,
ich hatte ein Programm ,dass aber sehr unkonventionell war,und einige Fehler drin hatte.Ich fang gerade erst an mit dem c programmieren, mach das erst seit 2 Wochen,studiere Physik und da ist das ein Pflichtkurs eben,bin nicht so der Meister im Programmieren,aber ich versuch es zu kapieren,bin auch immer brav am üben.

Nochmals vielen lieben Dank,jetzt weiß ich schon deutlich mehr :D

Lämpi
Beiträge: 57
Registriert: So Mär 23, 2014 4:46 pm

Re: C Einstiegsaufgabe (Uhrzeit)

Beitrag von Lämpi » So Mär 23, 2014 8:08 pm

ein Problem hab ich noch ,das ich bei meinem Programm auch hatte nämlich wenn ich z.B 17:03 eingebe kommt 5:3 heraus ,die Null vor dem 3er, wie krieg ich die dazu??

Antworten