ubuntuusers.de

Zahlen in einem Array zusammenzählen C++

Status: Ungelöst | Ubuntu-Version: Ubuntu 7.04 (Feisty Fawn)
Antworten |

obob

Anmeldungsdatum:
5. November 2006

Beiträge: 217

Wohnort: Borkum (Germany)

Hallo,

ich habe eine Frage. Und zwar, schreibe ich gerade ein Programm, welches Zahlen,die vom User eingegeben werden, in ein Array einliest und am Ende wieder ausgibt. Nun möchte ich, dass mir das Programm die Summe dieser Zahlen ausgibt. Ausgeben macht man dieses ja mittels einer for() Schleife. Wie aber werden diese Zahlen zusammengezählt ? Ich habe schon in diveren Foren bzw. Suchmaschinen gesucht, aber keine poduktive Lösung gefunden.

Danke schonmal

obob

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4695

Wohnort: Berlin

Du brauchst eine Variable in der Du die Summe berechnest und dann eine Schleife über das Array wo jedes Element auf diese Summe addiert wird. In der Hoffnung hier keine supereinfache Hausaufgabe zu lösen, ein Beispiel in FreeBASIC:

Function SumArray(array() As Integer) As Integer
    Dim i As Integer, result As Integer
    
    For i = LBound(array) To UBound(array)
        result = result + array(i)
    Next i
    
    Return result
End Function

Dim a(1 To 10) As Integer

a(1) = 42
a(2) = 23

Print SumArray(a())

syscon-hh

Anmeldungsdatum:
8. Oktober 2005

Beiträge: 10220

probier mal: (als bash Beitrag)

SUMME=0; ZAEHLER=0;
while [ true ]; do
SUMME=$[${SUMME}+${BETRAG[${ZAEHLER}]}];
ZAEHLER=$[${ZAEHLER}+1];
[ ! ${BETRAG[${ZAEHLER}]} ] && break;
done
echo ${SUMME};

exit;

wobei 'BETRAG[${ZAEHLER}]' der Einzelwert aus dem Array ist (also Array-Bezeichnungen übernehmen. Wenn Du ohnehin einen Zähler eingebaut hast, dann kannst Du diesen auch einsetzen und damit gezielter den Schluss der Schleife bestimmen.

gruß syscon-hh

obob

(Themenstarter)

Anmeldungsdatum:
5. November 2006

Beiträge: 217

Wohnort: Borkum (Germany)

also es ist keine Hausaufgabe 😉 Also leider habe ich den Quellcode vom Programm woanders auf dem Pc. Also ich muss eine Variable bilden:

int summe; //

und dann eine schleife ?

da haperts bei mir. Bin nicht so ganz fit was arrays in c++ angeht. also das array im programm heist aus[400].

also for(i<0;i++ ) //dritte anweisung vergessen....
{
summe = aus[400]+aus[400]++ // ???
}

hab das glaube ich nicht so ganz gerallt

stroh

Anmeldungsdatum:
7. August 2006

Beiträge: 1

ich hätte hier noch ne lösung in perl :

my @array = (345,76, 2, 4, 67, 3, 74); 
my $result = 0; 
foreach my $number (@array) 
{ $result += $number };
print "summe aller elemente: $result\n";


ich finde es eigentlich recht trivial.
viel erfolg!

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4695

Wohnort: Berlin

@obob: Dann solltest Du Dir ein Buch oder Tutorial suchen wo Du so grundlegende Syntax und Semantik wie for-Schleifen und Arrays nachlesen kannst. Bis jetzt bist Du noch nicht einmal bei C++ angelangt, das was Du da machen willst ist noch mit der C "Untermenge" zu schaffen. Eine C++-Lösung würde eher einen Container aus der Standard Template Library (STL) verwenden statt ein Array mit fester Grösse.

Und noch eine Python-Lösung:

aus = [42, 23, 4711]
print 'Summe', sum(aus)

gbauer81

Anmeldungsdatum:
30. November 2006

Beiträge: 633

Wohnort: Landau / Pfalz

C++ ist zwar schon eine weile her, aber ich versuch es mal...

int nsum = 0;

for(int i=0; i < (sizeof(myarray)/sizeof(int); i++)
{
  nsum += myarray[i];
} 

obob

(Themenstarter)

Anmeldungsdatum:
5. November 2006

Beiträge: 217

Wohnort: Borkum (Germany)

also ich habe ja ein buch zur verfügung. da ich aber nicht weitergekommen bin, habe ich die community gefragt 😉 Aber sobald ich wieder an meinen rechner kann, werde ich das alles mal ausprobieren. Danke schonmal für eure hilfe 😉

hackepeter

Avatar von hackepeter

Anmeldungsdatum:
8. Januar 2006

Beiträge: 185

Wohnort: München

Erst mal: für C++ gleich mal an die Standard Template Library gewöhnen und statt arrays z.B. einen vector verwenden. Dann kannst du das ganz einfach machen, mit der Funktion accumulate().
Beispiel hier: http://www.java2s.com/Code/Cpp/STL-Algorithms-Helper/Calculatesumofelementsinavector.htm

Gruß HP

khalderon

Anmeldungsdatum:
28. Januar 2006

Beiträge: 295

In C++ Ausgabe der Elementen von Typ 'Typ' des Containers 'v' kann man so machen:

std::copy(v.begin(), v.end(), std::ostream_iterator<Typ>(std::cout, " "));
Antworten |