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
Ehemalige
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
Ehemalige
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
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, " "));
|