Partialsumme eines Arrays < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 19:57 Di 05.01.2010 | Autor: | az118 |
Aufgabe | Schreiben Sie eine C-Funktion zur Berechnung der Partialsummen eines Arrays,
d.h., die Funktion soll in jeden Eintrag des Arrays die Summe aller Zahlen bis zu dieser Stelle abspeichern.
Beispiel: Die Funktion soll das Array (4; 2; 17; 11; 3) mit den Werten (4; 6; 23; 34; 37) füllen.
b) Erweitern Sie die Funktion, so dass für gegebene a, b die Summe der Einträge von Stelle a bis Stelle b berechnet und zurückgegeben wird. Verwenden Sie für diese Funktionalität die Partialsummen aus der vorherigen Aufgabe.
Beispiel: Wenn a = 1 und b = 3 ist, soll zu obigem Array die Zahl 2 + 17 + 11 = 30 zurückgegeben werden. Beachten Sie, dass sich dieses Ergebnis auch aus der Partialsummendierenz von b und a-1 ableiten lässt, d.h., 34-4 = 30. |
Hallo,habe noch eine Aufgabe mit der ich Probleme habe?
Ich versuche mich erstmal an Aufgabe a.
Meine Idee war (so im Ansatz)
#include <stdio.h>
int part(int array[],int laenge){
int i;
for(i=0;i<laenge;i++){
array[i]=array[i]+array[i+1];
}
return array[i];
}
int main(){
int array[18]={4,2,17,11,3};
printf("Die Partialsumme lautet: %i",part(array,18));
[mm] while(getchar()!='\n');
[/mm]
}
|
|
|
|
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
> Schreiben Sie eine C-Funktion zur Berechnung der
> Partialsummen eines Arrays,
> d.h., die Funktion soll in jeden Eintrag des Arrays die
> Summe aller Zahlen bis zu dieser Stelle abspeichern.
>
> Beispiel: Die Funktion soll das Array (4; 2; 17; 11; 3) mit
> den Werten (4; 6; 23; 34; 37) füllen.
>
> b) Erweitern Sie die Funktion, so dass für gegebene a, b
> die Summe der Einträge von Stelle a bis Stelle b berechnet
> und zurückgegeben wird. Verwenden Sie für diese
> Funktionalität die Partialsummen aus der vorherigen
> Aufgabe.
>
> Beispiel: Wenn a = 1 und b = 3 ist, soll zu obigem Array
> die Zahl 2 + 17 + 11 = 30 zurückgegeben werden. Beachten
> Sie, dass sich dieses Ergebnis auch aus der
> Partialsummendierenz von b und a-1 ableiten lässt, d.h.,
> 34-4 = 30.
> Hallo,habe noch eine Aufgabe mit der ich Probleme habe?
> Ich versuche mich erstmal an Aufgabe a.
> Meine Idee war (so im Ansatz)
>
> #include <stdio.h>
>
> int part(int array[],int laenge){
> int i;
>
> for(i=0;i<laenge;i++){
> array=array+array[i+1];
> }
> return array;
> }
>
> int main(){
> int array[18]={4,2,17,11,3};
>
> printf("Die Partialsumme lautet: %i",part(array,18));
>
> [mm] while(getchar()!='\n');[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
>
> }
du hast unten als übergabe wert die 18, gibts aber nur 5 werte weiter.. ist wohl vom testen noch als fehler dringeblieben
ansonsten korrigiert:
#include <stdio.h>
int part(int array[],int laenge){
int i;
for(i=1;i<laenge;i++){
bei 1 anfangen, da das erste element unverändert bleibt
array[i]=array[i]+array[i-1];
hier wird beim 2. element das 1. hinzuaddiert usw.
}
return array[laenge-1];
rückgabe des letzten elements
}
int main(){
int array[5]={4,2,17,11,3};
printf("Die Partialsumme lautet: %i",part(array,5));
getch();
}
gruß tee
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:22 Di 05.01.2010 | Autor: | az118 |
Wie kann ich in aufgabe b das array an der stelle a oder b bestimmen?
einfach array[a] ??
|
|
|
|
|
> Wie kann ich in aufgabe b das array an der stelle a oder b
> bestimmen?
> einfach array[a] ??
da im teil a eigentlich kein returnwert gefordert war, würde ich die funktion part erweitern, dass du sie mit part(array,anzahl elemente,start,ende) aufrufst, wobei start dein a-wert und ende dein b-wert sein soll...
als returnwert machst du dann die in der aufgabe besprochene differenz
gruß tee
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:52 Di 05.01.2010 | Autor: | az118 |
Ok,habe es jetzt so gemacht:
#include <stdio.h>
int part(int array[],int laenge,int start,int ende){
int i;
int a=1;
int b=3;
for(i=1;i<laenge;i++){
array[i]=array[i]+array[i-1];
}
return array[ende]-array[start-1];
}
int main(){
int array[5]={4,2,17,11,3};
printf("Die Partialsumme lautet: %i",part(array,5,1,3));
while(getchar()!=' \ n ');
}
|
|
|
|
|
> Ok,habe es jetzt so gemacht:
>
> #include <stdio.h>
>
> int part(int array[],int laenge,int start,int ende){
> int i;
> int a=1;
> int b=3;
a und b haben in der funktion selbst nix mehr zu suchen
>
> for(i=1;i<laenge;i++){
> array=array+array[i-1];
>
> }
> return array[ende]-array[start-1];
>
> }
>
> int main(){
> int array[5]={4,2,17,11,3};
>
> printf("Die Partialsumme lautet: %i",part(array,5,1,3));
1 steht ja symbolisch für a, und 3 für b
>
> while(getchar()!=' \ n ');
>
>
> }
ansonsten schauts gut aus
gruß tee
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:02 Di 05.01.2010 | Autor: | az118 |
Achso,ok.
Danke für die ganze Hilfe
|
|
|
|