# Funktionskopf fehlt - Parameterliste im alten Stil?



## blizZar (10. November 2005)

Hi,
  Also wir sollen im DVT LK ein Rechenprogramm mit Funktionen schreiben... leider scheitere ich schon in den ersten Zeilen:


  --------------------Konfiguration: re - Win32 Debug--------------------
  Kompilierung läuft...
  sss.cpp
 D:\Dokumente und Einstellungen\hu8i\Eigene Dateien\re\sss.cpp(17) : error C2447: Funktionskopf fehlt - Parameterliste im alten Stil?
  D:\Dokumente und Einstellungen\hu8i\Eigene Dateien\re\sss.cpp(24) : fatal error C1004: Unerwartetes Dateiende gefunden
  Fehler beim Ausführen von cl.exe.

  re.exe - 2 Fehler, 0 Warnung(en)

  --------------------------------------------------------------------------------------------------------------------------

 Dies ist mein Code den ich bissher nur schreiben konnte da ich vorallem an dem "Funktionskopf fehlt - Parameterliste im alten Stil?" nicht vorbei komme!

  #include <stdio.h>

  int rechenzeichen();

  int rechenz;

  int main()

  {
      printf("Dies ist ein Rechenprogramm");
      printf("\nBitte geben Sie ein Rechenzeichen ein (+,-,*,/): ");
      scanf("%i",&rechenz);

      return 0;
  }

      { <---- Hier tritt der Fehler "Funktionskopf fehlt - Parameterliste im alten Stil?" auf!
          int rechenzeichen()
              if(&rechenz !='+' || !='-' || !='*' || !='/') {
                  printf("Geben Sie ein gültiges Rechenzeichen ein!");
              else
                  return 0;
      }



  bitte helfen... so schnell wie möglich da ich das morgen schon abgeben muss ^^
  Ich arbeite mit Visual C++...
  bye


----------



## Thomas Kuse (10. November 2005)

ruhig blut, ich probiers gleich mal aus, also noch nicht schlafen gehn


----------



## blizZar (10. November 2005)

ich versuchs ^^


----------



## Thomas Kuse (10. November 2005)

uha, das war ja ganz schön verfrimelt.
   Ein bisschen besser aufpassen und lernen das nächste Mal!

   Da ich heute meinen guten Tag hab hier. Hab flink alle möglichen Spielereien eingebaut.
   Allerdings fehlt da noch so einiges 



```
#include <stdio.h>
   #include <stdlib.h>
   
   double berechnen(char _zeichen, int _zahl1, int _zahl2){ 
   
   	if(_zeichen=='+')
   			return (double)_zahl1 + (double)_zahl2;
   
   	if(_zeichen=='-')
   			return (double)_zahl1 - (double)_zahl2;
   
   	if(_zeichen=='*')
   			return (double)_zahl1 * (double)_zahl2;
   
   	if(_zeichen=='/')
   			return (double)_zahl1 / (double)_zahl2;
   
   	printf("Fehler: Geben Sie ein gültiges Rechenzeichen ein!");
   	exit(0);
   }
   
   int main(int argc, char** argv)
   {
   	char c_zeichen;
   	int  i_zahl1,i_zahl2;
   	double d_ergebnis;
   	
   	printf("Dies ist ein Rechenprogramm");
   	printf("\nBitte geben Sie ein Rechenzeichen ein (+,-,*,/): ");
   	scanf("%c",&c_zeichen);
   
   	printf("\nBitte geben Sie Zahl 1 ein: ");
   	scanf("%i",&i_zahl1);
   
   	printf("\nBitte geben Sie Zahl 2 ein: ");
   	scanf("%i",&i_zahl2);
   
   	d_ergebnis = berechnen(c_zeichen,i_zahl1,i_zahl2);
   
   	printf("Gleichung %d %c %d = %g", i_zahl1, i_zahl2, c_zeichen, d_ergebnis);
   
   	return 0;
   }
```


----------



## blizZar (10. November 2005)

danköööööööööööööööööö


----------



## blizZar (11. November 2005)

Hab noch ma ne simple frage 


```
#include <stdio.h>
   
   int main(void)
   {
       int rechenz;
       printf("\tR e c h e n p r o g r a m m");
       printf("\n<<+>> 1");
       printf("\n<<->> 2");
       printf("\n<<*>> 3");
       printf("\n<</>> 4");
       printf("\nModus: ");
       scanf("%i",&rechenz);
       
       
       while(rechenz>4) {                     //Scheife aber da gibbet ein CHAOS
       if(rechenz==1) {
           printf("Plus");
       }
       if(rechenz==2) {
           printf("Minus");
       }
       if(rechenz==3) {
           printf("Mal");
       }
       if(rechenz==4) {
           printf("Geteilt");
       }
       if(rechenz>4) {
           printf("Falsche Eingabe");
       }
                       }
       
   }
```
  ------------------------

 Ich will einfach eine wiederholschleife wenn die eingabe >4 ist. Wenn die zahl >4 ist, soll da stehen dass er eine gültoge Zahl eingeben hat und neu eingeben soll und das sollange bis eingabe <=4.


----------



## blizZar (11. November 2005)

ok hab schon -.-


----------



## blizZar (11. November 2005)

Hab nun aber ein anderes Problem. Wie sollen das prog mit Funktionen machen. Nun hab ich hier die funktion "void eingabe(int zahl1,zahl2)".
 Aber irgendwie schein ich die funktion falsch ins programm einzubringen.


```
#include <stdio.h>
 
 
 void eingabe(int zahl1, zahl2);
 int main(void)
 
 {
 	printf("\tR e c h e n p r o g r a m m\n\n");
 	int rechenz;
 	do
 	{
 	printf("\n<<+>> 1");
 	printf("\n<<->> 2");
 	printf("\n<<*>> 3");
 	printf("\n<</>> 4");
 	printf("\nModus: ");
 
 
 	scanf("%i",&rechenz);
 	
 	
 	
 	if(rechenz==1) {
 		printf("Plus");
 	}
 	if(rechenz==2) {
 		printf("Minus");
 	}
 	if(rechenz==3) {
 		printf("Mal");
 	}
 	if(rechenz==4) {
 		printf("Geteilt");
 	}
 	if(rechenz>4) {
 	    printf("\n\n<>!<>!<>!<>Falsche Eingabe<>!<>!<>!<>\n\n");
 	}
 	}
 	while(rechenz>4);
 
 		
 	void eingabe(int zahl1, zahl2)	// Hier ist der Fehler
 	{
 
 	
 
 
 	printf("Geben Sie nun die 1. Zahl ein: ");
 	scanf("%lf",&zahl1);
 	printf("\n%lf",&zahl1);
 
 			do
 			{
 				printf("Geben Sie nun die 2. Zahl ein: ");
 				scanf("\n%lf",&zahl2);
 
 				if(zahl2 ==0) {
 		    	printf("Die 0 ist ungültig!\nGeben Sie eine andere Zahl ein!");
 				}
 				while(zahl2==0)
 
 	
 			}
 
 	
 	}
 	return 0;
 }
```


----------



## Thomas Kuse (11. November 2005)

Vor jeder Variablen im Funktionsheader den Typ angeben!

```
int funktion(int zahl1, int zahl2)
```


----------



## blizZar (11. November 2005)

error C2062: 'int'-Typ unerwartet 


```
#include <stdio.h>
   
  int funktion(int zahl1, int zahl2);
  
  int main()
  {
  	 printf("\tR e c h e n p r o g r a m m\n\n");
  	 int rechenz;
  
  	 printf("\n<<+>> 1");
  	 printf("\n<<->> 2");
  	 printf("\n<<*>> 3");
  	 printf("\n<</>> 4");
  	 printf("\nModus: ");
  	
  	do
  	{
  		scanf("%i",&rechenz);
  		if(rechenz==1) {
  			printf("Plus");
  		}
  		if(rechenz==2) {
  			printf("Minus");
  		}
  		if(rechenz==3) {
  			printf("Mal");
  		}
  		if(rechenz==4) {
  			printf("Geteilt");
  		}
  		if(rechenz>4) {
  			printf("Ungültige Eingabe");
  			printf("\nModus: ");
  		}
  	}while(rechenz>4);
  	return 0;
   
  }
  int funktion(int zahl1, int zahl2)
  
  {
  	
  
  	printf("Geben Sie nun die 1. Zahl ein: ");
  	 scanf("%lf",&zahl1);
  	 printf("\n%lf",&zahl1);
   
  			 do
  			 {
 				 printf("Geben Sie nun die 2. Zahl ein: ");
  				 scanf("\n%lf",&zahl2);
   
  				 if(zahl2 ==0) {
 			 	printf("Die 0 ist ungültig!\nGeben Sie eine andere Zahl ein!");
  				 }
  				 while(zahl2==0);
  			}
  				return 0;
  }
```
 
    dann kommt der fehler ^^


----------



## deepthroat (11. November 2005)

Hi.

Mach mal das Semikolon hinter der schliessenden runden Klammer bei der Funktionsdefinition weg.

Gruß


----------



## blizZar (11. November 2005)

Das isses net :/


----------



## deepthroat (11. November 2005)

Du hast falsch eingerückt und die öffnenden / schließenden Klammern stimmen nicht mit der Ebene der Einrückung überein. Überprüf einfach mal die geschweiften Klammern und die Einrückung.

PS: Bei deiner Funktion fehlt eine *return* Anweisung (die Funktion soll ja int zurückgeben).

Gruß


----------



## blizZar (11. November 2005)

Hab ma das programm oben editiert jetzt hab ich nur noch einen fehler und der tritt unten am return 0; auf

 error C2059: Syntaxfehler : 'return'


----------



## deepthroat (11. November 2005)

Eigentlich schon; aber nicht wenn du deswegen durcheinander kommst und versuchst du Funktion "funktion" innerhalb der Funktion main zu definieren. Ich hab aber grad gesehen das noch ein Fehler drin ist : du hast keine Schleifenbedingung formuliert. (der while-Teil deiner do - Schleife fehlt).

/edit: Oder hab ich da jetzt einen copy'n'paste Fehler?

Gruß


----------



## blizZar (11. November 2005)

Hab ma das programm oben editiert jetzt hab ich nur noch einen fehler und der tritt unten am return 0; auf

   error C2059: Syntaxfehler : 'return'


----------



## deepthroat (11. November 2005)

Bei dem wie du's jetzt geändert hast bist du schon wieder mit den Klammern (und dem Einrücken) durcheinander gekommen und hast deswegen das while an die falsche Stelle gesetzt. Rück's richtig ein, dann sticht einem das sofort ins Auge...

Gruß


----------



## blizZar (11. November 2005)

Jetzt hab ich zwar keine fehler mehr, aber der führst die funktion garnet aus


----------



## jsendrow (11. November 2005)

Du rufst die Funktion ja auch nirgendwo in der Hauptroutine auf...


----------



## blizZar (11. November 2005)

was/wo muss ich denn schreiben...


----------



## Tobias K. (11. November 2005)

moin


@blizZar
Guck dir mal das hier an: http://www.fh-augsburg.de/informatik/vorlesungen/c_cplus/tutorial/henkel/Funktionen.html

@blizZar und alle andere die es nicht schaffen ihre Shift-Taste zu benutzen
Haltet euch bitte an die Groß und Kleinschreibung.


mfg
umbrasaxum


----------



## blizZar (11. November 2005)

Dann hab ich noch ne Frage... also ich hab soweit alles hinbekommen. Nur ich weis noch nicht wie man ein Wert aus einer Funktion in eine andere überträgt da ich ja nur Lockale Variablen benutzt.

  Beispiel:

 Die Funktion "int rechenzeichen(void)" bestimmt ob Additition, Multiplikation o.ä gerechnet werden soll. Ich bekomm also am Ender dieser funktion für die Variable "rechenz" für Plus eine 1, oder Minus eine 2, für Mal eine 3 und für Geteilt eine 4!

  Die nächste Funktion "int eingabe(void)" lässt den user 2 Werte einlesen.
 Bei Wert2 soll er prüfen ob "rechenz == 4" ist, da 4 eine Division ist und gleichzeitig prüfen ob Wert2 == 0. Darum weil man ja nicht durch 0 teilt.(Das stand auch in dem Arbeitsauftrag.)Das wiedeholt er solange bis Wert2 nicht 0 ist.

 Das Problem ist nun wie ich "rechenz" als Lokale Variable aus der "int rechenzeichen(void)" in die "int eingabe(void)" bekomme da wir keine Globalen Variablen benutzen dürfen.

  bye


----------



## Tobias K. (11. November 2005)

moin


Das steht in dem Link!


----------



## blizZar (11. November 2005)

Das is aber so ein komischer cin>> cout<< kram und meine Funktionen sind unten und net über main. Mag zwar alles das selbe sein, irritiert aber einen Anfänger


----------



## Tobias K. (11. November 2005)

moin




> Mag zwar alles das selbe sein, irritiert aber einen Anfänger


Ob drüber oder drunter ist im Prinzip das selbe, ja.
cin und cout sind was anders als scanf und printf, machen aber vergleichbares.

Kannst ja nochmal hier rein gucken: http://courses.iicm.edu/the_c_book/SoftwareentwicklungInC.pdf
Thema: Funktionen

Wenn du schlau bist liesst alles durch.


mfg
umbrasaxum


----------



## blizZar (11. November 2005)

bin ich net sonst könnt ich das ;-]


----------

