Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Unendlich viele Zahlen eingeben und Mittelwer ausgeben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
22.11.2005, 16:34 Uhr
~Milo
Gast


Hallo liebe Forummitglieder

Ich stehe hinter einem Problem das ich nicht Lösen kann

Ich würde gerne ein Programm schreiben mit dem man unendlich viele Zahlen einlesen kann und dann den Mittelwert ausgeben kann.

Leider komm ich einfach nicht drauf wie man auf die Lösung des Problems kommen kann.

Ich habe mir zuerst überlegt ob man mit string compare gehen würde, aber wie ich damit undendlich viele zahlen vergleichen kann weiß ich nicht.

Danke schon im Vorraus für die Hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.11.2005, 17:55 Uhr
~iBOT
Gast


Wie soll denn deine Eingabe aussehen? Mit konsole? Wenn ja mach dir ein vector und füge die eingegebene Zahl immer hinten an, dann past du den Vector durch addierst dabei alle Zahlen und teilst sie durch die Anzahl! Schon haste den mittelwert!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.11.2005, 18:13 Uhr
~Milo
Gast


ja, mit konsole
was ist ein vektor?
also was ein vektor ist weiß ich schon, aber was ein vektor in c ist weiß ich nicht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.11.2005, 18:26 Uhr
Gap



Ein Vector ist ein dynamisches Array, d.h. man kann es wärend der Laufzeit vergrößern/verkleinern.

Hier ein kleines Beispiel:


C++:
# include <vector> // Wichtig: kein .h

int main()
{
std::vector<int> vec; /* in den spitzen Klammern ( <> ) wird der Typ des Vectors angegeben */
vec.resize( 3 ); // Größe festlegen

vec[0] = 1;
vec[1] = 2;
vec[2] = 3;
}


Dieser Post wurde am 22.11.2005 um 18:27 Uhr von Gap editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.11.2005, 19:57 Uhr
~Milo
Gast



Code:
#include<stdio.h>
#include<conio.h>

void main()
{
    int eingabe, anzahl, mittelwert;
    FILE*pf;
    pf=fopen("D:\\test.txt","w");


    printf("\n\t\tWilkommen\n");
    printf("Mit diesem Programm berechnen Sie den Mittelwert!!\n");
    do
    {
    printf("\nBitte geben beliebig viele Werte ein, ende der eingabe mit 0!!\n");
    scanf("%d",&eingabe);
    fprintf(pf,"%d",eingabe);
    anzahl++;
    }while(eingabe!=NULL);
    fclose(pf);


    pf=fopen("D:\\test.txt","r");
    int x,r;

    do
    {
    r=fscanf(pf,"%d",&x);
    }while(r!=EOF);

    mittelwert=x/anzahl;
    printf("%d\n",x);
    printf("%d",mittelwert);
    fclose(pf);

}



kann mir jemand mal sagen was hier falsch sein soll, denn ich komm absolut nicht weiter.
und die überlegung mit den vektoren sind mir im moment zu kompliziert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.11.2005, 21:14 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Obgleich das mit dem vector relativ einfach ist, ist die Speicherärmere Lösung die einfach die werte von Anfang an aufzuaddieren, so wie du es probierst. Wenn nur der Mittelwert eine Rolle spielt brauchst du dir die eingebenen Zahlen natürlich nicht zu merken (zwischen zu speichern) sondern brauchst einfach nur immer draufsummieren (mal angenommen du bekommst keinen overflow...) Du brauchst also einfach nur zwei variablen. Eine für die Anzahl der eingebenen Werte und eine die sich die Summe merkt. Beider initialisierst du mit 0 und für jede eingebene Zahl erhöhst du die Anzahl um 1 und addierst auf die Summe den neuen Wert drauf...

Also abbruchkriterium könntest du der Einfachheit z.B. nehmen wenn jemand etwas anders als eine zahl eingibt..
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.11.2005, 21:28 Uhr
(un)wissender
Niveauwart


Machs do:


C++:
#include <iostream>
#include <numeric>
#include <sstream>
#include <string>
#include <vector>

int main()
{
    std::vector<int> numbers;
    std::string buffer;
    while(std::getline(std::cin, buffer))
    {
        if(!buffer.size()) break;
        std::stringstream formatter(buffer);
        int value;
        formatter >> value;
        numbers.push_back(value);
    }
    
    std::cout
        << "Elements: "
        << numbers.size()
        << ", average: "  
        << (numbers.size() ?
            std::accumulate(numbers.begin(), numbers.end(), 0) / numbers.size()
            : 0);
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.11.2005, 23:59 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@(un)wissender...
der code oben sieht nicht so aus als ob er c++ verwenden möchte/soll/will...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.11.2005, 08:28 Uhr
(un)wissender
Niveauwart


Oh ja.
C ist mir zu frickelig, da brauche ich schon Geld für.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
23.11.2005, 19:17 Uhr
0xdeadbeef
Gott
(Operator)


Bisschen einfache Mathematik, Jungs.

C++:
#include <stdio.h>

int main(void) {
  double mwert;
  int n, zahl;

  printf("Zahlen eingeben: ");
  fflush(stdout);

  scanf("%d", &zahl);
  for(n = 1, mwert = 0.0; zahl != 0; ++n) {
    mwert += (zahl - mwert) / n;
    scanf("%d", &zahl);
  }

  printf("Mittelwert: %lf\n", mwert);

  return 0;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: