Nochmal fakultät

hiho nochmal!

hab jetzt eigentlich alles geschrieben für meine unten erwähnte funktion!

nochmal für alle, dies verpast haben:
ich muss 100! (fakultät *g*) für einen eigenen dateityp ‚zahl‘ berechnen!

damit verbunden also multiplikation und addition!
mit viel arbeit hab ich jetzt gedacht, dass ichs hinbekommen hab, aber meine ausgabe für meinen testwert (ohne handeingabe, des mach ich vielleicht noch…) 10!
ist: 00
irgendwo muss ich einen fehler haben, aber mein kopf schwirrt grad, deshalb frag ich euch nochmal :smile:

damit ich den kompletten code nich hier erwähnen muss, hab ich ihn mal hochgeladen:

http://www.abendsterne.net/fakul.cc

vielleicht hat das ganze ja auch in meinem letzten thread erwähnten speicherplatz zu tun… ich hoff mal nich!
und werft nicht meine int idee um :wink:
danke für euer wissen :wink:

ps:
achtung: es ist zwar eine .cc datei, aber eigentlich eine c++ datei!! nicht verwechseln
pps:
ich hoffe der code sieht einigermaßen ok aus und die kommentare sind verständlich!

Hallo Geiterkarte,

hab jetzt eigentlich alles geschrieben für meine unten
erwähnte funktion!

Schmeiss doch mal den Debugger an !

Dabei lernst du am Meisten.

MfG Peter(TOO)

Schmeiss doch mal den Debugger an !

der findet keinen fehler, alles is vollkommen korrekt, nur kommt das falsche ergebnis!!

ich kann ja auch nur compilieren, wenn der alles richtig erkennt!

im debugger kannst aber schick die zwischenergebnisse kontrollieren, da solltest du treffsicher auf die stelle stossen, wo nicht korrekt gerechnet wird, gerade wenn du kompilieren kannst, ist der debugger das (fast) einzige, das beim fehleraufspüren sinn macht!

Hallo,

Der Debugger ist auch nicht dazu da irgendwelche Syntax-Fehler zu finden, das kann er gar nicht !¨
Aber du hast mit dem Debugger die Möglichkeit, dein Programm Zeile für Zeile abarbeiten zu lassen und kannst dir jede Variable jederzeit anzeigen lassen. Dadurch kannst du sehen was dein Programm wo und warum macht !!

Da du nicht weisst was der Dubugger macht solltest du dich als „bald Programmierer“ DRINGENST damit vertraut machen.
Sonst vedienst du die Bezeichnung Programmierer gar nicht !

Auch ist es keinesfalls die Aufgabe dieses Forums DEINE Arbeit zu erledigen.
Über Tips und Tricks sind wir jederzeit gerne bereit auskunft zu geben und auch zu helfen, ABER für reine „Faulpelz-Zocker“ (siehe ViKa) einfach ihre Arbeit zu erledigen, haben wir KEINE Lust.

MfG Peter(TOO)

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 Like

Da du nicht weisst was der Dubugger macht solltest du dich als
„bald Programmierer“ DRINGENST damit vertraut machen.
Sonst vedienst du die Bezeichnung Programmierer gar nicht !

jaja bla bla:

compilieren sieht bei mir so aus:
über ssh auf nen linux server einloggen, datei rüberschieben und dann da compilieren lassen!!!

mein tolles microsoft visual studio .net, sagt mir, im gegensatz zu diesem compilieren, irgend ein unerwartetes dateiende und macht gar nix! toll! immer diese überzüchteten scheissprogramme die alles können, außer dem richtigen…

ich programmiere c++ jetzt seit 2 monaten, da kenn ich mich mit so nem zeugs noch nich aus! ich bin html/php/mysql, da seh ich gleich was falsch is!

Hallo !

Da du nicht weisst was der Dubugger macht solltest du dich als
„bald Programmierer“ DRINGENST damit vertraut machen.
Sonst vedienst du die Bezeichnung Programmierer gar nicht !

jaja bla bla:

Ich glaube, nachdem ich jetzt über 25 Jahre Erfahrung im Programieren (Assembler: 6502,6800, 6809, 8080, 8086, Z80, 8051, H8/300, H8/500, H8/300H; ca. 15 BASIC-Dialekte, Pascal, FORTH, PL/M, C, etwas C++, diverse Betriebssystem, Mitentwicklung von Compilern) und in der Hardwareentwicklung habe, kann ich mir ein Urteil erlauben !

mein tolles microsoft visual studio .net, sagt mir, im
gegensatz zu diesem compilieren, irgend ein unerwartetes
dateiende und macht gar nix! toll! immer diese überzüchteten
scheissprogramme die alles können, außer dem richtigen…

Nix sch**** VC, sch**** Programmierer:
Du hast irgendwo eine öffnende Klammer „{“ aber das Gegenstück fehlt. Der andere Compiler ist scheinbar zu blöd diesen Fehler zu finden.

TIP1: Bei C ist der Fehler immer zwischen den Anfang und der angegebenen Zeile zu suchen. Vorteilhaft ist es sich von der angegebenen Zeile im Listing aufwärts zu bewegen.

TIP2: Schalte beim Compiler immer die höchste Warnstufe ein. Ist bei VC normalerweise Stufe 4.

ich programmiere c++ jetzt seit 2 monaten, da kenn ich mich
mit so nem zeugs noch nich aus! ich bin html/php/mysql, da seh
ich gleich was falsch is!

Nochamls: Ein Debugger ist eines der Grundlegenden Werkzeuge, und als ernstzunehmender Programmierer sollte man damit umgehen können.

MfG Peter(TOO)

Nachtrag
Hallo !

Ich habe mir mal schnell die Mühe gemacht deinen Code durch meinen Compiler zu jagen (VC6, NICHT .NET).
Mit dem Debugger sieht man ganz schnell ein paar Fehler.
Auf jeden Fall musst du dir über den Unterschied der Parameterübergabe zwischen „by Reference“ und „by Value“ im klaren sein. Deine Funktion terminator() macht gar nicht das was du eigentlich wolltest.

MfG Peter(TOO)

Hallo,

jaja bla bla:

Hier sollte der Support für Dich eigentlich enden.

compilieren sieht bei mir so aus:
über ssh auf nen linux server einloggen, datei rüberschieben
und dann da compilieren lassen!!!

Ich würde Dir empfehlen, Linux auf Deinem „Entwicklungsrechner“ zu installieren. Du sparst Dir dadurch nicht nur die (mickrigen) Onlinekosten, sondern eine Menge Nerven.

Der Debugger der gcc heisst übrigens gdb und ist auch per Kommandozeile bedienbar, wenn Du meinst Du kennst Dich aus. Sonst wäre natürlich eine grafische Oberfläche zum rumklicken schon schöner. Die läuft aber nicht via ssh. Und ob Du eine X-Session über Deine Internetverbindung laufen lassen darfst/kannst, ist mir nicht bekannt.

Ich habe mir Deinen Quellcode nicht angeschaut, für sowas bin ich hier entschieden unterbezahlt. Aber wenn ein Compiler mit einer Fehlermeldung aussteigt, dann ist das in den seltensten Fällen ein Problem des Compilers.

Mich wundert schon, dass der gcc ohne Murren und Knurren durchläuft. Wie genau rufst Du denn den Compiler auf? Hast Du ein Makefile? Warum willst Du unbedingt die fortgeschrittenen Aufgaben schon vor der Zeit hinfrickeln, wenn Du offenbar mit den Grundlagen noch Probleme hast?

Mache Dich doch mal mit Deinen Werkzeugen vertraut und lese Dir ein wenig Theorie zum Thema Speichermanagement, Compiler, Algorithmen etc. durch. Danach läuft das Programmieren erfahrungsgemäß erheblich besser.

Zumindest Die Dokumentation zu Deinem Compiler, dem Debugger und der verwendeten Bibliothek (C oder C++) solltest Du griffbereit haben.

Gruß

Fritze

Nachtrag: gcc und Dein Programm
Wenn ich mir Dein Programm mal compilieren lasse, bekomme ich folgendes Ergebnis:

gcc -o fakul fakul.cc
In file included from /usr/include/g++/backward/iostream.h:31, 
 from fakul.cc:1:
/usr/include/g++/backward/backward\_warning.h:32:2: warning: 
#warning This file includes at least one deprecated or antiquated
header. Please consider using one of the 32 headers found in section
17.4.1.2 of the C++ standard. Examples include substituting the 
header for the header for C++ includes, or instead of
the deprecated header . To disable this warning use 
Wno-deprecated.

/tmp/cc485Ylk.o(.text+0x89c): In function `main':: 
 undefined reference to `std::cout'

/tmp/cc485Ylk.o(.text+0x8a1): In function `main':: 
 undefined reference to `std::basic\_ostream \>::operator \>& std::endl \>(std::
 basic\_ostream \>&amp:wink:'

/tmp/cc485Ylk.o(.text+0x8bb): In function `main':: 
 undefined reference to `std::cout'

/tmp/cc485Ylk.o(.text+0x8c0): In function `main':: 
 undefined reference to `std::basic\_ostream \>::operator \>& (\*)(std::basic\_ostream \>&amp:wink:)'

/tmp/cc485Ylk.o(.text+0x8f2): In function 
 \_\_static\_initialization\_and\_destruction\_0(int, int)'::
 undefined reference to `std::ios\_base::Init::Init[in-charge]()'

/tmp/cc485Ylk.o(.text+0x921): In function `\_\_tcf\_0':: 
 undefined reference to `std::ios\_base::Init::~Init [in-charge]()'

/tmp/cc485Ylk.o(.eh\_frame+0x11): undefined reference to
 `\_\_gxx\_personality\_v0'

collect2: ld returned 1 exit status

Sieht nicht gut aus.

Gruß

Fritze

das finde ich jetzt hoch interessant!!!

meine ausgabe:

~/aufgaben> g++ -o fakul fakul.cc
~/aufgaben>

muss ich mal meinen prof ansprechen…

zum thema:
von mir aus kannst du nach 20 jahren sagen, wer programmierer is und wer nich; so viel zeit hatt ich ja scho fast gar net!!!
und ich motz ja auch keinen ausm mathe brett an, wenn er nachm binomischen satz frägt, dass er gefälligst mal die grundlagen lernen soll!

in anbetracht dessen, dass mein compiler KEINE fehlermeldung gebracht hat, bin ich ja erst auf diese thread gekommen, weil ich dachte nur nen denkfehler zu haben, der von erfahrenen leuten besser gesehen wird! das das programm noch ziemlich ‚roh‘ ist, hab ich nichmehr dran gedacht!

ich muss mal morgen des von nem kumpel mit vc6 durcheiern lassen…

Auf jeden Fall musst du dir über den Unterschied der
Parameterübergabe zwischen „by Reference“ und „by Value“ im
klaren sein. Deine Funktion terminator() macht gar nicht das
was du eigentlich wolltest.

i did it, and i’ll never do it again!!!
najo… vielleicht nächstes semester :smiley:

also ausser dass ich als terminator nun 99 hab und nicht 10 hab ich beim terminator nix geändert; oder meinstest du das!?

und was bitte mit reference und value??? ich hab doch gar keine referenzänderung… bzw. meintest du die ‚help‘ ?? die sind umbenannt :wink:

so, nu kann ich mich ja vielleicht noch mit dem speicherproblem, dass es gar nicht gegeben hat, auseinandersetzen!
oder mal endlich *, & zeiger blicken…
najo!

debugger war schon recht hilfreich!
aber des visual studio .net is erstmal von der platte geflogen, des taugt in meinen händen nix; visual c++ forever :wink:
so, bin ich nu auch ein scheinprogrammierer??? ^^

Hallo,

muss ich mal meinen prof ansprechen…

ja, mach das mal.

zum thema:
von mir aus kannst du nach 20 jahren sagen, wer programmierer
is und wer nich; so viel zeit hatt ich ja scho fast gar net!!!

Ich wäre Dir wirklich sehr verbunden, wenn Du Deine Anfragen und Artikel hier auf Deutsch verfassen könntest.

und ich motz ja auch keinen ausm mathe brett an, wenn er nachm
binomischen satz frägt, dass er gefälligst mal die grundlagen
lernen soll!

Wenn mir jemand erzählt, er sei bei den Aufgaben schonmal vorneweg geeilt, will „mal des mit die diverensialglaichunge raffe“, kann aber noch keine Bruchrechnung, dann würde ich ihn auch entsprechende darauf hinweisen.

Ich würde das Tempo bei der Aufgabenbearbeitung etwas drosseln, mich dafür mehr Zeit mit der aktuell in der Vorlesung behandelten Materie befassen. Das führt letztlich schneller zum Ziel und womöglich sogar zum eigentlichen Zweck des ganzen: Verständnis!

ich muss mal morgen des von nem kumpel mit vc6 durcheiern
lassen…

Es ist kein Problem des Compilers, räume lieber Deinen Code auf.

Gruß

Fritze

hiho nochmal!

hab jetzt eigentlich alles geschrieben für meine unten
erwähnte funktion!

nochmal für alle, dies verpast haben:
ich muss 100! (fakultät *g*) für einen eigenen dateityp ‚zahl‘
berechnen!

damit verbunden also multiplikation und addition!
mit viel arbeit hab ich jetzt gedacht, dass ichs hinbekommen
hab, aber meine ausgabe für meinen testwert (ohne handeingabe,
des mach ich vielleicht noch…) 10!
ist: 00
irgendwo muss ich einen fehler haben, aber mein kopf schwirrt
grad, deshalb frag ich euch nochmal :smile:

Mir ist dein Code auch nicht so richtig klar geworden. Der iterative Ansatz scheint mir hier der aufwendigere. Anbei mein rekursiver Vorschlag, der !100 ohne Probleme berechnet. Aufgrund der Rekursion bin ich mir sicher, dass die Ausgabe stimmt.

Gruß Markus

#include
#include
#include

class Zahl
{
public:
Zahl( const std::string& _value) : m_value(_value) {}
Zahl( int _value ) { std::ostringstream oss; oss ( temp );
++ctr;
}
m_value = tsum;
}

Zahl Fac( int _zahl )
{
if ( _zahl == 1 )
return Zahl(1);
else
return Fac(_zahl-1) * Zahl(_zahl);
}

int main(int argc, char* argv[])
{
printf(„Hallo Welt!\n“);
Zahl z1(12);
Zahl z2(12);

std::cout (z1*z2+Zahl(6)) (Fac(100))

Nochamls: Ein Debugger ist eines der Grundlegenden Werkzeuge,
und als ernstzunehmender Programmierer sollte man damit
umgehen können.

Diese Aussage möchte ich bestätigen! Der Debugger erlaubt dir, dein Programm schrittweise auszuführen. Du kannst somit jede Funktion Anweisung für Anweisung überprüfen. Mittels Breakpoint kannst du uninteressante Bereiche überspringen und mit den Untersuchungen dort anfangen, wo du den Fehler erwartest.

Ohne Debugger musst du genau wissen, wo der Fehler liegt. Das ist kompliziert, vor allem wenn du die Sprache nicht beherrscht.

Der wortfuchs

öhm ja… des was du da schreibst is mir technisch ein wenig zu weit :smiley:

weiss nich ob du meinen letzten post hier gelesen hast:
es funktioniert inzwischen und es heisst ja:
never change a running system :wink:

aber danke trotzdem!

Ups! Naja, zumindest hast du jetzt die Möglichkeit, dein Ergebnis zu vergleichen! Bei !100 dürften die üblichen Hilfsmittel wohl versagen,
das Ergebnis hat hier schon eine ordentliche Breite :o)
MSVC 6 schluckt den Code.

Markus

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]