tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
787
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Evola Evola ist offline Rookie
    Registriert seit
    Jun 2004
    Ort
    Spittal / Kärnten
    Beiträge
    7
    Hallo

    ich bin och ein ziemlicher Anfänger in C

    ich habe da eine Aufgabe bekommen und kann sie nicht knacken ...ich soll von 20 Zahlen die der user eingeben muss ein Programm schreiben das mir die Standardabweichung und den Mittelwert ausgibt und weiters soll das Programm noch die Zahlen Angeben die doppelt eingegeben wurden...wenn zum Beispiel eine 4 drei Mal eingetippt wurde soll das Programm schreiben die 4 wurde 3 Mal eingetippt usw...ich hoffe mir kann jemand helfen ich bin schon mit meinen Nerven am Ende

    Mfg
     

  2. #2
    Avatar von Martin Schroeder
    Martin Schroeder Martin Schroeder ist offline Mitglied Gold
    Registriert seit
    May 2004
    Ort
    Glückstadt (SH)
    Beiträge
    120
    int zahlen[21];
    double mittel=0;

    for(int i=0;i<20;i++)
    {
    cout<<i<<". Zahl:"<<flush;
    cin>>zahl[i];
    mittel+=zahl[i];
    mittel/=2;
    }[/FONT]
    Das wäre schon mal der Anfang.
     
    while(!asleep())
    {
    sheep++;
    }
    *gähn* ;-)

  3. #3
    Evola Evola ist offline Rookie
    Registriert seit
    Jun 2004
    Ort
    Spittal / Kärnten
    Beiträge
    7
    thx

    muss ich jetzt gleich mal ausprobieren
     

  4. #4
    Evola Evola ist offline Rookie
    Registriert seit
    Jun 2004
    Ort
    Spittal / Kärnten
    Beiträge
    7
    ja das liest mir jetzt zwar die Zahlen ein aber

    ich weiß nicht wie ich doppelte einträge suche

    Mfg
     

  5. #5
    Registriert seit
    Apr 2004
    Ort
    Bbg
    Beiträge
    200
    Du musst halt entweder bei jedem Schleifendurchgang dein Array (zahlen[21]) durchgehen (z.b mit einer for-schleife) und jede Zahl mit der eingegebenen vergleichen oder das Array erst nach der gesamten Eingabe überprüfen und doppelte Zahlen nochmal eingeben lassen.

    2. Möglichkeit (einfach):
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
        for(i = 0; i < ANZ-1; i++) {
            for(j = i+1; j < ANZ; j++) {
                if(zahlen[i] == zahlen[j]) {
                    cout << "Die Zahl " << zahlen[j] << " wurde mehr als einmal eingegeben\n";
                    cout << "Bitte geben sie eine andere Zahl ein: ";
                    cin >> zahlen[j];
                    i = -1;
                    break;
                }
            }
        }
     

  6. #6
    Evola Evola ist offline Rookie
    Registriert seit
    Jun 2004
    Ort
    Spittal / Kärnten
    Beiträge
    7
    und wie kann ich dann zum Beispiel von einem geordneten Feld den größten und den kleinsten Wert ausgeben

    Mfg
     

  7. #7
    Avatar von Harrier
    Harrier Harrier ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Ort
    München
    Beiträge
    208
    Wie meinst du das? Aus einem Array den größten und den kleinsten Wert?
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    int iMin=0, iMax=0;
    for( int i=0; i < sizeof(array); i++ ) {
      if( iMax < array[i]) iMax = array[i];
    }
    iMin = iMax;
    for( int i=0; i < sizeof(array); i++) {
      if(iMin > array[i]) iMin = array[i];
    }
     
    cout << "Größter Wert: " << iMax << "\n";
    cout << "Kleinster Wert: " << iMin;

    Oder hab ich dich falsch verstanden?
     
    www.C4D-World.de
    Die Welt von Cinema 4D

  8. #8
    basd basd ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Ort
    München
    Beiträge
    264
    mittel/=2;
    des ist falsch

    Man muss alle Zahlen zam zählen und dann durch deren Anzahl teilen !

    Die Varianz bzw. Standard Abweichung berächnet sich ja ähnlich indem du des gleiche für die Quadrate der Zahlen machst und dann sum(x^2) - (sum(x))^2
     

  9. #9
    Avatar von Harrier
    Harrier Harrier ist offline Mitglied Gold
    Registriert seit
    Jul 2003
    Ort
    München
    Beiträge
    208
    Zitat Zitat von basd
    mittel/=2;
    des ist falsch

    Man muss alle Zahlen zam zählen und dann durch deren Anzahl teilen !

    Die Varianz bzw. Standard Abweichung berächnet sich ja ähnlich indem du des gleiche für die Quadrate der Zahlen machst und dann sum(x^2) - (sum(x))^2
    Hab ich mir auch schon gedacht! War aber so müde dass ich net sicher war ...
     
    www.C4D-World.de
    Die Welt von Cinema 4D

  10. #10
    Evola Evola ist offline Rookie
    Registriert seit
    Jun 2004
    Ort
    Spittal / Kärnten
    Beiträge
    7
    Hi ich hab nun alles super gelöst vielen Dank nur habe ich noch ein kleines Problem:

    ich lese zum Beispiel 4 Zahlen ein: 1 1 2 3

    nun sortiere ich die Zahlen mit bubblesort und dannn möchte ich gerne dass die Zahlen wie folgt ausgegeben werden:

    Zahl 1 wurde 2 Mal eingegeben
    Zahl2 wurde 1 Mal eingegeben usw.

    for(i=0;i<x;i++)
    {
    cout<<zahlen[i]<<",";
    }

    int anzahl1=x;
    bool gleich = true;
    while (gleich)
    {
    gleich=false;

    for (i=0;i<anzahl1;i++)
    {
    if(zahlen[i]==zahlen[i+1])
    {

    gleich=true;
    }
    }

    anzahl1--;

    }
    cout<<"\n"<<"Zahl"<<" "<<zahlen[i]<<" "<<i+1<<" Mal";

    so habe ich den Code gestaltet aber der net so richtig!

    Ich weiß nun nicht was daran so falsch ist?

    Villeicht kann mir ja jemand helfen

    Greez
     

  11. #11
    Registriert seit
    Apr 2004
    Ort
    Bbg
    Beiträge
    200
    Hi,

    Mal ein kleiner Tipp: verwenden die code-tags, dann sieht der Quellcode schon mal viel übersichtlicher aus.

    Ok jetzt mal zu deinem Problem: ich weiß nicht wo dein Fehler ist, ich habe deinen Code auch nicht ausprobiert. Ich würde das Array halt einfach durchgehen und die Zahlen zählen.Ungefähr so (das Array muss sortiert sein):
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
        int i, curr, cnt;
        [...]
        curr = zahlen[0];
        cnt = 1;
        for(i = 1; i < sizeof(zahlen)/sizeof(int); ++i) {
            if(curr != zahlen[i]) {
                cout << "Die Zahl " << curr << " wurde " << cnt << " mal eingegeben.\n";
                curr = zahlen[i];
                cnt = 1;
            } else
                ++cnt;
        }
        cout << "Die Zahl " << curr << " wurde " << cnt << " mal eingegeben.\n";
    P.S.
    Sorry wenns das gleiche ist wie bei dir, aber ich habe jetzt echt keine Lust deinen Code zu analysieren.
     

Ähnliche Themen

  1. Antworten: 21
    Letzter Beitrag: 01.09.07, 22:06
  2. Antworten: 2
    Letzter Beitrag: 08.07.07, 16:46
  3. Habe Problem mit meiner Toolbar wer kann helfen?
    Von Kila im Forum Internetkommunikation
    Antworten: 0
    Letzter Beitrag: 04.07.04, 14:26
  4. Knifflige Mathe Aufgabe bitte helft mir
    Von danielmueller im Forum Smalltalk
    Antworten: 10
    Letzter Beitrag: 28.05.04, 16:38
  5. Wer kann mir bei HiJack helfen? Habe hartnäckige Startseite beim IE!
    Von Bumblebee im Forum Security (Viren, Trojaner, Spam)
    Antworten: 4
    Letzter Beitrag: 27.04.04, 00:47