PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : c++ rechenvorgang mit variablen



eRaSeR!
21.10.2008, 15:54
hey
ich wollte mal die 1. binomische formel (a²+2ab+b²) in c++ programmiern. jetzt funktioniert es zwar soweit dass man zalhlen eingeben kann aber wenn man 5x oder so eingibt gehts halt nich^^


#include <cstdlib>
#include <iostream>


using namespace std;
int a,b,c;

int main(int argc, char *argv[])
{
cout<<"1. Binomische Formel\n";
cout<<"Geben Sie Variable a ein\n";
cin>>a;
cout<<"Geben Sie Variable b ein\n";
cin>>b;
c=a*a+2*a*b+b*b;
cout<<"Die Lösung ist:"<<c<<"\n";

system("PAUSE>>NUL");
return EXIT_SUCCESS;
}


wenn ich include math.h mach, gehts auch nich. muss ich statt int a,b,c char oder so eingeben?

danke schonmal für die antworten

edit: also falls es unklar war da oben mit den 5x
wenn man zb für a = 5x einsetzt und für b 2

dann wäre es ausgerechnet 25x²+20x+4. sowas soll des ding rechnen^^

Teto
21.10.2008, 16:18
So erstmal ist deine deklaration außerhalb der main Methode,was heisst du hast die integer variablen global deklariert und das ist ein no-go in der Programmierung und wiederspricht der OOP(Objektorientierten Programmierung).

Das andere ist du brauchst keine math.h einbinden normale rechenoperationen kann c++ auch ohne, in der math.h gibt es nur Funktionen zur Wurzel ziehen und sowas.

Noch ne kleinigkeit, C++ kann keine Umlaute ohne weiteres darstellen,deshalb oe ue usw. schreiben oder nimmst die ANSI-Codes zum darstellen von umlauten.


Edit: habe gerade gesehen das das nciht dem entspricht was du wolltest.

Hier mal mein Beispiel(was auch funktionierte)


#include <iostream>
#include <conio.h>


using namespace std;

int main(int argc, char *argv[])
{
int a,b,c;

cout << "1. Binomische Formel\n";
cout << "Geben Sie Variable a ein:";
cin >> a;
cout << "Geben Sie Variable b ein:";
cin >> b;
c = (a*a) + (2*a*b) + (b*b);
cout<<"Die Loesung ist:" << c <<"\n";

getch();

return 0;
}

l0dsb
21.10.2008, 16:27
das ist ein no-go in der Programmierung
Vielleicht in der strikten OOP, nichtsdestotrotz sind globale Variablen - wenn ohne viel Aufwand auch anders möglich -, zu vermeiden.


Noch ne kleinigkeiten, c++ kann keine Umlaute
Das liegt nicht direkt an der Sprache, wohl eher an den Libraries.

Sein Problem war wohl eher, Terme mit Variablen zu vereinfachen bzw. so die binomische Formel zu lösen. In den Standardlibraries gibt es eine solche Funktionalität nicht, das müsste man selbst programmieren bzw. eine third-party Library verwenden.

eRaSeR!
21.10.2008, 16:50
ach egal ich lass des mal mit den variablen x etc weg. also des mit der globalen deklaration is gut, wenn man nich in jedem unterprogramm esn ochmal neu schreiben will. falsch isses nich. so kenn ich des zumindest.
ich versuch jetzt mal ne if funktion zu machen^^ 1. oder 2. bin formel

edit:

ok hab jetzt eine if und else if funktion am anfang. entweder 1. bin formel oder 2.
und ein else hab ich mit eingebaut
man wird aufgefordert 1 oder 2 einzugeben. wenn man was anderes eingibt, bekommt man von else eine meldung und dann soll man zum anfang zurückkehren. wie is der befehl zum zurück gehn?

danke :)

krusty
22.10.2008, 00:02
ich hätte da eine frage,

int main(int argc, char *argv[])

das ist doch ein zeiger oda ? wozu wäre der jetzt da ?

-[RiDER]-
22.10.2008, 11:35
Noch ne kleinigkeiten, c++ kann keine Umlaute
Das liegt nicht direkt an der Sprache, wohl eher an den Libraries.
Wohl eher an Editor, Compiler und Konsole.

IIRC schreibt der Standard es vor, dass, wenn nicht anders gefordert, die Zieldatei den gleichen Zeichensatz wie die Quelldatei hat (das führt übrigens zu interessanten Problemen auf MACs, weil dort ASCII zwar (richtigerweise) 7 bit breit ist, Umlaute dann aber mit zwei Bytes dargestellt werden (als "a" und "¨")).

Ich bin im Urlaub und habe den Standard nicht vor mir, sonst würde ich jetzt den entsprechendenb Absatz zitieren. ;)


ich hätte da eine frage,

int main(int argc, char *argv[])

das ist doch ein zeiger oda ? wozu wäre der jetzt da ?
Das ist ein Funktionskopf. Er deklariert Name, Type des Rückgabewertes und von der Funktion erwartete Parameter und deren Typ.

main() sollte jedem, der in dieser Sektion postet bekannt sein.
int argc und char *argv[] sind zwei besondere Variablen (die Namen der Variablen sind frei wählbar, jedoch haben sich für diesen einen Spezialfall diese beiden Bezeichnungen eingebürgert (so sehr, dass sie in anderen Sprachen zur Pflicht geworten sind)).

argc steht für "argument counter" und gibt die Anzahl der dem Programm übergebenen Argumente an. Nich unlogisch, dass die Variable vom Typ int ist. ;)
argv steht für "argument values". Die Variable ist vom Typ char** (eigentlich vom Typ char[][], aber es gibt keine Vektoren als Funktionsparameter, sie werden vom Compiler automatisch nach char** gecastet), des Verständnisses halber gerne als char *argv[] notiert, also als "Vektor von Zeigern auf den Typ char".
Jedes Vektorelement ist dabei ein Zeiger auf ein dem Programm übergebenes Argument, mit Ausnahme von argv[0], was auf den Namen der asugeführten Datei selbst (inklussive dem Arbeitsverzeichnis) zeigt.

Kurz: argc ist die Anzahl der übergebenen Argumente, argv sind die Argumente selbst, wobei das höchste Element argv[argc] ist und argv[0] der Name von Arbeitsverzeichnis und ausgeführter Datei ist.

Praktischerweise kümmert sich das Betriebssystem um den Speicher, der für argc und argv benötigt wird, man kann also quasi beliebig lange Strings an das Programm übergeben, ohne sich Sorgen über irgendwelche Overflows machen zu müssen (als Tipp für Dein Programm, krusty ;) ).

GreetZ RiDER :D :D :D

eRaSeR!
22.10.2008, 16:50
hey hier is mal mein erster kleiner rechner
er kann die 1-3 bin formel

http://rapidshare.com/files/156503024/Rechner.rar
die cpp datei is auch drin

könnt ihr mir sagen ob alles ok is und was ich besser machen könnte?

Added after 91 hours 34 minutes:



das ist ein no-go in der Programmierung
Vielleicht in der strikten OOP, nichtsdestotrotz sind globale Variablen - wenn ohne viel Aufwand auch anders möglich -, zu vermeiden.


Noch ne kleinigkeiten, c++ kann keine Umlaute
Das liegt nicht direkt an der Sprache, wohl eher an den Libraries.

Sein Problem war wohl eher, Terme mit Variablen zu vereinfachen bzw. so die binomische Formel zu lösen. In den Standardlibraries gibt es eine solche Funktionalität nicht, das müsste man selbst programmieren bzw. eine third-party Library verwenden.

sry für den doublepost^^ des gleiche bzw ähnlich stehts schonma oben

aber jetzt würdes mich doch interessieren wie man sowas macht dass der x * x rechnen kann und dass x² raus kommt. wo bekommt man solche libraries her die sowas ausgeben können?

und hat keiner noch irgendwelche verbesserungsideen oder sowas weil ich brauch des demnächst

mfg, eraser