C Einstiegsaufgabe (Uhrzeit)
C Einstiegsaufgabe (Uhrzeit)
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??
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??
-
- Beiträge: 101
- Registriert: Sa Mär 02, 2013 6:53 pm
- Wohnort: Göppingen
Re: C Einstiegsaufgabe (Uhrzeit)
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
.
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
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

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);
}
}
Re: C Einstiegsaufgabe (Uhrzeit)
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
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
-
- Beiträge: 101
- Registriert: Sa Mär 02, 2013 6:53 pm
- Wohnort: Göppingen
Re: C Einstiegsaufgabe (Uhrzeit)
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.

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.
Ist das jetzt auf meinen Beitrag bezogen, dass du nicht alles verstanden hast, oder meinst du, dass du Operatoren bzw. Programmieren allgemein?Lämpi hat geschrieben:also Rest einer Division,ich komm ehrlich gesagt noch nicht ganz mit
Re: C Einstiegsaufgabe (Uhrzeit)
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???
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???
-
- Beiträge: 101
- Registriert: Sa Mär 02, 2013 6:53 pm
- Wohnort: Göppingen
Re: C Einstiegsaufgabe (Uhrzeit)
Oke, damit fang ich schon eher was an.
15 % 12 = 3;
stunden % 12 = Rest aus der Division von stunden/12
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);
}
}
Du hast doch vorher selbst gesagt, dass der Modulo-Operator den Rest der Division angibt.Lämpi hat geschrieben:und wo steht das,dass Modulo 3 ist??
15 % 12 = 3;
stunden % 12 = Rest aus der Division von stunden/12
Re: C Einstiegsaufgabe (Uhrzeit)
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???
das stundenIn muss ich am Anfang schon alls Variable deklarieren oder???
-
- Beiträge: 101
- Registriert: Sa Mär 02, 2013 6:53 pm
- Wohnort: Göppingen
Re: C Einstiegsaufgabe (Uhrzeit)
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
in
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ß
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;
Code: Alles auswählen
stundenIn12 = stunden % 12;
Das nächste Mal überlegst du dir am besten selber den Code, aber Hauptsache du hast den Code kapiert.

Viel Spaß
Re: C Einstiegsaufgabe (Uhrzeit)
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
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

Re: C Einstiegsaufgabe (Uhrzeit)
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??