übergabe an Unterfunktion scheitert



  • Moin!

    Nicht lachen! 1. Semester!

    ich will die Werte zeichen und gesamt an eine Unterfunktion übergeben.

    der Kopf sieht so aus:

    int auswahl_eins (int gesamt, char zeichen);
    *
    *

    else if (wahl==1)
    {
    printf("\n Bitte Zeichen eingeben, mit dem der Baum
    dargestellt werden soll.\n\n");
    printf(" Ihre Wahl: ");
    fflush(stdin);
    gets(zeichen);

    printf("\n Bitte geben sie die Anzahl der Zeichen ein.\n\n");
    printf(" Ihre Wahl: ");
    fflush(stdin);
    scanf("%d", &gesamt);

    auswahl_eins (int gesamt, char zeichen); // Übergabe
    }

    Kopf der Unterfkt.:

    int auswahl_eins ( int gesamt, char zeichen)

    Jetzt bekomme ich folgenden Fehler:

    1.) Syntaxfehler : Fehlendes ')' vor 'type' // mit zeiger auf die Übergabe
    2.) 'auswahl_eins' : Nicht genügend Parameter uebergeben // ist ja klar

    Danke, danke im Voraus!



  • Bei der Übergabe brauchst du den Typ nicht mit anzugeben, sonst verwirrst du nur deinen Compiler:

    else if (wahl==1) 
    {
      //...
      auswahl_eins (gesamt,zeichen); // Übergabe 
    }
    


  • Danke!

    hab auch noch "[2]" die Länge des char nicht mit übergeben.

    so siehts fertig aus!

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int auswahl_eins (int gesamt, char zeichen[2]);
    int auswahl_null (int m, int hoehe, char zeichen[2]);
    
    int main (void)
    {
    
    	int wahl, gesamt=0, hoehe=0, m=0 ;
    	char zeichen[2];
    
    	printf("              ***************   Tannenbaum   ***************              \n\n");
    
    	printf("\n Wollen sie den Baum aus Stamm- und Gesamthoehe(0)\n");
    	printf("\n                        oder Anzahl der Zeichen(1)\n\n berechnen lassen? Beenden:sonstige Zeichen\n\n");
    	printf(" Ihre Wahl:  ");
    	scanf("%d", &wahl);
    
    	// Übergabe an Unterfunktionen
    
    	if (wahl==0)
    	{
    		// Auswahl
    		printf(" Bitte Zeichen eingeben, mit dem der Baum dargestellt werden soll.\n\n");
    		printf(" Ihre Wahl:  ");
    		fflush(stdin);
    		gets(zeichen);
    
    		// Einlesen
    		printf("\nBitte geben sie die Stammhoehe ein!\n\n");
    		printf(" Ihre Wahl:  ");
    		fflush(stdin);
    		scanf("%d", &m);
    
    		printf("\nBitte geben sie die Gesamthoehe ein!\n\n");
    		printf(" Ihre Wahl:  ");
    		fflush(stdin);
    		scanf("%d", &hoehe);
    
    		auswahl_null(m, hoehe, zeichen);
    	}
    
    	else if (wahl==1)
    	{
    		printf("\n Bitte Zeichen eingeben, mit dem der Baum dargestellt werden soll.\n\n");
    		printf(" Ihre Wahl:  ");
    		fflush(stdin);
    		gets(zeichen);
    
    		printf("\n Bitte geben sie die Anzahl der Zeichen ein.\n\n");
    		printf(" Ihre Wahl:  ");
    		fflush(stdin);
    		scanf("%d", &gesamt);
    
    		auswahl_eins (gesamt, zeichen);
    	}
    
    } 
    //********************  auswahl eins  *******************************************
    
    int auswahl_eins ( int gesamt,char zeichen[2])
    
    {
    	int zweig=0, i=1, j, zaehler=1;
    	double n, m, leer, ncopy;
    
    	// berechnung
    	n = sqrt (gesamt);	// zieht die Wurzel aus Gesamtanzahl der Zeichen	
    	n = floor(n);		// rundet n ab, falls ein float entsteht	
    	m = gesamt - n*n;	// weist den Rest der Wurzel auf m zu
    	ncopy=n;			// merker für n
    
    	//Zweige zeichnen
    
    	do		
    	{	
    
    		printf("\n");
    
    		for (leer= n-1; leer >=1; leer--)		
    		{
    			printf(" ");
    
    		}
    
    		for (i; i<=zaehler; i++)
    		{
    			printf("%s", zeichen);
    		}
    
    		i=1;	
    		n--;
    		zaehler = zaehler+2;
    	}while (n>=1);
    
    	//Stamm zeichnen
    
    	for (m; m>=1; m--) 
    	{
    		printf("\n");
    
    		for (j=1; j<ncopy; j++)
    			printf (" ");
    
    		printf("%s",zeichen);
    	}
    
    	printf("\n\n");
    
    	return 0;
    
    }
    


  • C_NOOB schrieb:

    Danke!

    hab auch noch "[2]" die Länge des char nicht mit übergeben.

    so siehts fertig aus!

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int auswahl_eins (int gesamt, char zeichen[2]);
    int auswahl_null (int m, int hoehe, char zeichen[2]);
    
    int main (void)
    {
    	
    	
    	int wahl, gesamt=0, hoehe=0, m=0 ;
    	char zeichen[2];
    	
    	
    	
    	
    	printf("              ***************   Tannenbaum   ***************              \n\n");
    	
    	printf("\n Wollen sie den Baum aus Stamm- und Gesamthoehe(0)\n");
    	printf("\n                        oder Anzahl der Zeichen(1)\n\n berechnen lassen? Beenden:sonstige Zeichen\n\n");
    	printf(" Ihre Wahl:  ");
    	scanf("%d", &wahl);
    	
    	// Übergabe an Unterfunktionen
    	
    	
    	if (wahl==0)
    	{
    		// Auswahl
    		printf(" Bitte Zeichen eingeben, mit dem der Baum dargestellt werden soll.\n\n");
    		printf(" Ihre Wahl:  ");
    		fflush(stdin);
    		gets(zeichen);
    		
    		// Einlesen
    		printf("\nBitte geben sie die Stammhoehe ein!\n\n");
    		printf(" Ihre Wahl:  ");
    		fflush(stdin);
    		scanf("%d", &m);
    		
    		
    		printf("\nBitte geben sie die Gesamthoehe ein!\n\n");
    		printf(" Ihre Wahl:  ");
    		fflush(stdin);
    		scanf("%d", &hoehe);
    		
    		auswahl_null(m, hoehe, zeichen);
    	}
    
    	else if (wahl==1)
    	{
    		printf("\n Bitte Zeichen eingeben, mit dem der Baum dargestellt werden soll.\n\n");
    		printf(" Ihre Wahl:  ");
    		fflush(stdin);
    		gets(zeichen);
    		
    		
    		printf("\n Bitte geben sie die Anzahl der Zeichen ein.\n\n");
    		printf(" Ihre Wahl:  ");
    		fflush(stdin);
    		scanf("%d", &gesamt);
    
    		auswahl_eins (gesamt, zeichen);
    	}
    	
    } 
    //********************  auswahl eins  *******************************************
    
    int auswahl_eins ( int gesamt,char zeichen[2])
    
    {
    	int zweig=0, i=1, j, zaehler=1;
    	double n, m, leer, ncopy;
    	
    	
    	// berechnung
    	n = sqrt (gesamt);	// zieht die Wurzel aus Gesamtanzahl der Zeichen	
    	n = floor(n);		// rundet n ab, falls ein float entsteht	
    	m = gesamt - n*n;	// weist den Rest der Wurzel auf m zu
    	ncopy=n;			// merker für n
    	
    	//Zweige zeichnen
    	
    	do		
    	{	
    		
    		printf("\n");
    		
    		for (leer= n-1; leer >=1; leer--)		
    		{
    			printf(" ");
    			
    		}
    		
    		
    		for (i; i<=zaehler; i++)
    		{
    			printf("%s", zeichen);
    		}
    		
    		
    		
    		
    		i=1;	
    		n--;
    		zaehler = zaehler+2;
    	}while (n>=1);
    	
    	//Stamm zeichnen
    	
    	for (m; m>=1; m--) 
    	{
    		printf("\n");
    		
    		for (j=1; j<ncopy; j++)
    			printf (" ");
    		
    		printf("%s",zeichen);
    	}
    	
    	printf("\n\n");
    	
    	return 0;
    	
    }
    

    Sicher? Bei mir kommt immer ne Fehlermeldung!
    Aber das ist warhscheinlich deswegen weil "int auswahl_null (int m, int hoehe, char zeichen[2]);" nicht definiert ist!


Anmelden zum Antworten