Larian Banner: Baldur's Gate Patch 9
Previous Thread
Next Thread
Print Thread
Page 35 of 77 1 2 33 34 35 36 37 76 77
#87853 12/02/06 01:57 AM
Joined: Mar 2003
veteran
Offline
veteran
Joined: Mar 2003
Bin in C zwar nicht mehr so fitt, stimme Xan aber 100% zu.

2.) ist zwar syntaktisch korrekt, aber vermutlich semantisch falsch, da das Ergebnis nicht in den beiden Variablen (produkt und summe) zu sehen ist.
4.) einzig mögliche Lösung die sowohl syntaktisch alsauch semantisch richtig ist.

Vorausgesetzt die Funktion soll überhaupt das machen was uns durch die benennung der Variablen vorgegaukelt wird. (Macht aber ansonsten keinen Sinn.)

Alle anderen varianten gehen einfach nicht. (Mal davon abgesehen das evtl. automatisch von float nach int konvertier wird. <schauder>)

Das mit Rückgabewert ignorieren wenn man ihn nicht braucht bin ich von Java auch gewohnt. Kann es mir gar nicht mehr anders vorstellen. bzw. weiss nicht mal mehr ob es bei anderen Programmiersprachen (Pascal?) erforderlich ist den Rückgabewert einer Variablen zuzuweisen.

Last edited by Tutamun; 12/02/06 02:02 AM.
#87854 12/02/06 01:58 AM
Joined: Mar 2003
old hand
Offline
old hand
Joined: Mar 2003
Hier mal der Quelltext meines Versuchs (Konsolenanwendung):
void prodsum (int k1, int k2, float x, float y)
//int prodsum (float k1, float k2, float x, float y)
//float prodsum (float &k1, float &k2, float x, float y)
//int prodsum (float k1, float k2, float &x, float &y)
//void prodsum (float k1, float k2, int x, int y)
{
//	return 0;
}

int main(int argc, char* argv[])
{
	float produkt, summe;
	produkt=float(0.815); summe=float(47.11);
	prodsum (float (1,45), float(5.97), produkt, summe);
//	return 0;
}
Einfach nur jeweils auskommentieren. Die ganzen float(s), weil die Konstanten automatisch als double angenommen werden und sonst immer eine Warnung kommt, wenn es zu float verkürzt wird. Die einzige Version, die wirklich nicht funktioniert, ist Nr. 3 (Hi Ragon, wie geht's?), der Rest würde laufen, aber z.T. mit Warnungen wegen Datenverlust, eben dem Abschneiden der Nachkommastellen. @Xan: Woher weißt du, dass produkt und summe nur Ausgabeparamter sind, durch diese Übergabe können sie beides sein? (der Compiler meckert z.b. an, wenn sie nicht initialisiert sind - bei Delphi so schön einfach mit var, out und const) Ich würde vom Sinn her rangehen, beim Aufruf der Funktion interessiert der Rückgabewert also nicht, da nirgends zugewiesen. Von den beiden ohne Datenverlust möglichen Varianten macht nur Nr. 4 Sinn, dort werden Zeiger übergeben und ermöglichen damit die Änderung der Variablen. Also zusammengefasst: 3.) völlig unmöglich 1.), 5.) möglich, aber sicher nicht erwünschter Datenverlust durch Abschneiden der Nachkommastellen und auch keinerlei Möglichkeit zur Datenrückgabe - Funktion ist void, Varible sind Konstanten 2.) möglich, aber keinerlei Ergebnisrückgabe: das Ergebnis der Funktion wird nicht ausgewertet und die Parameter werden als Konstanten übergeben es bleibt also nur Nr. 4 Passt auch recht gut zu meinen Erfahrungen, ich verwende häufig Win API-Funktionen, deren Rüchgabewerte, die meistens tatsächlich nur einen Fehlercode bedeuten, werte ich eher selten aus. Die Ergebnisse finden sich in den Variablen, die ich beim Aufruf als Zeiger übergeben habe.

#87855 12/02/06 02:04 AM
Joined: Mar 2003
veteran
Offline
veteran
Joined: Mar 2003
Es handelt sich um reine ausgabeparameter, da sie nicht initialisiert wurden... was natürlich blöd ist wegen der compiler warnungen...

Last edited by Tutamun; 12/02/06 02:04 AM.
#87856 12/02/06 02:08 AM
Joined: Mar 2003
old hand
Offline
old hand
Joined: Mar 2003
Wegen der Warnungen hatte ich ja die Zeile mit der Initialisierung eingefügt, dürfte aber keine Rolle spielen - aber wie gesagt Delphi mit const, out und var ist da viel besser.

#87857 12/02/06 08:38 AM
Joined: Mar 2003
veteran
Offline
veteran
Joined: Mar 2003
Ich glaube, wir sind uns einig, dass Pascal die beste Programmiersprache ist <img src="/ubbthreads/images/graemlins/smile.gif" alt="" />

Ich würde aber auch sagen, dass produkt und summe die Ausgabeparameter sind, weil es u.a. zum Funktionsnammen prod(ukt)sum(me) passen würde. Die Funktion macht halt nix anderes als die beiden Eingabeparameter (ersten beiden) zu summieren bzw. zu multiplizieren und dann jeweils das Ergebnis zurückzuliefen.

Was die Initialisierung betrifft: ich würde da wahrscheinlich die Werte 0 nehmen <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" />

Const gibt es in C auch - nennt sich nur "static" <img src="/ubbthreads/images/graemlins/smile.gif" alt="" />


Xanlosch's Home - Fortombla hortomosch !
Kein Support via Foren-PM - postet mehr im Forum.
#87858 12/02/06 09:19 AM
Joined: Mar 2003
old hand
Offline
old hand
Joined: Mar 2003
Quote
Ich glaube, wir sind uns einig, dass Pascal die beste Programmiersprache ist <img src="/ubbthreads/images/graemlins/smile.gif" alt="" />

Na, das ist doch wenigsten etwas.

Natürlich sind produkt und summe Ausgabeparameter (jedenfalls bei Nr. 4), ich meinte nur, dass sie auch Eingabeparameter sein können - da könnte halt noch etwas zwischen der Deklaration und dem Funktionsaufruf sein.

Quote
Die Funktion macht halt nix anderes als die beiden Eingabeparameter (ersten beiden) zu summieren bzw. zu multiplizieren und dann jeweils das Ergebnis zurückzuliefen.

Vom Namen würde ich nicht ausgehen. Die eigentliche Funktion ist nun einmal unbekannt. Machen kann sie letztlich alles, unabhängig vom Namen. Wenn es um eine solche Frage geht, würde ich als Steller auf jeden Fall versuchen durch den Namen zu verwirren. Also Funktion Otto würde als Ergebnis eben Gustav haben.

Aber wir stimmen doch wenigstens so weit überein:
Xanlosch, Tutamun und Steffen sagen
Rei, die Antwort ist Nr. 4

Weitere Zustimmungen oder Ablehnungen bitte in getrennten Posts.

#87859 12/02/06 09:28 AM
Joined: Mar 2003
veteran
Offline
veteran
Joined: Mar 2003
Quote
Natürlich sind produkt und summe Ausgabeparameter (jedenfalls bei Nr. 4), ich meinte nur, dass sie auch Eingabeparameter sein können - da könnte halt noch etwas zwischen der Deklaration und dem Funktionsaufruf sein.


Was nicht da steht, existiert nicht - bin ich der Meinung.

Quote
Vom Namen würde ich nicht ausgehen. Die eigentliche Funktion ist nun einmal unbekannt. Machen kann sie letztlich alles, unabhängig vom Namen. Wenn es um eine solche Frage geht, würde ich als Steller auf jeden Fall versuchen durch den Namen zu verwirren. Also Funktion Otto würde als Ergebnis eben Gustav haben.


Da magst du recht haben. Nur gehe ich von mir aus und da hat der Funktionsname schon noch was mit der eigentlichen Funktionalität, die die Funktion ausführen soll, zu tun. Sonst könnte ich ja anfangen, die benutzten Funktionen einfach nur durchzunummerieren (funkt0001, funkt0002, ..., funkt9999) <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" />

Ich glaube nicht, dass dies hier der Sinn sein soll, jemanden zu verwirren, der sich gerade damit beschäftigt bzw. es erlernt <img src="/ubbthreads/images/graemlins/think.gif" alt="" />


Xanlosch's Home - Fortombla hortomosch !
Kein Support via Foren-PM - postet mehr im Forum.
#87860 12/02/06 09:48 AM
Joined: Mar 2003
old hand
Offline
old hand
Joined: Mar 2003
Quote
Da magst du recht haben. Nur gehe ich von mir aus und da hat der Funktionsname schon noch was mit der eigentlichen Funktionalität, die die Funktion ausführen soll, zu tun.

Klar, je mehr ich programmiert habe, umso länger (und damit deutlicher) sind meine Bezeichner geworden.

Wenn jemand in einem einfachen Fall aber nur testen will (z. B als Dozent), wie zugehört und das ganze beachtet wurde, und dann mehr oder weniger leicht hinterhältige Fragen verwendet, empfinde ich das durchaus als legitim.

#87861 12/02/06 10:08 AM
Joined: Mar 2003
veteran
Offline
veteran
Joined: Mar 2003
Da ich die genaueren Umstände für die Aufgabe nicht kenne (Ersteller, Ort des Geschehens), kann ich nichts dazu sagen. Es kommt aber gut hin, wenn ein Vorlesender so die Aufmerksamkeit seiner Zuhörer testen will.


Xanlosch's Home - Fortombla hortomosch !
Kein Support via Foren-PM - postet mehr im Forum.
#87862 12/02/06 07:07 PM
Joined: Mar 2003
Location: Feenreich
Rei Offline
veteran
Offline
veteran
Joined: Mar 2003
Location: Feenreich
Ups sorry, mit den Variablen produkt und summe soll natürlich eine Summe bzw. ein Prdoult der beiden ersten Werte gebildet werden. Ob sie dabei zurückgegeben werden oder nicht, ist aus der Aufgabenstellung heraus nicht ersichtlich.

Auch kann es weiterhin nur eine void Funktion sein. Der Compiler würde zwar auch mit einem return Wert natürlich mitspielen, es geht hier aber nur um die grundsätzliche Theorie und da kommt eben nur eine void Funktion in Frage, egal wie großzügig der Compiler ist.

Das ist übrigens eine Frage aus einer früheren Informatikklausur. In dieser Klausur kommt es wirklich nur auf die Theorie an und hat mit Programmieren ehrlich gesagt absolut gar nichts zu tun.

Die Namen werden in der Klausur extra verwirrend gewählt (obwohl es unser Prof ab der ersten Stunde ausredet). Beispiel gefällig?
Klasse nennt sich zickzack mit mehreren private und public Variablen
in main: Variablen nennen sich zick und zack, die als Datentyp die Klasse zickzack haben
zusätzlich gibt es einen Pointer in der Klasse, der sich next nennt und auf zuck (Datentyp zuck ist zickzack) zeigt.
Und dann soll das Programm sogar noch was machen und man soll sagen, welche Zeile einen Fehler verursachen würde (das ist ein Spaß, sage ich euch)

#87863 12/02/06 08:32 PM
Joined: Mar 2003
old hand
Offline
old hand
Joined: Mar 2003
Quote
Das ist übrigens eine Frage aus einer früheren Informatikklausur.

Ist ja nett, dass du uns dies auch schon sagst und Nein, die beiden Funktione ohne Rückgabe würden keinen Sinn machen, bei beiden käme es zu zu einer Verfälschung, da bei float->int automatisch Nachkommastellen abgeschnitten werden.

#87864 12/02/06 09:07 PM
Joined: Mar 2003
veteran
Offline
veteran
Joined: Mar 2003
Rei, wenn es wirklich eine theoretische Abhandlung ist, dann muss es Lösung Nr. 6 sein. Alle anderen passen einfach nicht - ausser man macht freiwillig und offensichtlich Fehler bei der Konvertierung der Datentypen.

Obwohl, so ohne weiteres Ginge dies auch nicht, da es in C - meines Wissens nach - keine automatische Datentypkonvertierung gibt. Da aber die Compiler alle an dieser Stelle großzügig sind, kann ich dies nicht mit Gewißheit sagen.


Xanlosch's Home - Fortombla hortomosch !
Kein Support via Foren-PM - postet mehr im Forum.
#87865 12/02/06 09:51 PM
Joined: Mar 2003
A
veteran
Offline
veteran
A
Joined: Mar 2003
Quote
Rei, wenn es wirklich eine theoretische Abhandlung ist, dann muss es Lösung Nr. 6 sein.


Hast du das jetzt ernst gemeint ?


When you find a big kettle of crazy, it's best not to stir it.
--Dilbert cartoon

"Interplay.some zombiefied unlife thing going on there" - skavenhorde at RPGWatch
#87866 12/02/06 10:15 PM
Joined: Mar 2003
veteran
Offline
veteran
Joined: Mar 2003
@Rei:
Eine der Void Funktionen ist es nicht. Glaub mir oder schau in der Lösung nach. Und wenn die Lösung nicht die Nummer 4 ist, dann ist sie falsch. Punkt, aus, ende der Diskussion.

<kopf schüttel> <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" />

ps. bei returntyp int den man nicht verwendet handelt es sich um keine großzügigkeit von einem Compiler sondern um eine Grundeigenschaft der Sprache.

Auf die großzügigkeit des Compilers muss man bei allen Möglichkeiten ausser 2 oder 4 vertrauen, und somit sind sie falsch.

Last edited by Tutamun; 12/02/06 10:26 PM.
#87867 12/02/06 10:25 PM
Joined: Mar 2003
veteran
Offline
veteran
Joined: Mar 2003
Und du kannst ja schreiben das Nummer 2 oder 4 möglich wären. Man aber nur bei 4 etwas mit dem Ergebnis der Berechnung anfangen kann. Und du dich deswegen für 4 entschieden hast.

#87868 12/02/06 11:28 PM
Joined: Mar 2003
veteran
Offline
veteran
Joined: Mar 2003
Quote
...
Auf die großzügigkeit des Compilers muss man bei allen Möglichkeiten ausser 2 oder 4 vertrauen, und somit sind sie falsch.


Allermindestens aber schlechter Programmierstil! <img src="/ubbthreads/images/graemlins/suspicion.gif" alt="" />
<img src="/ubbthreads/images/graemlins/wave.gif" alt="" />

#87869 13/02/06 10:22 AM
Joined: Mar 2003
veteran
Offline
veteran
Joined: Mar 2003
Da es aber um Theorie geht sind sie falsch, nicht? <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" />

#87870 13/02/06 01:15 PM
Joined: Mar 2003
Location: Feenreich
Rei Offline
veteran
Offline
veteran
Joined: Mar 2003
Location: Feenreich
Okay, zumindestens schön zu wissen, daß auch ihr an dieser Aufgabe zu knabbern habt. Die Infoklausur habe ich übrigens bestanden *juhu*

#87871 13/02/06 01:23 PM
Joined: Mar 2003
veteran
Offline
veteran
Joined: Mar 2003
Trotz unserer `Lösungen´!? <img src="/ubbthreads/images/graemlins/confused.gif" alt="" />

Na dann - herzlichen Glückwunsch, Rei! <img src="/ubbthreads/images/graemlins/up.gif" alt="" />
<img src="/ubbthreads/images/graemlins/delight.gif" alt="" />


Ragon, der Magier

#87872 13/02/06 01:34 PM
Joined: Mar 2003
veteran
Offline
veteran
Joined: Mar 2003
@Alrik: Na klar ! Wenn alle gebotenen Lösungen nicht stimmen, wird ne neue hinzugefügt !

@Ragon: Schlechter Programmierstil fängt da an, wo man eindeutige Bezeichnungen für Variablen und Funktionen für Überflüssig hält und alle ähnlich benennt. <img src="/ubbthreads/images/graemlins/biggrin.gif" alt="" />

@Rei: Glückwunsch ! Du kannst uns ja mal die richtige Lösung verraten, sobald du diese weisst !


Xanlosch's Home - Fortombla hortomosch !
Kein Support via Foren-PM - postet mehr im Forum.
Page 35 of 77 1 2 33 34 35 36 37 76 77

Moderated by  Alix, ForkTong, Larian_QA, Macbeth 

Link Copied to Clipboard
Powered by UBB.threads™ PHP Forum Software 7.7.5