C++



  • Hallo leute ich habe gerade ein Problem bei einer Aufgabe:

    Für eine Reihe von n gegebenen ganzzahligen Messwerten (n <= 100) soll der kleinste Wert
    herausgesucht werden. Geben Sie jeweils in C/C++ die dazu notwendigen Typvereinbarungen an
    sowie die Anweisungsfolge, die das gesuchte Ergebnis ermittelt (ohne Ein- und Ausgabe).

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int Messwerte[100];
    
        int min = 0;
    
            for( int i = 0; i<= 100 ; i++){
    
                if( i == min){
    
                        cout << min << endl;
    
                }
    
            }
    
    }
    

    Könnte man das so machen?



  • Nein.

    Uebrigens ist der Threadtitel grauenhaft.



  • so ganz grob die Struktur stimmt schonmal.

    Aber:

    * Das Arry ist nicht initialisiert. Warum überhaupt ein Array? Besser std::vector (->Google) Dann könntest du - sofern erlaubt - auch std::min_element nutzen. Aber aus Übungsgründen sollst du das vermutlich von Hand programmieren.
    * Du sollst den minimalen Wert suchen. Du initialisiert "min" mit 0. Was, wenn in dem Array nur negative Werte stehen?
    * Du vergleichst "i" mit "min". "i" ist aber nur der Schleifenzähler. Du musst mit den Werten im Array vergleichen.
    * Du veränderst "min" nicht.



  • Hallo shine21,

    also als erstes musst du ein geeignetes Array nehmen. Hier std::vector, weil es ja dynamisch sein soll. Da du keine Eingabe machen darfst, nimmst du für n einfach eine Zufallszahl. Ich hab dir hier mal den Ablauf beschrieben. Du musst nur noch die 6 Punkte entsprechend programmieren, und fertig.

    #include <cstdlib>
    #include <iostream>
    #include <vector>
    #include <ctime>
    using namespace std;
    
    int main()
    {
    	// 1. srand mit der Zeit ausführen.
    
    	// 2. Zufallszahl zwischen 0 und 100 erzeugen (rand + modulo) und in einer Hilfsvariable abspeichern.
    
    	// 3. for-Schleife von 0 bis < Zufallszahl laufen lassen. In jedem Durchlauf erzeugst du eine neue Zufallszahl und speicherst sie in deinem dynamischen Array (std::vector) ab.
    
    	// 4. Neue Hilfsvariable einführen. Ihr gibst du den Wert des ersten Elements deines Arrays.
    
    	// 5. for-Schleife von 1 bis < Zufallszahl laufen lassen. In jedem Durchgang machst du eine if-Abfrage. Wenn das Element am Index i kleiner ist, als das Element.
    	// das du in der Hilfsvariable abgespeichert hast, dann setzt du deine Hilfsvariable auf das Element am Index i.
    
    	// 6. Du hast nun dein kleinstes Element gefunden.
    }
    


  • // 5. for-Schleife von 1 bis < Zufallszahl laufen lassen.
    

    Müsste das nicht so sein:

    // 5. for-Schleife von 1 bis < 100 laufen lassen.
    

    ??



  • Fuchs aus dem Wald schrieb:

    // 5. for-Schleife von 1 bis < Zufallszahl laufen lassen.
    

    Müsste das nicht so sein:

    // 5. for-Schleife von 1 bis < 100 laufen lassen.
    

    ??

    Nein. Er soll ein n festlegen, 0 < n <= 100. Das passiert bei Schritt 2. Und n ist DIE Zufallszahl.



  • 1.) Problem: ...
    -> Abstrahiert durch eine Funktion(Algorithmus), die das loest.
    2.) Eingabe
    -> Parameter der Funktion, werden extern initialisiert/erzeugt/gefuellt, also nicht unser Problem
    3.) Parameter der Funktion:
    -> Array auf Messwerte und Anzahl der Messwerte, Messwerte sind ganzzahlig
    4.) Array of int:
    -> int*
    5.) Anzahl als natuerliche Zahl > 0:
    -> (unsigned) int
    6.) Rueckgabewert: kleinster Messwert
    -> int

    => Funktionssignatur:

    int min_value(int* values, unsigned int n)
    

    Fragen soweit zum ersten Teil?


Anmelden zum Antworten