array über return schicken



  • Bingo!



  • feld[2];



  • VIELEN DANK
    THEMA ABGESCHLOSSEN ❤



  • hier noch was mit struct

    struct rechnung {
    	float div;
    	float mult;
    };
    struct rechnung rechnung(int a,int b) {
    	struct rechnung erg;
    	erg.mult=a*b;
    	erg.div=(float)a/b;   
    	return erg;
    }
    


  • Also ich habe ganz gut verstanden was Ihr versucht hab mir zu vermitteln...
    Habe das jetzt versucht anzuwenden und bin da auf Schwierigkeiten gestoßen... Vielleicht könntet Ihr mir auch hier weiterhelfen...Ich kriege einfach einen komplett falschen wert für das feld und das mit dem typ hatte ich mir auch anders vorgestellt...

    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    
    float rechnung(int,int,int,int);
    
    int main(){
    	int x1,x2,y1,y2,zaehler;
    	float feld[3];
    	char const typ[]={"Euklidische" "Manhattan" "Maximum"};//FUNKTIONIERT AUCH NICHT
    	//typ[0]="Euklidische";
    	//typ[1]="Manhattan";
    	//typ[2]="Maximum";
    	printf("Geben Sie 2 Punkte in Form : x1,y1,x2,y2    ein: ");
    	scanf("%i,%i,%i,%i",&x1,&y1,&x2,&y2);
    	printf("%i-%i-%i-%i",x1,y1,x2,y2);
    
    	rechnung(x1,y1,x2,y2);
    	for(zaehler=0;zaehler<=2;zaehler++){
    		printf("\nDer %c Abstand betraegt %i",typ[zaehler],feld[zaehler]);
    	}
    	return 0;
    }
    
    float rechnung(int x1,int y1,int x2, int y2){
    	float erg_euk,erg_man,erg_max,feld[3];
    	erg_euk=sqrt(float((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
    	//erg_euk=sqrt(pow((x1-x2),2)/pow((y1-y2),2));
    	//erg_man=max(1,2);
    	if(abs(x1-x2)>abs(y1-y2)){
    		erg_max=abs(x1-x2);
    	}
    	else{
    		erg_max=abs(y1-y2);
    	}
    	erg_man=abs(y1-y2)+abs(x1-x2);
    	feld[0]=erg_euk;
    	feld[1]=erg_man;
    	feld[2]=erg_max;
    	//printf("\n%f,%f",erg_euk,feld[0]);
    }
    


  • coon schrieb:

    Also ich habe ganz gut verstanden was Ihr versucht hab mir zu vermitteln...

    Du wendest aber keinen der Vorschläge an.

    coon schrieb:

    Habe das jetzt versucht anzuwenden und bin da auf Schwierigkeiten gestoßen... Vielleicht könntet Ihr mir auch hier weiterhelfen...Ich kriege einfach einen komplett falschen wert für das feld und das mit dem typ hatte ich mir auch anders vorgestellt...

    Wo übergibst du da feld an rechnung , bzw. wo ist der Rückgabewert?

    Wegen "//FUNKTIONIERT AUCH NICHT" mach mal

    char const *typ[]={"Euklidische" "Manhattan" "Maximum"};// Achte auf den *
    


  • Auf

    coon schrieb:

    also wird feld[] in der funktion rechnung direkt überschrieben?

    wurde mit

    mr. c schrieb:

    Bingo!

    geantwortet.
    Und das wurde hoffnungslos missverstanden.
    Coon, schau dir noch mal Gültigkeitsbereiche von Variablennamen an!



  • erstmal sorry für die später antwort....
    ich habe jetzt versuch´t das feld an die rechnung zu geben und auch den typ als array anzugeben....ich bekomme vom compiler jedoch bei dem typ wieder nichts und des feld scheint auch noch nicht übergeben worden zu sein:

    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    
    float rechnung(int,int,int,int,float*);
    
    int main(){
    	int x1,x2,y1,y2,zaehler;
    	float feld[3];
    	char const *typ[]={"Euklidische" "Manhattan" "Maximum"};//FUNKTIONIERT AUCH NICHT
    	//typ[0]="Euklidische";
    	//typ[1]="Manhattan";
    	//typ[2]="Maximum";
    	printf("Geben Sie 2 Punkte in Form : x1,y1,x2,y2    ein: ");
    	scanf("%i,%i,%i,%i",&x1,&y1,&x2,&y2);
    	printf("%i-%i-%i-%i",x1,y1,x2,y2);
    
    	rechnung(x1,y1,x2,y2,feld);
    	for(zaehler=0;zaehler<=2;zaehler++){
    		printf("\nDer %c Abstand betraegt %i",typ[zaehler],feld[zaehler]);
    	}
    	return 0;
    }
    
    float rechnung(int x1,int y1,int x2, int y2,float* feld){
    	float erg_euk,erg_man,erg_max;
    	erg_euk=sqrt(float((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
    	//erg_euk=sqrt(pow((x1-x2),2)/pow((y1-y2),2));
    	//erg_man=max(1,2);
    	if(abs(x1-x2)>abs(y1-y2)){
    		erg_max=abs(x1-x2);
    	}
    	else{
    		erg_max=abs(y1-y2);
    	}
    	erg_man=abs(y1-y2)+abs(x1-x2);
    	feld[0]=erg_euk;
    	feld[1]=erg_man;
    	feld[2]=erg_max;
    	//printf("\n%f,%f",erg_euk,feld[0]);
    }
    


  • coon schrieb:

    char const *typ[]={"Euklidische" "Manhattan" "Maximum"};//FUNKTIONIERT AUCH NICHT
    

    Komma fehlt, Komma fehlt:

    char* const typ[]={"Euklidische", "Manhattan", "Maximum"};
    
    printf("\nDer %c Abstand betraegt %i",typ[zaehler],feld[zaehler]);
    

    %c gibt einen einzelnen Buchstaben aus, Du brauchst %s. %i gibt ein Integer aus, in Feld[] sind aber Float-Werte. So gehts erst einmal:

    printf("\nDer %s Abstand betraegt %f",typ[zaehler],feld[zaehler]);
    

    Weitere Fehler werden Dir in Form von Compiler-Warnungen (GCC) oder -Fehler (MSVC u.a.) ausgegeben.

    viele grüße
    ralph



  • ok danke das programm funktioniert nun ❤
    ich dachte das ich das feld faölsch übergeben... aber das es so ein trivialer datentypfehler ist hätte ich nicht gedacht 😉 :xmas1:


Anmelden zum Antworten