Min & Max sowie position bestimmen.



  • Also dann:

    Die Aufgabe an sich ist recht einfach ich habe auch schon eine lösung, aber diese ist mit scnaf das wir vermeiden sollen.

    Ich habe jetzt zwei programme die nicht ganz funktionieren, vielleicht kann da ja jemand mal drüber schauen.

    Am Ende soll das Programm über die "Cmd box" aufgerufen werden.
    Zum Beispiel:

    minmax_pos.exe 1 5 10 7 4

    Dann soll das Programm ausgeben, dass max 10 und an dritter(4-1) Stelle steht sowie min an erster (2-1) stelle steht.

    Das programm soll natürlich mit "beliebig" vielen eingabevarianten funktionieren und die eingabe auf Ziffern/zahlen prüfen, eine Fehlermeldung ausgeben wenn erkannt wird dass es sich nicht um Zahlen handelt.
    _____________________________________________

    Super, danke schonmal im Voraus, denn bei mir ist grad der Wurm drin.

    1. //dieses programm gibt die Position der größten/ kleinsten zahl

    #include <stdio.h>
    #include <stdlib.h>
    
    int MinMaxPos(int argc, const char *argv[])
    {
      int min, max;
      int z;
      int i;
    
      if (argc == 1) {  
        printf("Aufruf: %s zahlen\n", argv[0]);
        exit(EXIT_FAILURE);
      }
    
      min = max = atoi(argv[1]);
    
      for (i = 2; i < argc; ++i) {
        z = atoi(argv[i]);  
        if (z < min) {
          min = z;     
        }
        if (z > max) { 
          max = z;     
        }
      }
    
      printf("Minimum: %d, Maximum: %d\n", min, max);
    
    return (min, max);
    }
    
    int main(void)
    {
    	int MinmaxPos;
    	int min, max;
    	 printf("Minimum: %d, Maximum: %d\n", min, max);
    	exit(EXIT_SUCCESS);
    }
    

    und dann der teil der mir Minumum und Maximum als werte liefert

    #include<stdlib.h>
    #include<stdio.h>   
    #include<math.h>   
    #include<ctype.h>
    
    int max, min, a, i;
    
    int minimum(int a, int min) 
    {
    if (a < min)
    min = a;                    
    return(min);             
    
    }
    
    int maximum(int a, int max)  
     {      
     if (a > max) 
    max = a;                  
    return(max);              
    }
    
    int main (int argc, const char *argv[])  {
    
    a = atoi(argv[i-1]);
    if (isdigit(a)){
    
    	max=0;
    	min=1000000;
    	min= minimum(a, min);
    	max= maximum(a, max);	
    
    	printf("The smallest number is %d, and the hightest number is %d\n", min, max);
    }
    
    	return EXIT_SUCCESS;
    }
    

    Und weil es so schön ist, ich will nicht sagen ich hätte nicht versucht mein problem selbst zu lösen, habe ich eine zweite version geschrieben, die auch nicht ganz funktioniert

    #include<stdio.h>
    #include<stdio.h>   
    #include<math.h>   
    #include<ctype.h>
    
    main(int argc, const char *argv[])
    {
      int index, minimum, maximum, i;
      //startwerte setzen
    
      minimum=atoi(argv[i-1]);
      maximum=atoi(argv[i-1]);
    
      printf("\n");
      printf("Die eingegebenen Zahlen sind:\n");
      for(index= 0; index < argv[i]; index++) {
        printf("|%10.2f",argv[i]);
        printf("\n\n");
    
        // minumum suchen
        if(argv[i] < minimum) {
          minimum=argv[i];
        }
    
        // maximum suchen
        if(argv[i]>maximum) {
          maximum=argv[i];
        }
      }
    
      printf("Maximum: %10.2f\n",maximum);
      printf("Minimum: %10.2f\n",minimum);
      return 0;
    }
    


  • Was ist deine Frage? (In deinem Beitrag taucht nicht ein Fragezeichen auf)

    Zudem ist "die auch nicht ganz funktioniert" eine echt beschissene Fehlerbeschreibung.

    Wie sieht dein einziges funktionierendes Programm aus?

    Der Compiler wandelt den Code in Maschinensprache um und fügt noch ein bischen Code dazu, der ein paar Einstellungen macht.
    Dieser Startup-Code ruft dann die main -Funktion mit zwei Parametern auf, die i.A. argc und argv genannt werden. Darüber kann man auf die Aufrufparameter des Programms zugreifen.

    Zudem kommst du noch mit der Zahlendarstellung als String (Folge von Zifferzeichen) und als Wert durcheinander.
    Auch die Formatspecifier bei printf erwarten passende Parameter beim Aufruf.

    Dein 1. Programm, eigentlich schon fast richtig, sieht für main aber keine Parametr vor und deine Berechnungsfunktion wird gar nicht aufgerufen. Darum ist auch dein Satz "1. //dieses programm gibt die Position der größten/ kleinsten zahl " gelogen.

    Beim 2. Programm fehlt, unter anderem, eine Schleife. Da wird nur ein Wert betrachtet

    Und welchen Wert hat die Variable i beim 3. Programm?

    Schalte beim Compiler die Stufe für Warnungen auf Maximum und beseitige die Ursache der Warnungen.


Log in to reply