zeit -> Passwort
-
Hey,
ich hab vor kurzem mit C und C++ angefangen. Hab mir auch n Buch gekauft, welches das alles sehr schön erklärt. So Dann hab ich bissle rumgespielt und n kleines Konsolen-Programm geschrieben, dass jemanden ein vordeffiniertes passwort abfragt, bevor es einem zugang zu dem Programm gibt, dass man eigentlich öffnen will.so siehts aus:
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> int main(int argc, char *argv[]) { int Anzahl = 0; int Anzahl2 = 3; int zahl1; int zahl2; int zahl3; int zahl4; Start : printf("Das ist ihr %d. Versuch \n",Anzahl+1); printf("Gib deinen Passwort ein:\n"); zahl1=getch(); zahl2=getch(); zahl3=getch(); zahl4=getch(); //printf("Sie haben %c%c%c%c%c eingegeben\n",zahl1,zahl2,zahl3,zahl4); if (Anzahl <= 1) { if(zahl1 == '1' && zahl2 == '2' && zahl3 == '3' && zahl4 == '4') { printf("Das Eingegebene Passwort ist richtig.\n"); goto Weiter; } else { printf("Das eingegebene Passwort war falsch.\n"); Anzahl++; system("cls"); goto Start; } } else { printf("Sie haben 3 mal ein falsches Passwort eingegeben \n"); system("pause"); return 0; } Weiter : printf("\nSie haben nun Zugriff auf die Datei.\n"); system("PAUSE"); system( "\"C:\\Programme\\Mozilla Firefox\\firefox.exe\"" ); system("EXIT"); return 0; }So ich hab die .exe datei, mit dem Firefox-Symbol versehen und es Firefox genannt und das firefox.exe durch ein Professionelles Programm versteckt ^^
(is ja nur ne spielerei, ich weiß, dass es auch einfacher geht)Im mom muss man ja das Passwort: 1234 eintippen.
Meine Frage:
Ist es möglich, bzw wie bekomm ich es hin, dass sich das Passwort nach der Uhr richtet? Nehmen wir an es ist 21:34. Dann soll das Passwort 2143 lauten. Eine Minute Später dann 2144 ... (Klar man muss sich mit dem eintippen beeilen nicht das sich die uhrzeit ändert während man noch tippt ^^)Danke und MfG Golden
-
time_t zeit=time(0);//Sekunden seit 1.1.1970,0:00 int minutenSeitMitternacht=zeit%24*60*60;//edit %= war falsch //edit2: war nicht falsch, aber unfug int stunden=minutenSeitMitternacht/60; int minuten=minutenSeitMitternacht%60; int s1=stunden/10; int s2=stunden%10; int m1=minuten/10; int m2=minuten%10; char p1=s1+'0'; char p2=s2+'0'; char p3=m1+'0'; char p4=m2+'0';
-
Du kannst die Uhrzeit mit den in der ctime zur Verfügung gestellten Funktionen abfragen. time(NULL) liefert die Zeit in Sekunden seit dem 1.1.1970. Diesen Wert kannst du dann mit verschiedenen Funktionen entweder in eine "tm"-struct umwandeln bzw. direkt in einen String umwandeln.
Siehe dafür auch: http://www.cplusplus.com/reference/clibrary/ctime/
MfG SideWinder
-
@volkard: Kann deine Art die Zeit abzufragen nicht auch schief gehen in Bezug auf Zeitzonen/Sommerzeit/etc.?
MfG SideWinder
-
SideWinder schrieb:
...
Das ist in der Praxis besser. Meine Zerlegung per Hand war beeinflußt von
if(zahl1 == '1' && zahl2 == '2' && zahl3 == '3' && zahl4 == '4')
-
SideWinder schrieb:
@volkard: Kann deine Art die Zeit abzufragen nicht auch schief gehen in Bezug auf Zeitzonen/Sommerzeit/etc.?
Ja, sie wird schiefgehen. Zeitzonen wären ja noch ok, weil der Rechner sie nicht wechseln wird. Aber das mit der Sommerzeit ist eine arge Wurst. Man muß wohl Deine <ctime>-Seite konsoltieren.
-
erstmal wow und danke, dass das so schnell geht

Ich werd das mal ausprobieren
-
Dann hoffe ich mal, dass das Buch auch die populäreren Schleifen durchnimmt (for, while, do...while). Man kommt so gut wie immer um goto herum und erhält mit den Alternativen ein lesbareres Programm.
-
krümelkacker schrieb:
Dann hoffe ich mal, dass das Buch auch die populäreren Schleifen durchnimmt (for, while, do...while). Man kommt so gut wie immer um goto herum und erhält mit den Alternativen ein lesbareres Programm.
Wäre das auch hier so?
Zur leichteren Begutachtung durch einen pretty-printer geschickt:#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> int main(int argc, char *argv[]) { int Anzahl = 0; int Anzahl2 = 3; int zahl1; int zahl2; int zahl3; int zahl4; Start : printf("Das ist ihr %d. Versuch \n",Anzahl+1); printf("Gib deinen Passwort ein:\n"); zahl1=getch(); zahl2=getch(); zahl3=getch(); zahl4=getch(); //printf("Sie haben %c%c%c%c%c eingegeben\n",zahl1,zahl2,zahl3,zahl4); if (Anzahl <= 1) { if (zahl1 == '1' && zahl2 == '2' && zahl3 == '3' && zahl4 == '4') { printf("Das Eingegebene Passwort ist richtig.\n"); goto Weiter; } else { printf("Das eingegebene Passwort war falsch.\n"); Anzahl++; system("cls"); goto Start; } } else { printf("Sie haben 3 mal ein falsches Passwort eingegeben \n"); system("pause"); return 0; } Weiter : printf("\nSie haben nun Zugriff auf die Datei.\n"); system("PAUSE"); system( "\"C:\\Programme\\Mozilla Firefox\\firefox.exe\"" ); system("EXIT"); return 0; }
-
Ja es nimmt schleifen durch, nur hab ich davor mit Batch datein gespielt und da hab ich des halt hergenommen ^^
-
SO gehts leider auch net:
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #include <time.h> int main(int argc, char *argv[]) { int Anzahl = 0; int Anzahl2 = 3; time_t zeit=time(0);//Sekunden seit 1.1.1970,0:00 int minutenSeitMitternacht=zeit%=24*60*60; int stunden=minutenSeitMitternacht/60; int minuten=minutenSeitMitternacht%60; int s1=stunden/10; int s2=stunden%10; int m1=minuten/10; int m2=minuten%10; int zahl1; int zahl2; int zahl3; int zahl4; char p1=s1+'0'; char p2=s2+'0'; char p3=m1+'0'; char p4=m2+'0'; Start : printf("Das ist ihr %d. Versuch \n",Anzahl+1); printf("Gib deinen Passwort ein:\n"); zahl1=getch(); zahl2=getch(); zahl3=getch(); zahl4=getch(); //printf("Sie haben %c%c%c%c%c eingegeben\n",zahl1,zahl2,zahl3,zahl4); if (Anzahl <= 1) { if(zahl1 == 's1' && zahl2 == 's2' && zahl3 == 'm1' && zahl4 == 'm2') { printf("Das Eingegebene Passwort ist richtig.\n"); goto Weiter; } else { printf("Das eingegebene Passwort war falsch.\n"); Anzahl++; system("cls"); goto Start; } } else { printf("Sie haben 3 mal ein falsches Passwort eingegeben \n"); system("pause"); return 0; } Weiter : printf("\nSie haben nun Zugriff auf die Datei.\n"); system("PAUSE"); system( "\"C:\\Programme\\Mozilla Firefox\\firefox.exe\"" ); system("EXIT"); return 0; }
-
Oh, ich Nube habe ja die Sekunden glatt verabdudelt. Meinen komplizierten Weg mit % und / müßtest Du ganz von Neuem überdenken, Sorry.
Außerdem
if (zahl1 == s1 && zahl2 == s2 && zahl3 == m1 && zahl4 == m2)
statt
if (zahl1 == 's1' && zahl2 == 's2' && zahl3 == 'm1' && zahl4 == 'm2')
-
volkard schrieb:
Oh, ich Nube habe ja die Sekunden glatt verabdudelt. Meinen komplizierten Weg mit % und / müßtest Du ganz von Neuem überdenken, Sorry.
Außerdem
if (zahl1 == s1 && zahl2 == s2 && zahl3 == m1 && zahl4 == m2)
statt
if (zahl1 == 's1' && zahl2 == 's2' && zahl3 == 'm1' && zahl4 == 'm2')Hey, bei mir klappt es, wenn ich zwei Sunden zurückgehe, also jetzt 2151 eingebe und
int minutenSeitMitternacht=zeit%(24*60*60)/60;
mache.
-
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #include <time.h> int main(int argc, char *argv[]) { int Anzahl = 0; int Anzahl2 = 3; time_t zeit=time(0);//Sekunden seit 1.1.1970,0:00 //int minutenSeitMitternacht=zeit%=24*60*60; int minutenSeitMitternacht=zeit%(24*60*60)/60; int stunden=minutenSeitMitternacht/60; int minuten=minutenSeitMitternacht%60; int s1=stunden/10; int s2=stunden%10; int m1=minuten/10; int m2=minuten%10; int zahl1; int zahl2; int zahl3; int zahl4; char p1=s1+'0'; char p2=s2+'0'; char p3=m1+'0'; char p4=m2+'0'; Start : printf("Das ist ihr %d. Versuch \n",Anzahl+1); printf("Gib deinen Passwort ein:\n"); zahl1=getch(); zahl2=getch(); zahl3=getch(); zahl4=getch(); //printf("Sie haben %c%c%c%c%c eingegeben\n",zahl1,zahl2,zahl3,zahl4); if (Anzahl <= 1) { if(zahl1 == p1 && zahl2 == p2 && zahl3 == p3 && zahl4 == p4) { printf("Das Eingegebene Passwort ist richtig.\n"); goto Weiter; } else { printf("Das eingegebene Passwort war falsch.\n"); system("pause"); Anzahl++; system("cls"); goto Start; } } else { printf("Sie haben 3 mal ein falsches Passwort eingegeben \n"); system("pause"); return 0; } Weiter : printf("\nSie haben nun Zugriff auf die Datei.\n"); system("PAUSE"); system( "\"C:\\Programme\\Mozilla Firefox\\firefox.exe\"" ); system("EXIT"); return 0; }so sieht bei mir im mom aus... Es ging kurzzeitig (auch mit dem ding, dass man 2 Stunden abziehen musste also im 01:25 musste man 23:25 eingeben), aber dann ging plötzlich nimma
ich weiß nicht was ich verändert hab...
Kann sich jemand meine version anschaun und mir sagen was ich da falsch gemacht hab?Danke schonmal ^^
-
Da ist nichts falsch. Bei mir klappt's wunderbar.
-
mach doch mal die "gotos" raus und kapsele das schön in funktionen das kann man sich ja garnicht anschauen
