# Programm zur Addition



## volgaist (15. Januar 2008)

Wie schreibe ich ein programm das mir diese zahlen addiert und das ergaebnis zwischen denn beiden zahlen links oder rechts ist nicht wichtig aber es muss zwischen denn beiden sein z.b    Danke voraus


                      + 23
                               = 35
                      + 12


----------



## shader09 (16. Januar 2008)

Was soll dann mit dem Ergebnis passieren!?
Drück dich mal bisschen besser aus.


----------



## zerix (16. Januar 2008)

Hallo,

bitte halte dich das nächste mal an die Netiquette (Groß-/Kleinschreibung, Satzzeichen).

Es wäre vielleicht auch angebracht, wenn du dir das nächste mal einen besseren Titel einfallen lassen würdest, da so vielleicht auch anderen mit den Threads geholfen werden kann. 

Desweiteren wäre es auch angebracht, wenn du versuchen würdest, dein Problem selbst zu lösen und wenn du da dann Probleme hast, den relevanten Quellcode postest.
Auch wenn es vielleicht nicht so beabsichtigt ist, sieht es im Moment so aus "ich weiß nicht wie das geht, also mach mir das mal bitte einer". Wie gesagt, ich möchte dir nichts unterstellen, aber im Moment sieht es so aus.

MFG

zEriX


----------



## Maik (16. Januar 2008)

Hi.


zerix hat gesagt.:


> Es wäre vielleicht auch angebracht, wenn du dir das nächste mal einen besseren Titel einfallen lassen würdest, da so vielleicht auch anderen mit den Threads geholfen werden kann.


Ich hab da mal Hand angelegt


----------



## Bismark (16. Januar 2008)

vielleicht hilft dir das hir, hab aber nicht selbst getestet


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

int main ()
{

float zahl1, zahl2, ergebniss;


cout<<"geben Sie die erste Zahl ein: "<<endl;
cin<<zahl1;
cout<<"geben Sie die zweite Zahl ein: "<<endl;
cin<<zahl2;

ergebniss = zahl1 + zahl1;

cout<<zahl1;
cout<<ergebniss;
cout<<zahl2;

getch();
return 0;
}
```


----------



## volgaist (16. Januar 2008)

hallo Bismark danke fuer die code aber beim executen des programms bekomme ich das:

main.cpp
main.cpp: In function `int main()':
main.cpp:10: error: `cout' undeclared (first use this function)
main.cpp:10: error: (Each undeclared identifier is reported only once for each
function it appears in.)
main.cpp:10: error: `endl' undeclared (first use this function)
main.cpp:11: error: `cin' undeclared (first use this function)
main.cpp:23:2: warning: no newline at end of file

hello.exe - 4 error(s), 1 warning(s)

 Danke


----------



## zerix (16. Januar 2008)

Warum sagst du nicht gleich, dass du nicht programmieren kannst und einen fertigen Code haben möchtest, der einwandfrei funktioniert?

MFG

zEriX


----------



## MiMi (16. Januar 2008)

Das hab ich mir auch gerade gedacht. 

@volgaist
Hol dir nen Buch fuer Anfaenger oder schau dir Tutorials an, fuer erste Schritte mit C++


----------



## volgaist (16. Januar 2008)

das ergebnis ist nicht so wichtig was damit geschen soll, was wichtig ist es "soll "und "muss" zwischen denn angegebenen zahlen erscheinen wie du es am beispiel sehen kannst----.

------------------------------------+23
--------------------------------------------= 35
------------------------------------+12
Positionieren ist das wichtigste, beim executen dieses programmes muss es so aussehen.Frage mich ob das mit mehreren zahlen auch moeglich waere ,aber immer in dieser form wie es am beispiel zu sehen ist. danke dir


----------



## MiMi (16. Januar 2008)

zerix hat gesagt.:


> Hallo,
> 
> bitte halte dich das nächste mal an die Netiquette (Groß-/Kleinschreibung, Satzzeichen).



Nochmal dieser Hinweis, sonst fliegst du hier schnell wieder ausm Forum!

Nochmal: Lern die Grundlagen, zeig deinen Code was du versuchst hast und zeig dort was die Probleme sind! Den code hast du ja schon bekommen, wie waers wenn du selbst versucht die Fehler zu beheben?


----------



## volgaist (16. Januar 2008)

Wenn ich alles koennte wuerde ich niemanden um hilfe bitten ,und wenn ich perfeckt deutsch koennte wuerde ich es bestimmt dich wissen lassen leider ist es nicht so. sorry


----------



## Laudian (16. Januar 2008)

was dem ganzen fehlt ist ein Namensraum ...

muss also noch ein 


```
using namespace std;
```

rein. 

Wo bitte selbst raus finden ...


----------



## zerix (16. Januar 2008)

volgaist hat gesagt.:


> Wenn ich alles koennte wuerde ich niemanden um hilfe bitten ,und wenn ich perfeckt deutsch koennte wuerde ich es bestimmt dich wissen lassen leider ist es nicht so. sorry



Das Problem ist ja, dass du nicht um Hilfe bittest, sonst würdest du ja von dir Code posten. Du bittest einfach um nen kompletten Code und das ist nicht um Hilfe bitten, sondern andere die Arbeit machen lassen.

MFG

zEriX


----------



## volgaist (16. Januar 2008)

Danke   Laudian  soviel weiss ich wo es hingehoert 'namespace' will gleich ausprobieren warum haben diese leute es so wichtig mit ( Netiquette ) sage nochmal wenn ich koennte wuerde ich aber kann nicht mein deutsch ist bis hierher......und nicht gleich mit raus schmeissen drohen etwas toleranz braucht jeder .....danke


----------



## zerix (16. Januar 2008)

Ich will ja nichts sagen, du hast keine Rechtschreibfehler. Also scheinst du ja deutsch zu können. Dann weißt du sicher auch, dass manche Wörter groß geschrieben werden. Sicher weißt du dann auch, dass es Satzzeichen gibt. 

MFG

zEriX


----------



## MiMi (16. Januar 2008)

Aber Satzzeichen gibt es auch in andern Sprachen ^^
Und ich drohe net mit rausschmiss, es ist nunmal so, bei deiner Anmeldung hast du der Netiquette zugestimmt und da steht das nunmal drin!


----------



## volgaist (16. Januar 2008)

Gute idee werde demnaechst an einem programm arbeiten das mich warnt wo ich die satz zeichen einsetzen muss. Uebrigens mein deutsch ist nicht das thema so bitte wenn du mir helfen kannst reden wir darueber wie ich mein problem beseitigen kann beispiel ist oben ..Danke und gruesse


----------



## zerix (16. Januar 2008)

Du meinst wohl eher, du wirst hier einen Thread eröffnen, dich dabei nicht an die Netiquette halten und dein Problem erläutern und hoffen, dass jemand dir ein Programm schreibt.

Mehr hast du bis jetzt nämlich nicht gemacht. Die Aufgabe ist so simple, dass jeder der nur ein wenig Programmiererfahrung hat, wenigstens etwas auf die Beine stellt, aber von dir kam bisher gar nichts.

MFG

zEriX


----------



## paak (17. Januar 2008)

Hallo,

ich habe diesen Code mit Turbo C++ v4.5 compiliert, bei mir funktioniert supper


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

int main ()
{

float zahl1, zahl2, ergebniss;

cout << "geben Sie die erste Zahl ein: ";
cin >> zahl1;
cout << "geben Sie die zweite Zahl ein: ";
cin >> zahl2;

ergebniss = zahl1 + zahl2;

cout <<"Zahl1     = " << zahl1 << endl;
cout <<"Ergebniss = " << ergebniss << endl;
cout <<"Zahl2     = " << zahl2 << endl;

getch();
return 0;
}
```

MfG  PaaK


----------



## volgaist (17. Januar 2008)

Hallo paak ,werde gleich ausprobieren und vielen dank

paak  funktioniert auch hier bei mir ,ich habe den MinGW ,und mit groesster wahrscheinlichkeit bin ich gruener als du . werde diesen program erweitern danke dir nochmals.bye


----------



## Laudian (17. Januar 2008)

Interessant, dass manche Kompiler vollkommen ohne Namensraeume auskommen.


----------



## volgaist (19. Januar 2008)

hallo leute:  diesen code habe ich ganz allein geschrieben ,bekomme zwar 2 warnungen beim compilieren aber es funktioniert,und es ist viel kuerzer als das oberer programm.

       #include <iostream.h>
       using namespace std;
       int main()
       {
       int a=23;
       int b=12;
       int c=a+b;

   cout<<"\n "<<a<<endl;
   cout<<"\n    "<<c<<endl;
   cout<<"\n "<<b<<endl;

};


----------



## Maik (19. Januar 2008)

@volgaist: An dieser Stelle wirst du nun zum letzten Mal von "offizieller" Seite darum gebeten, in deinen Beiträgen auf die Groß- und Kleinschreibung zu achten, denn:



			
				Netiquette Nr.15 hat gesagt.:
			
		

> [...] durchgehend kleingeschriebene Beiträge sind ebenfalls unerwünscht.
> 
> "Wiederholungstäter" werden, nachdem sie zuvor von einem Moderator auf die Mängel hingewiesen wurden, ggf. unbefristet gesperrt.



Quelle: http://www.tutorials.de/netiquette.html


----------



## Bismark (19. Januar 2008)

Ich denke auch das du bisschen mehr auf die Schreibweise achten solltest, man kann zwar beim schreiben Fehler machen, aber man sollte trotzdem darauf achten. 
**************




volgaist hat gesagt.:


> hallo leute:  diesen code habe ich ganz allein geschrieben ,bekomme zwar 2 warnungen beim compilieren aber es funktioniert,und es ist viel kuerzer als das oberer programm.
> 
> #include <iostream.h>
> using namespace std;
> ...


Ich arbeite mit DEV C++ und bei dem funktioniert es gar nicht.
Du musst  #include <iostream.h> ohne .h schreiben, also #include <iostream> und am ende fehlt halt return 0 und #include <iostream.h> am Anfang.


----------



## deepthroat (19. Januar 2008)

Hi.





Bismark hat gesagt.:


> Du musst  #include <iostream.h> ohne .h schreiben, also #include <iostream> und am ende fehlt halt return 0 und #include <iostream.h> am Anfang.


Du widersprichst dir irgendwie selbst. Der Header heißt tatsächlich "iostream" (ohne Endung) wie du bereits sagtest.

Das "return 0;" fehlt nicht, es wurde nur weggelassen, was in C++ (und ebenfalls in C99) völlig legitim ist. Außerdem ist das Semikolon hinter der letzten geschweiften Klammer unnötig.

@volgaist: Natürlich ist dein Programm kürzer als das von paak, allerdings machen beide Programme unterschiedliche Dinge. Du konntest nicht klar ausdrücken was du wolltest, so ist es völlig normal, das du nicht genau das bekommst was du haben willst.


----------



## Bismark (20. Januar 2008)

deepthroat hat gesagt.:


> Hi.
> Du widersprichst dir irgendwie selbst. Der Header heißt tatsächlich "iostream" (ohne Endung) wie du bereits sagtest.



Du hast recht ich meinte, dass das #include <conio.h> fehlt.




deepthroat hat gesagt.:


> Das "return 0;" fehlt nicht, es wurde nur weggelassen, was in C++ (und ebenfalls in C99) völlig legitim ist. Außerdem ist das Semikolon hinter der letzten geschweiften Klammer unnötig.



Mit dem Semikolon hab ich es übersehen und mit dem return 0 ist es bei mir , wenn ich es weglasse ist das Programm dann Fehlerhaft oder macht dann nicht das was es sollte.


----------



## deepthroat (20. Januar 2008)

Bismark hat gesagt.:


> Du hast recht ich meinte, dass das #include <conio.h> fehlt.


Warum sollte dieser Header fehlen? Es wird ja nichts aus conio.h benutzt. Zumal conio.h kein Standard-Header ist.


Bismark hat gesagt.:


> mit dem return 0 ist es bei mir , wenn ich es weglasse ist das Programm dann Fehlerhaft oder macht dann nicht das was es sollte.


Das wage ich zu bezweifeln... 

Gruß


----------



## paak (20. Januar 2008)

Hallo,

@ volgaist, die kürzeste Lösung ist nicht immer die beste  , da du ein Anfänger bist, wollte ich dir nur den EVA-Prinzip (Eingabe-Verarbeitung-Ausgabe) mit diesem Programm zeigen. Ich mache auch eine Eingabe in meinem Programm, und du hast den Variablen einen festen Wert zugewiesen, deswegen sieht dein Programm kürzer aus, was aber nicht sinnvoll ist. Versuche doch einfach das Programm mit einer Schleife zu erweitern, mache das mit einer DO-WHILE-Schleife mit Abfrage auf Wiederholung. Und bitte nicht den kompleten Code posten.

Und achte auf die Rechtschreibung.

MfG 
PaaK


----------



## Bismark (24. Januar 2008)

deepthroat hat gesagt.:


> Das wage ich zu bezweifeln...
> 
> Gruß



Der Compiler braucht doch eigentlich ein Befehl, damit es weiß, wann das Programm zu ende ist,  oder.


----------



## paak (24. Januar 2008)

Bismark hat gesagt.:


> Der Compiler braucht doch eigentlich ein Befehl, damit es weiß, wann das Programm zu ende ist,  oder.



Nein, das stimmt nicht. Die *RETURN* - Anweisung braucht man bei Wertübergabe, wenn du z.B. einen Wert in einer Funktion berechnest, welches auf lokale Variable gespeichert ist, brauchst aber diesen Wertin in einer anderen Funktion wieder, machst du eine Übergabe, und das erfolgt durch  *return* Anweisung, gillt aber nur für *int* Funktionen. Für Hauptfunktion brauchst du kein *return*. 

*Use the return statement to exit from the current funktion back to the calling routine, optionally returning a value.* 

MfG 

PaaK


----------



## Laudian (24. Januar 2008)

Bismark: braucht es nicht zwangslaeufig, da die {} den Anweisungsblock des Hauptprogramms schon festlegen ... Return ist dafuer da, dem OS mitzuteilen, ob das Programm ordnungsgemaess oder mit Fehler beendet wurde. 


am Ende laesst sich die Geschichte sogar mit Eingabe kurz schreiben:


```
#include <iostream>

using namespace std;

int main() 
{
  cout << "Geben sie 2 Ziffern getrennt von [Enter] ein: \n"
  while (1)
  {
     int a=getch();
     int b=getch();
     if (9>= (a-'0') && 0<=(a-'0') && 9>=(b-'0') && 0<=(b-'0'))
    {
      int c=a+b;
      cout<<"Das Ergebnis von "<<a<<" + "<<b<<" = "<<c<<endl;
      break;
    }
    else cout<<"Keine Ziffer eingegeben, bitte widerholen sie die Eingabe: \n";
  }
}
```


----------



## paak (25. Januar 2008)

Hallo,

Eine "return "-Anweisung bewirkt die unmittelbare Beendigung der momentanen Funktion und einen Rücksprung zum aufrufenden Programmteil. Wird eine "return "-Anweisung mit einem Ausdruck angegeben, wird der Wert dieses Aufrufs als Funktionsergebnis an den aufrufenden Programmteil zurückgegeben. Sollte der Wert des Ausdrucks nicht mit dem Datentyp des Funktionswertes übereinstimmen, erfolgt eine implizite Typumwandlung. 
Das Erreichen des Endes der Funktion ist gleichbedeutend mit einer "return "-Anweisung ohne Ausdruck. 


Form: "return " [Ausdruck] "; "


```
/* Damenproblems - Backtracking
               Turbo C++ v4.5                          */

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

const char Kopfzeile[9]={'A','B','C','D','E','F','G','H'};
typedef enum wahrheit{true=1,false=2} wahr;
int Dame[8]={0};

void write_Loesungen()          //gibt die Lösung aus
{
 int i;
 for(i=0;i<8;i++)
 {
  printf("%d",Dame[i]);
 }
 printf("\n");
}

int pruefung_bedroht(int s)
{
 int i=0;
 wahr bedroht=false;              //Lokale Definition
 while((i<s)&&(bedroht==false))
 {
  if((Dame[s]==Dame[i])||(abs(Dame[s]-Dame[i])==s-i))
	bedroht=true;
  else i++;
 }
 return bedroht;                  //gibt den "bedroht" zurück mit
}                                 //entsprechendem Wert true oder false

int pruefung_auf_Brett(int s)
{
 wahr pos;                        //Lokale Definition
 if(Dame[s]>0) pos=true;
 else pos=false;
 return pos;                      //Lifert Position true oder false
}

void vorruecken(int s)
{
 do
 {
  if(Dame[s]<8)Dame[s]=Dame[s]+1;
  else Dame[s]=0;
 }while((pruefung_bedroht(s)==true) &&(pruefung_auf_Brett(s)==true));
}

void Damen_setzen()      					 //Die Dame wird gesetzt
{
 int k=0;                               //Die Dame auf Null setzen
 do
 {
  vorruecken(k);
  if (pruefung_auf_Brett(k)==true)      //Prüfung ob die Dame auf Brett ist
  {
	if(k<7) k++;                         //wenn wahr dann vorrücken
	else write_Loesungen();              //sonst die Lösung schreiben
  }
  else k--;                             //wenn die Dame nicht auf Brett ist dann
 }while(pruefung_auf_Brett(0)==true);
}

void main(void)
{
 clrscr();
 printf("Lösung des Damen-Problems");
 printf("\n=========================\n\n");
 printf("%s",Kopfzeile);
 printf("\n");
 Damen_setzen();
 printf("\nDas sind alle Lösungen!");
}
```

Die void Funktionen habe ich ohne return geschrieben, und int verlangt eine return Anweisung, sonst gibt der Compiler einen Fehler aus. Ich weis nicht wie das in Dev C++ aussieht, habe nicht probiert.

Sorry für den completen Code

PaaK


----------



## deepthroat (27. Januar 2008)

Hi.





paak hat gesagt.:


> ```
> void main(void)
> {
> }
> ...


Laut C und C++ Standard *muss* die Haupteinsprungsroutine (main) int zurückgeben. D.h. "void main()" ist falsch bzw. nicht standardkonform. (Turbo C++ 4.5 ist natürlich etwas älter und unterstützt deswegen nicht unbedingt den C++ Standard. Dev-C++ ist kein Compiler - hat also mit der ganzen Sache nichts zu tun. Dev-C++ verwendet den GCC als Compiler und der ist weitgehend standardkonform zum C und C++ Standard. Du solltest evtl. zu einem aktuellen Compiler wechseln.)

Laut C 99 und C++ Standard darf man in der Haupteinsprungsroutine (main) die "return 0;" Anweisung weglassen (der Compiler geniert diese dann automatisch). (In anderen Funktionen gilt das nicht!)

Gruß


----------

