Veröffentlicht 6. Oktober 200816 j hi, ich habe von der berufsschule ein miniprog bekommen was wir mal testen sollten.es ist ein programm womit man mit hilfe des alters das geburtsjahr berechnet mein problem ist jetzt das wir in der schule mit den Turbo C++ arbeiten und ich bei mir auf der arbeit nur borland C++ Builder 5 benutzen darf und irgendiwe funktioniert das programm damit nicht ich programmiere wie uns gesagt wurde doch der compiler überspringt die abfragen an den benutzer er geht alle befehle durch zeigt keine fehler an und geht dann direkt zum ende des programms hier mein code bitte um hilfe danke im vorraus: CODE: #include <vcl.h> #pragma hdrstop #include <iostream.h> #include <stdio.h> using namespace std; #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { int main; char Name[20]; //Speichert den Namen int Alter; //Speichert das Alter int GebJahr; //Speichert das Geburtsjahr cout<<"Bitte geben Sie Ihren Vornamen ein:"; cin>>Name; cout<<"Bitte geben Sie Ihr Alter ein:"; cin>>Alter; //Aus den aktuellen Alter das //Geburtsjahr berechnen GebJahr = 2008-Alter; cout<<"Ihr Name ist"<<Name<<"und Sie wurden" <<GebJahr<<"geboren!"<<endl; system("pause"); exit(0); }
6. Oktober 200816 j Starte doch mal den Debug-Modus, in dem er Schritt für Schritt den Quelltext durch geht. Dann siehst du, wo er drüber springt, bzw ob er irgendwo vorher schon aussteigt. Ich hätte da aber noch ein paar allgemeine Anmerkungen zu dem Programm. Das Programm funktioniert nur, wenn man in dem Jahr bereits Geburtstag hatte. Du solltest auch Leerzeichen mit ausgeben.Du solltest die Variablen auch mit sinnvollen Werten initialisieren und nicht nur deklarieren. Gewöhn dir das am besten direkt an. Ansonsten kann es sein, dass falls du mal eine Variable nicht belegst da Werte von was anderem in der Speicherstelle drin stehen und das zu seltsamen Fehlermeldungen führt. Also zb. int Alter = 0;Was soll das TForm da? :confused: Soll das Programm in der Console laufen, oder benutzt du eine grafische Oberfläche? btw: Satzzeichen, sowie Gross- und Kleinschreibung steigern die Lesbarkeit eines Textes ungemein.
6. Oktober 200816 j Dann bist du ein Jahr früher geboren plötzlich, falls du in dem Jahr schon Geburtstag hattest. Das Jahr würde ich auch auslesen oder eingeben lassen und nicht fest einstellen. Aber da es ja anscheinend nur ein kleines Programm zum lernen ist, ist das denke ich mal schon ok.
7. Oktober 200816 j Dann bist du ein Jahr früher geboren plötzlich, falls du in dem Jahr schon Geburtstag hattest. Das Jahr würde ich auch auslesen oder eingeben lassen und nicht fest einstellen. Aber da es ja anscheinend nur ein kleines Programm zum lernen ist, ist das denke ich mal schon ok. Darauf wollt ich hinaus. Hier noch Anmerkungen zu paar Sachen, die ich komisch find: 1. "#include <iostream>" (C++ - Standardheader haben keine .h Dateierweiterung) 2. "#include <stdio.h>" < Warum? Das ist C-Header - mischen macht den Code unübersichtlich 3. Wie Crash schon meinte, warum das ganze mit TForm? 4. "int main" < Was ist das? eine Variable oder soll das die eigentliche Main-Funktion sein? 5. Das mit dem aktuellen Jahr rausholen hab ich ja schon angemerkt... 6. In der Ausgabe fehlt ein Leerzeichen vor und nach dem Name bzw. dem Jahr. 7. "system("pause")" < Systembefehle sind eklig. Gar nicht erst angewöhnen. 8. "exit(0)" < Noch ekliger. Wenn du das einfach in einer Main verpackst (siehe 4.) wird das programm danach automatisch beendet. Ich hab wieder mal viel zu meckern, tut mir leid. :hells:
7. Oktober 200816 j - Es Soll in einer Console laufen - TFrom war schon vorher mit drin das steht beim öffnen eines neuen projekts automatisch da... - und wie schon gesagt hat es genau so mit den Turbo C++ in der schule Funktioniert und mit Borland Builder C++ funktioniert es auf einmal nicht! werde mal den debug modus testen und gucken ob sich was tut.
7. Oktober 200816 j - TFrom war schon vorher mit drin das steht beim öffnen eines neuen projekts automatisch da... Kann das sein, dass du keine Win32-Konsolenanwendung (oder wie auch immer das bei Borland heißt) ausgewählt hast, als du das Projekt erstellt hattest?!
7. Oktober 200816 j also bei borland heisst das einfach nur anwendung kann sein das es das falsche ist habe hier als anhang mal nen screenshot gemacht.
7. Oktober 200816 j jop hab es jetzt musste es mit den konsolen experte machen habe mich schon gewundert why daas net geht thx nochmal. Thread closed
8. Oktober 200816 j Hi, da ja jetzt das programm läuft würde ich aber noch gerne wissen wie ich es einstelle das er nicht (2008-alter) benutzt um das Geburtsjahr zu berechnen sondern das er das aktuelle datum aus windows ausliehst und somit automatisch dsa aktuelle gatum minus das alter macht.... Gruß KayDen
8. Oktober 200816 j struct tm - C++ Reference mktime - C++ Reference time - C++ Reference difftime - C++ Reference :beagolisc
8. Oktober 200816 j Danke (; Mal ehrlich. So was findet man in 2 Minuten bei google. ja vielleicht findest du das in 2minuten da aber ich habe da keins gefunden was funktioniert sry... Gruß Timo
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.