JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=fefa624d98a793306ce412e37142e353Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Fehlermeldung

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
derUnwissende
Gast








BeitragVerfasst am: 03.09.2002, 14:27    Titel: Fehlermeldung Antworten mit Zitat

Und zwar hab ich ein sehr sehr billiges ,,Programm" geschrieben was Zahlen in ein Prdoukt aus Primzahlen zerlegen soll.
Hier der Code:
[code:1:2bf1df812e]


#include <iostream.h>

void Division(float Zahl, float Divisor);

void DivisorZuweisen(float Divisor);

void Primzahl (float Divisor);

void Pruefung(float Zahl);


float ErgebnisDivision, ErgebnisSubtraktion, uZahl, divisor=2;
int Startzahl;
bool primzahl= false;
short anzahl=-1, frage;
int zahl[20];



int main(void)
{
cout<<"Bitte geben sie eine Zahl ein die sie zerlegen lassen wollen:\n";
cin>>uZahl;
Startzahl=(int)uZahl;
if(uZahl==1)
{
Division(uZahl,1);
}
else if(uZahl>999999)
{
cout<<"Die von ihnen ausgewaehlte Zahl ist zu grosz, sie darf maximal 999999 sein.\n";
main();
}
else
{
Division(uZahl, divisor);
}
return 1;
}


////////////////////////////////////////////////////////////////////////////////////////////

void Division(float Zahl, float Divisor)
{
ErgebnisDivision=Zahl/Divisor;
ErgebnisSubtraktion =ErgebnisDivision - (int)ErgebnisDivision;

if(ErgebnisSubtraktion > 0
)
{
DivisorZuweisen(divisor);
}
else
{

zahl[anzahl]=(int)Divisor;
uZahl=ErgebnisDivision;
if(uZahl<=1)

divisor=1;
}
else
{
divisor=2;
}
Pruefung(uZahl);
}
}


/////////////////////////////////////////////////////////////////////////////////////////////

void DivisorZuweisen(float Divisor)
{
if(primzahl==true)
{
primzahl=false;
divisor=Divisor;
Division(uZahl, divisor);
}
else
{
Divisor++;
Primzahl(Divisor);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////

void Primzahl(float Divisor)
{
if(Divisor>7)
{

{
primzahl=false;
DivisorZuweisen(Divisor);
}
else
{
primzahl=true;
DivisorZuweisen(Divisor);
}
}
else if(Divisor>5)
{
if(Divisor/2 - (int)(Divisor/2) == 0 || Divisor/3 - (int)(Divisor/3) == 0 || Divisor/5 - (int)(Divisor/5) == 0)
{
primzahl=false;
DivisorZuweisen(Divisor);
}
else
{
primzahl=true;
DivisorZuweisen(Divisor);
}
}
else if(Divisor>3)
{
if(Divisor/2 - (int)(Divisor/2) == 0 || Divisor/3 - (int)(Divisor/3) == 0)
{
primzahl=false;
DivisorZuweisen(Divisor);
}
else
{
primzahl=true;
DivisorZuweisen(Divisor);
}
}
else if(Divisor>2)
{

{
primzahl=false;
DivisorZuweisen(Divisor);
}
else

{
primzahl=true;
DivisorZuweisen(Divisor);

primzahl=false;
DivisorZuweisen(Divisor);
}

else
{
primzahl=true;
DivisorZuweisen(Divisor);
}
}


/////////////////////////////////////////////////////////////////////////////////////////////////

void Pruefung(float Zahl)
{
if((Zahl/divisor==1)&&(Zahl!=2))
{

cout<<"Die Zahl: "<<Startzahl<<" ist das Produkt folgender Zahlen:\n";


{
cout<<zahl[i]<<" * ";
}

cout<<"\b\b \n";
cout<<"Wenn sie erneut eine Zahl zerlegen moechten bestaetigen sie bitte mit 1,\num das Program zu verlassen eine beliebig andere Taste druecken\n";
cin>>frage;
if(frage==1)
{
main();

}
}
else
{
divisor=2;
Division(uZahl, divisor);
Nach oben
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 03.09.2002, 14:33    Titel: Antworten mit Zitat

was denn für eine fehlermeldung?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gast









BeitragVerfasst am: 03.09.2002, 20:36    Titel: Antworten mit Zitat

einfach die normale Windowsfehlermeldung ,,Diese Anwendung wird aufgrund eines ungültigen Vorgangs geschlossen. ..."
und wenn man auf Debug geht kommt ,,Stack Overflow" und es wird auf die Funktion ,,DivisorZuweisen" verwiesen.
Nach oben
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 03.09.2002, 20:52    Titel: Antworten mit Zitat

Ich hab mir den Code zwar nicht genau angeschaut, aber du scheinst in den Beiden Funktionen DivisorZuweisen() und Primzahl() eine Rekursion eingebaut zu haben, die keine Abbruchbedingung erreicht...
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 03.09.2002, 20:55    Titel: Antworten mit Zitat

Ich habe dein Code jetzt nicht ausführlich gelesen, aber ich glaube es liegt daran, dass du in der Funktion "DivisiorZuweisen" die Funktion "Primzahl" aufrufst, die wiederum die Funktion "DivisiorZuweisen aufruft". So ensteht unter Umständen ein unendlicher Durchgang und der Stack wird mit zu viel Speicher belastet!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 03.09.2002, 20:58    Titel: Antworten mit Zitat

Genau das hab ich mit Rekursion ohne Abbruchbedingung gemeint...
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 03.09.2002, 21:00    Titel: Antworten mit Zitat

Oh, da war warst du wohl schneller als ich Embarassed Embarassed Embarassed !
Razz Razz
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 03.09.2002, 22:00    Titel: Antworten mit Zitat

AFE... guck mal auf die Post-Zeiten... beide fast gleichzeitig Wink (naja... 3 min Unterschied, aber manche brauchen halt länger zum tippen Wink)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 04.09.2002, 12:55    Titel: Antworten mit Zitat

Naja, muss nicht sein, dass ich länger gebraucht habe. Da AFE ja vielleicht schon ein paar Minuten eher angefangen hat, und sein Post abgesendet hat während ich noch beim Tippen war! Du gehst davon aus, dass wir beide gleichzeitig angefangen haben(vielleicht hab ich sogar eher angefangen und fast doppelt so lange gebraucht wie AFE!).
PS.:puh, das war jetzt ein verwirrender Satz!
Razz Razz
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
derUnwissende
Gast








BeitragVerfasst am: 05.09.2002, 16:55    Titel: Antworten mit Zitat

Hat jemand einen Vorschlag wie man das ,,Program" umschreiben könnte, dass es auch mit solch Zahlen funktioniert? Oder muss man dafür am besten nochmal neu mit anderen Ansätzen anfangen?
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum