Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ärger mit array

Empfohlene Antworten

Veröffentlicht

Huhu Leute :)

so ich hab ma wieder ein Problemchen...

mein Prof möchte ein Programm

haben, dass:

a) eine Zahlenfolge liest (Anzahl soll vorher abgefragt werden)

B) von der Zahlenfolge den Mittelwert bildet

c) das minimum der eingegebenen zahlen ausgibt

so bei c) hänge ich fest... irgendwie liest der den Wert den ich ins array tippe nicht bzw ich hab noch nicht viel Erfahrung mit array's vielleicht hab ich ja sonst noch en groben Fehler gemacht oda so, keine ahnung... komme jedenfalls nicht weiter, wäre nett wenn ma einer drüber schaut.

Bitte aber triviale Lösungsansätze/Vorschläge...

hab bissel gegooglet und was von "pointer" und "vector" gelesen aber sowas haben wir noch nicht gemacht

lg eryx (1 Semester Informatik)


#include <iostream>


#include <conio.h>

using namespace std;




double mittelwert(double x[],int anzahl) // Array x erstellen 



{

    int i;                                //feldgröße

    double m = 0.0;                        

    for(i=0;i<anzahl;i++)                //Feldgröße erhöhen bis an Eingabe angepasst 

    {

        m=m+x[i];    }                // Summe bilden


    m=m/anzahl;        // Mittelwert berechnen


    return m;                        

}


int main(void)

{

    double werte[1000];

    double min =0;

    int anzahl,i;

    double max = 0;


    cout<<endl<<"Anzahl der einzulesenden Werte: ";            // Anzahl der werte

    cin>>anzahl;




    for(i=0;i<anzahl;i++)

    {

        cout<<endl<<"Wert Nr."<<(i+1)<<": ";

        cin>>werte[i];




        if (min > werte[i])

        { 

            werte[i] = max;

        }




    }


    cout<<"Der Mittelwert der eingegeben Zahlen ist: "<<mittelwert(werte,anzahl);

    cout<<"\n\n"<<"Das Minimum lautet: "<< max;



    getch();

    return 0;

Der Programmteil mit der if-Abfrage (und die Ausgabe des Ergebnisses) verursacht die Probleme.

Den Mittelwert und die kleinste eingegeben Zahl kann man auch ohne Verwendung eines Arrays ermitteln.

Falls die eingegebenen Zahlen noch aus einem anderen Grund in einem Array abgelegt werden sollen, muss man darauf achten, dessen Grenzen nie zu überschreiten.

Okay, das oben geschrieben vergiss einfach mal!

Der Fehler ist viel einfacher :D, stell dir vor jemand gibt 7 9 6 3 8 4 in dein Programm ein.

Jetzt kommen wir zwar zu deinem:

        

if (min > werte[i])

        { 

            werte[i] = max;

        }

Dabei hasst du garnicht falsch früher ja min als:
    

double min =0;

eingeführt:

Wie sieht jetzt der Vergleich aus:

0 > 7, 0 > 9, 0 > 6, 0 > 3, 0 > 8, 0 > 4

kann davon irgendwas zu treffen, okay, negative Zahlen können kleiner als 0 sein ;).

Jetzt kannst du folgendes machen:

a) min einem max. Startwert geben, was jedoch fehlschlägt wenn du den maximalwert eingibst.

B) min mit dem ersten wert aus deinem array vorbelegen.

ja möglichkeit b hab ich auch schon dran gedacht... aber da scheiterts an den Grundlagen ^^

weiß net wie ich das korrekt schreibe....



                min = werte[1];


		if (min > werte[i])

		{ 

			werte[i] = max;

		}

Funktioniert schonma irgendwie net... ^^

ja möglichkeit b hab ich auch schon dran gedacht... aber da scheiterts an den Grundlagen ^^

weiß net wie ich das korrekt schreibe....



                min = werte[1];


		if (min > werte[i])

		{ 

			werte[i] = max;

		}

Funktioniert schonma irgendwie net... ^^
Hmm... hast du dir mal überlegt was du da schreibst ;) min = werte; -> sprich in min ist der gleiche Wert wie in werte und dann machst du ein if(min > werte) -> also ein if(werte > werte).... was gibt das wohl...



    double werte[1000];

    double min =0;

    int anzahl,i;

    double max = 0;


    cout<<endl<<"Anzahl der einzulesenden Werte: ";            // Anzahl der werte

    cin>>anzahl;




    for(i=0;i<anzahl;i++)

    {

        cout<<endl<<"Wert Nr."<<(i+1)<<": ";

        cin>>werte[i];


        [COLOR="Red"]

        // nicht schön, aber möglich


        // erster durchlauf der schleife, setze min und max auf aktuellen wert

        if(i == 0) {

          min = werte[i];

          max = werte[i];

        }

        else {

          // werte[i] ist kleiner als unsere aktuelles min und wird daher das neue min

          if(werte[i] < min) {

            min = werte[i];

          }

          // werte[i] ist größer als uneres aktuelles max und wird daher das neue max

          if(werte[i] > max) {

            max = werte[i];

          }

        }

        [/COLOR]          


    }

Btw. wenn du wirklich was cooles schreiben willst machst lieber ein: max = werte > max ? werte : max;


else {

          // werte[i] ist kleiner als unsere aktuelles min und wird daher das neue min

          min = werte[i] < min ? werte[i] : min;

          // werte[i] ist größer als uneres aktuelles max und wird daher das neue max

          max = werte[i] > max ? werte[i] : max;

        }

aufen ersten blick hab ich aber noch ne frage ;)


min = werte[i] < min ? werte[i] : min;

was bedeutet das "?" ?

ja meine grundgedanke war ja dass werte der aktuelle wert is den ich beim ersten cin eingebe und der dann wieder überschrieben wird und ich dannach wieder vergleiche... aber dem is wohl nicht so... ^^

mh okay werd ich mir heud abend ma in ruhe anschauen, hab jetzt en termin... schonma vielen dank für die mühe.... !

Soweit ich weiß macht diese tolle Syntax

wert = bedingung ? wenn wahr dann x : sonst y

vielleicht ist das ja einfacher

min = zahl < min ? zahl : min

Dabei wird der Ausdruck zahl < min ausgewertet, ist die Bedingung wahr, wird min = zahl, ist die Bedingung nicht wahr dann min = min, sprich es ändert sich nix.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.