![]() |
[c++]Macht nicht das was er soll.
Also. Hab mir was mit case und switch überlegt aber er macht es nicht.Er soll in den zweiten bereich springen wo case 2: ist.Es ist egal das bei den anderen Sachen nichts ist. Das muss ich noch schreiben.. ich weiss nicht wieso =( sitze schon 30min dran und ich weiss nicht weiter. Bitte nur bei dem Problem helfen keine Tipps und so.Danke.
Code:
#include <iostream.h> |
ich mag switch und case net, weil ich das meiste mit if und else.
Also jede case(s) müssen mit einem break beendet werden. Was ich glaube ich bei dir nicht gsehen habe. zb.: switch case case case break; case case break; case case break; default Aber wie gesagt, ich mach net soviel mit switch und case :D EDIT: Wenn du einmal eine Switch abfrage für die Variable P1 machst, musst du weiter unten net wieder "switch(P1)" schreiben, da mit break ja unterbrochen wird |
JO danke das wars :) hab par mahl das break; vergessen =/ naja dummer Fehler.
EDIT:// Jetzt taucht es in der 2ten Spalte auf -.-° EDIT// Ich meine den Fehler-.- |
beherzige trotzdem mein "EDIT" bitte ;)
|
da isn bisschen mehr falsch... 2 mal switch dannn n case dann wieder n switch keine geschweiften klammern... öhm... räum da erst mal n bisschen auf. dann kann man weiter helfen
|
Wie oben schon gesagt ist das noch nicht fertig. -.-° die ganzen anderen Sachen ignorieren. Nur das er in die zweite Spalte springen soll und dort dann weiter machen soll. Aber in der zweiten spalte mach der bei der auswahl nicht weiter
|
Da ich mir gerade denke, dass du anfängst zu programmieren gebe ich dir maln tipp. Wenn du ein Programm zum laufen bringst mit switch und case und dann denkst, na, jetzt kann ichs, versuch zuerst mal jede zeile in deinem quellcode zu erklären. Dir selber, am besten, damit überprüfst du dich eigentlich selbst ob du es verstanden hast und beherrscht. Kenn noch viele Leute aus meiner klasse, die mich oft fragten wie das geht... ah ok, ah ok, ja ne is klar... ok, erklär mir wieso? .. ähm, wie war das nochmal :D ...
Ne, soll kein scherz sein, aber wenn du viel verstehst, dann kannste auch umso mehr probieren wenn dir mal nen fehler passiert... |
Joc ich verstehe das ja ^^. Habs ja auch geschrieben :P aber mir pasieren oft Tippfehler. =( Aber habs hinbekommen.
|
JEDES case muss ( naja muss nicht, aber sonst gibt es kaum nen Sinn )
mit einem break;( raus aus dem switch ) oder einem return; ( raus aus der Funktion ) abgeschlossen werden, ansonsten werden alle weiteren case auch ausgeführt ( glaub ich zumindestens :D ) Code:
switch(i) |
ich glaube, "default" braucht nicht unbedingt ein break, wäre ja irgendwie sinnlos :rolleyes:
|
wenn default als letztes steht und keine weiteren code-Zeilen innerhalb der
switch-Anweisung sind ;) nen return macht Sinn, wenn die Funktion nen Rückgabewert hat |
ein return; in main()
(was ja zweifelsohne auch in nem switch so ist) - Was würde das bewirken ? :p |
ja klar, return liefert auch was zurück... obwohl... return 0; :rolleyes:
|
Zitat:
Zitat:
Typ void ist ;) also bei void main() einfach nur return, bei int main() dann halt return 1234456; |
ALSO. Ich wollte nicht wieder was auf machen. Also, habe eine Formel die ich für C++ umschreiben muss da es keine ^ kann.
Formel: K*(1+p/100)^n wie müsste das bei c++ ausschauen ? |
es gibt exponentialfunktionen in c. Das sollte die einzig schwere sachen zu sein. schau mal nach in der hilfe, mir fällt der befehl nämlich gerade nicht ein.
|
also in PHP heissts
int pow(BASIS, EXPONENT); |
jo, danke eeb. Ich bin mir zu 99 prozent sicher das ins c++ die funktion auch pow(int x) glaube ich heißt
|
nein...
unter c: pow(double x, double y) und unter c++ gibts noch ne überladung für float. |
in C heißt es
Code:
pow(basis, exponent); Code:
#include <math.h> Aus "P1" könntest Du dann z.B. "calculationSelectedByUser" machen, oder irgendwas anderes, aber eben etwas aussagekräftiges. Für Funktionen gilt das gleiche. Aber das sind nur Konventionen, keine Vorschrift. Mit einem Editor der Syntax-Vervollständigung beherrscht ist das auch kaum Mehrarbeit beim tippen, aber es erleichtert das Verstehen des Codes ungemein, speziell jemandem der ihn nicht selbst geschrieben hat. Es ist aber sehr hilfreich sich schon früh einen sauberen Stil anzugewöhnen., z.B. auch was das Einrücken von Unterbereichen angeht. |
Zitat:
du nerviger 1% du :p |
Hm müsste das dann so aussehen ?
Code:
cout<<"Kapital nach "<<z4<<" Jahren: "<<(z2*(pow(double (((1+z3)/100), double z4)); |
nein. das double brauchst du da nicht mit zu schreiben, wenn du die variablen voher schon deklariert hast. und ich geh mal davon aus, dass z4 (was auch immer das sein mag :) ) schon deklariert ist. und bei einer berechnung [ (1+z3)/100 ] brauchst du auch den datentyp nicht voran schreiben. es sei denn du willst das ergebnis casten. dann muss der datentyp aber so da stehen (double) (1+z3)/100 .
|
LoL irgentwie ist das komisch. 0o Des kommen zu große Zahlen raus =( was hab ich falscj gemacht . Ich meine ind er 5ten Spalte.
Code:
#include <iostream.h> |
puh deine variablennamen sind grausam.
ich denk mal du meinst zeile und nicht spalte. da fängt main an. was soll denn daran falsch sein? |
Ich denk mal er meint das case 5: ;)
Erst mal ne kleine Anmerkung : Warum machst du soviele switch für die selbe Variable ? Einmal würde doch reichen :) Ansonsten ist deine Formel zur Berechnung wohl falsch, es kommt mir zumindestens merkwürdig vor dass die Laufzeit als Exponent angegeben wird |
Das die Laufzeit der Exponent ist, stimmt schon, denke ich.
Berechnet werden die Zinsen ja so: Kapital * [(1 + Zinssatz) ^ Laufzeit] wenn der Zinssatz als Kommazahl angegeben wird (0.04 für 4 Prozent). Wenn du davon ausgehst, dass der Benutzer eher 4 eingibt, dann sollte sie halt Kapital * [((100 + Zinssatz) / 100) ^ Laufzeit] lauten. Zu deiner Verwendung von switch, möchte ich noch sagen, wie es aussehen sollte. ;) Code:
switch (Variablenname) // ################################################ verzichten. :D Und bei den Variablenamen solltest dir auch was einfallen lassen. Für die Zinsrechnung wären z.B. "Kapital", "Zinssatz" und "Laufzeit" ganz brauchbare Namen. ;) Bei komplexeren Programmen kann dir nämlich sonst 1. keiner mehr helfen und 2. verlierst du dann selber den Überblick, wenn du mal ein paar Monate nicht daran arbeitest. |
OK. Also muss ich die Fariablen gescheit bennenen. =) werd ich dann auch machen :) Danke. Also muss ich die Formeln noch umstellen?
Also, er spring nur am anfang zu 2 und 1 also zu den binomischen Formeln und zur geometrie. Aber sonst nirgenswo hin. //EDIT: problem gelöst. ne {} war falsch gesetzt. 2//EDIT: Wie ziehe ich denn ne Wurzel bei c++? |
Generell könntest du danach auch Googeln oder irgendeine passende Referenz im Internet suchen. ;)
In der math-library gibt's sqrt(float); Damit kannst du die Quadratwurzel aus einer Fließkommazahl ziehen. Wenn du z.B. die 3. Wurzel ziehen willst, dann solltest du vermutlich pow(float, float); verwenden. Also für die 3. Wurzel z.B. float(x, 1/3); |
OK danke ^^ . Stimmt könnte bei googel suchen. Aber wäre nicht sos chönw ie hier nach zu fragen :) auserdem seit ihr hier sehr kompetent.
|
Bei Google findest Du aber sehr viel, ich hab spontan z.B. das hier gefunden:
http://www.cppreference.com/stdmath/all.html Und benenne Deine Variablen sinnvoll, am besten wie ich es Dir oben vorgeschlagen habe. Das macht es auch für Dich leichter den Code nachzuvollziehen, vor allem wenn Dein Programm weiter wächst. Und um einzelne Bereiche abzutrennen brauchst Du auch nicht so viele # in den Kommentaren. Es reicht ein oder zwei Leerzeilen zu lassen und dann mit einem Kommentar eine kurze Überschrift zu schreiben, die am besten kurz und knapp erklärt was in den nächsten Zeilen gemacht wird. Also z.B. Code:
// Main menu Code:
float firstArgument; //argument used in calculation xyz |
Hört sich logisch an. Naja sitze nun an einem Problem was nichts mi c++ zu tuhen hat sonder mit Mathe. Hab in einem anderen Forum gefragt was sie noch so in einen Rechner haben wollen.
Da haben die mir sowas gegeben Wahrscheinlichkeitsrechnung,Kurvendiskussion,Kreisgleichung. Naja hm... Hab mich übernommen =( |
Du solltest dabei aber eher den Lerneffekt betrachten und nicht primär die Funktionalität Deines Programms. Du solltest Deine ersten Programme also eher programmieren um die Sprache zu lernen, was das Programm eigentlich macht ist dabei eher zweitrangig.
Es ist ja nicht so das die Welt ein weiteres Rechenprogramm benötigen würde, aber es ist eine gute Übung um zu lernen wie es funktioniert. Du solltest Dir also nicht überlegen was für Funktionen irgendwelche Leute haben möchten, sondern eher welche Programmierelemente Du dabei lernen kannst. Im Moment lernst Du ja noch eher den grundlegenden Syntax, nächste Schritte wären dann Dinge wie Schleifen, oder Variablen die mehrere Werte speichern können (Arrays), oder Datei Ein- und Ausgabe, usw. |
Und um nicht zu vergessen, unsere allseits beliebten pointer :D,
->absolut_wichtige_Sache; |
Für einen Rechner würde ich einfach mal einen Term-Parser empfehlen, der aus dem geparsten String entsprechende Terme als Objektbaum ablegt. Dann kannst du den Baum einfach von oben nach unten berechnen, was das einfachste am ganzen ist. Der Parser muss halt so sachen wie Punkt vor Strich, Klammernregelungen, etc. beherrschen und den Baum entsprechend ablegen.
Damit hast du auch schon eine sehr gute Übung für Zeiger ;) Andererseits dürfte so ein Parser wohl für den Anfang doch ein bisschen zuviel des Aufwands darstellen... |
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:22 Uhr. |
Powered by vBulletin Version 3.7.3 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.