Variablenvergleich, wie???



  • Hallo zusammen!

    ich brauche bitte eure Hilfe bei einem Variblenvergleich. Ich habe in meinem Programm ein array Laenge[m] programmiert. Je nach dem was der Benutzer eingibt für m habe ich also mehrere Werte für Laenge.
    Ich möchte jetzt die einzelnen Werte von Laenge [m] vergleichen und den größten rausfinden. Ich weiß nur leider nicht wie ich das programmieren kann 😞

    Kann mir da wohl jemand weiterhelfen?

    Vielen Danke schonmal 🙂



  • Hallo, vielleicht hift etwas Pseudocode:

    max = Laenge[0], i=1
    solange i < m:
        wenn Laenge[i] > max
        dann max = Laenge[i]
        i = i + 1
    

    Gruß,
    B.B.



  • also ich versteh nicht ganz was du willst aber so könnts klappen

    #include <stdio.h>
    #include <stdlib.h>
    
    int findMin(int *arr, int l){
      int ret;
      int buffer;
      if(l--){
        ret = arr[l];
        while(l--)
          if(ret > (buffer = arr[l]))
            ret = buffer;
      }
    }
    
    int findMax(int *arr, int l){
      int ret;
      int buffer;
      if(l--){
        ret = arr[l];
        while(l--)
          if(ret < (buffer = arr[l]))
            ret = buffer;
      }
      return ret;
    }
    
    int main(void){
      int arr[] = {7,9,1,2,3,4};
      int l = 6;
      printf("min:%d\nmax:%d"
        ,findMin(arr,l)
        ,findMax(arr,l)
      );
      return 0;
    }
    

    lg lolo



  • ups zwischen z.12 und z.13 fehlt ein "return ret;" wieso kam da keine warnung 😕

    lg lolo



  • danke B.B., ich glaube das hat mir weitergeholfen.
    ich versuche es mal umzusetzen 🙂



  • noobLolo schrieb:

    ups zwischen z.12 und z.13 fehlt ein "return ret;" wieso kam da keine warnung 😕

    lg lolo

    Vielleicht ist deine Warnstufe auf ganz klein, oder hast die Warnung übersehen?



  • noobLolo schrieb:

    ups zwischen z.12 und z.13 fehlt ein "return ret;" wieso kam da keine warnung 😕

    lg lolo

    In VC++ 2010 kommt sogar eine Error-Message, und man kann die Applikation ohne das Hinzufügen von return ret nicht compilieren.



  • #include <stdlib.h>
    #include <stdio.h>
    
    int main(){
    	int* Laenge;
    	unsigned m;
    	unsigned i;
    	unsigned max;
    
    	printf("m = ");
    	if(scanf("%d", &m) != 1 || !m)
    		return 0; /* Fehlerhafte Eingabe */
    	if((Laenge = (int*) malloc(m * sizeof(int))) == NULL)
    		return 0; /* Kein Speicher mehr. */
    
    	i = 0;
    	do{
    	 printf("Laenge[%d] = ", i);
    	}while(scanf("%d", Laenge + i) == 1 && ++i < m);
    	if(i < m)
    		return 0; /* Fehlerhafte Eingabe */
    
    	max = 0;
    	i = 1;
    	while(i < m){
    		if(Laenge[i] > Laenge[max])
    			max = i;
    		++i;
    	}
    
    	printf("Der groesste Wert war Laenge[%d] = %d", max, Laenge[max]);
    	getchar(); /* Entfernt das Newline Zeichen vom letzten scanf() Aufruf aus dem Eingabe-Buffer */
    	getchar(); /* Verhindert die Schliessung des Konsolenfensters, bis etwas eingegeben wurde */
    	return 0;
    }
    

Anmelden zum Antworten