www.vorkurse.de
Ein Projekt von vorhilfe.de
Die Online-Kurse der Vorhilfe

E-Learning leicht gemacht.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Teams · Forum · Wissen · Kurse · Impressum
Forenbaum
^ Forenbaum
Status Mathe-Vorkurse
  Status Organisatorisches
  Status Schule
    Status Wiederholung Algebra
    Status Einführung Analysis
    Status Einführung Analytisc
    Status VK 21: Mathematik 6.
    Status VK 37: Kurvendiskussionen
    Status VK Abivorbereitungen
  Status Universität
    Status Lerngruppe LinAlg
    Status VK 13 Analysis I FH
    Status Algebra 2006
    Status VK 22: Algebra 2007
    Status GruMiHH 06
    Status VK 58: Algebra 1
    Status VK 59: Lineare Algebra
    Status VK 60: Analysis
    Status Wahrscheinlichkeitst

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "C/C++" - Arrays
Arrays < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Arrays: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 15:33 Di 05.01.2010
Autor: az118

Aufgabe
Schreiben Sie C-Funktionen zur Berechnung

a.) des größten Wertes max(x1,...,xn)

eines Eingabearrays aus Integern x1,...,xn, deren Betrag jeweils kleiner als [mm] 10^{9} [/mm] ist.

Hallo,habe das mal versucht, aber die Ausgabe ist falsch.
Nur wo liegt der Fehler?

#include <stdio.h>

int max(int array[],int laenge){
int i,max=1000000000;

for(i=0;i<laenge;i++){
if (array[i]>max)
max=array[i];
}
return max;
}

int main(){
int array[5]={3,2,2,1,4};

printf("Der groesste Wert lautet: %i",max(array,5));

[mm] while(getchar()!='\n'); [/mm]
}

        
Bezug
Arrays: Antwort
Status: (Antwort) fertig Status 
Datum: 15:41 Di 05.01.2010
Autor: fencheltee


> Schreiben Sie C-Funktionen zur Berechnung
>
> a.) des größten Wertes max(x1,...,xn)
>  
> eines Eingabearrays aus Integern x1,...,xn, deren Betrag
> jeweils kleiner als [mm]10^{9}[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

ist.

>  Hallo,habe das mal versucht, aber die Ausgabe ist falsch.
>  Nur wo liegt der Fehler?
>  
> #include <stdio.h>
>  
> int max(int array[],int laenge){
>   int i,max=1000000000;

du setzt hier max auf 10^9

>  
> for(i=0;i<laenge;i++){
>   if (array>max)

hier schaust du, ob die zahl im array größer als max ist, was alle 100% nicht sein werden

> max=array;
> }
> return max;
> }
>
> int main(){
> int array[5]={3,2,2,1,4};
>
> printf("Der groesste Wert lautet: %i",max(array,5));
>
> [mm] while(getchar()!='\n');[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)


> }

du könntest max auf 0 setzen (wenn keine negativen zahlen vorkommen), ansonsten versteh ich den hinweis auf die 10^9 zahlen nicht. gibts da noch mehr infos?

gruß tee

Bezug
                
Bezug
Arrays: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 15:45 Di 05.01.2010
Autor: az118

Nein, mehr Infos gibt es zu der Aufgabe leider nicht. Versteh das mit der [mm] 10^9 [/mm] auch nicht so.

Ok,die Ausgabe stimmt wenn ich max=0 setze,aber die [mm] 10^9 [/mm] muss ich sicher irgendwo unterbringen?

Bezug
                        
Bezug
Arrays: Antwort
Status: (Antwort) fertig Status 
Datum: 16:14 Di 05.01.2010
Autor: fencheltee


> Nein, mehr Infos gibt es zu der Aufgabe leider nicht.
> Versteh das mit der [mm]10^9[/mm] auch nicht so.
>  
> Ok,die Ausgabe stimmt wenn ich max=0 setze,aber die [mm]10^9[/mm]
> muss ich sicher irgendwo unterbringen?

is mir grad aufgefallen.. es heisst ja der betrag sei kleiner als [mm] 10^9 [/mm] sei... also nimmst du als maximum [mm] -10^9 [/mm] und fertig ;-)

gruß tee

Bezug
                                
Bezug
Arrays: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 16:15 Di 05.01.2010
Autor: az118

Super danke.

Bezug
        
Bezug
Arrays: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 16:19 Di 05.01.2010
Autor: az118

Aufgabe
Schreiben Sie C-Funktionen zur Berechnung

b.) der mittleren Abweichung e=((x1-x)+...+(xn-x))/n

eines Eingabearrays aus Integern x1,...,xn, deren Betrag jeweils kleiner als [mm] 10^9 [/mm] ist.

Habe noch die Aufgabe b versucht, weiß da allerdings gar kein Anfang.
Könnte mir da jemand helfen?

Bezug
                
Bezug
Arrays: Antwort
Status: (Antwort) fertig Status 
Datum: 16:31 Di 05.01.2010
Autor: fencheltee


> Schreiben Sie C-Funktionen zur Berechnung
>
> b.) der mittleren Abweichung e=((x1-x)+...+(xn-x))/n

kann es sein dass hier betragsstriche in der aufgabe angegeben sind?

>  
> eines Eingabearrays aus Integern x1,...,xn, deren Betrag
> jeweils kleiner als [mm]10^9[/mm] ist.
>  Habe noch die Aufgabe b versucht, weiß da allerdings gar
> kein Anfang.
>  Könnte mir da jemand helfen?

kannst du denn mit worten beschreiben was da passiert?

gruß tee

Bezug
                        
Bezug
Arrays: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 16:43 Di 05.01.2010
Autor: az118

Ja das sollten Betragsstriche sein.
Also x wäre der Mittelwert der Zahlen.Und ich soll nun den Mittelwert von jeder einzelnen Zahl subtrahieren,dann alles aufsummieren und durch die Anzahl der angegebenen Zahlen dividieren?

Bezug
                                
Bezug
Arrays: Antwort
Status: (Antwort) fertig Status 
Datum: 16:46 Di 05.01.2010
Autor: fencheltee


> Ja das sollten Betragsstriche sein.
>  Also x wäre der Mittelwert der Zahlen.Und ich soll nun
> den Mittelwert von jeder einzelnen Zahl subtrahieren,dann
> alles aufsummieren und durch die Anzahl der angegebenen
> Zahlen dividieren?

ja im ersten durchgang den mittelwert bilden aus den elementen des array (forschleife, aufsummieren, teilen durch anzahl der elemente)
in der nächsten forschleife dann den mittelwert von den einzelnen elementen abziehen (betrag nicht vergessen. siehe abs(..) mit ner math.h include), alles aufsummieren und wieder durch die anzahl der elemente teilen

so dann mal ran ans coden

gruß tee

Bezug
                                        
Bezug
Arrays: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 17:33 Di 05.01.2010
Autor: az118

Ok,habe jetzt nur mal ein Programm zur Berechnung des Mittelwertes geschrieben,um zu testen,ob es soweit stimmt. Allerdings muss da wieder ein Fehler sein,da die Ausgabe nicht stimmt?

#include <stdio.h>
#include <math.h>

double average(int array[], int laenge){
int i,sum=0;
double l=laenge;

for(i=0;i<laenge;i++){
sum+=array[i];
}
return sum/l;
}

int main(){
int array[5]={2,3,1,4,2};

printf("Der Mittelwert lautet: %i",average(array,5));

while(getchar()!=' \ n ');
}

Bezug
                                                
Bezug
Arrays: Antwort
Status: (Antwort) fertig Status 
Datum: 17:39 Di 05.01.2010
Autor: fencheltee

du hast nur nen winzigen fehler.. der mittelwert wird in einer double gespeichert, im printf versuchst du jedoch den double als integer auszugeben:
...%i muss zu %f werden
dann klappt das programm auch wunderbar

gruß tee

Bezug
                                                        
Bezug
Arrays: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 18:10 Di 05.01.2010
Autor: az118

Ja klar,klappt jetzt.
Ok,die nächste forschleife hätte ich jetzt so geschrieben:

for(i=0;i<laenge;i++){
e=abs(array[i]-sum/l);
sumend+=e;
}
return sumend/l;             ???

Bezug
                                                                
Bezug
Arrays: Antwort
Status: (Antwort) fertig Status 
Datum: 18:14 Di 05.01.2010
Autor: fencheltee


> Ja klar,klappt jetzt.
>  Ok,die nächste forschleife hätte ich jetzt so
> geschrieben:
>  
> for(i=0;i<laenge;i++){
>   e=abs(array-sum/l);
> sumend+=e;
> }
> return sumend/l;             ???

wenn sum die summe der einzelelemente ist und l die anzahl der elemente siehts richtig aus

gruß tee

Bezug
                                                                        
Bezug
Arrays: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 18:21 Di 05.01.2010
Autor: az118

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

Und wie verknüpfe ich die beiden forschleifen?wenn ich die einfach untereinander schreibe,wird nur die erste schleife berechnet.

#include <stdio.h>
#include <math.h>

double average(int array[], int laenge){
int i,sum=0;
double l=laenge;
double e,sumend=0;

for(i=0;i<laenge;i++){
sum+=array[i];
}
return sum/l;
}

for(i=0;i<laenge;i++){
e=abs(array[i]-sum/l);
sumend+=e;
}
return sumend/l;
}

int main(){
int array[5]={2,3,1,4,2};

printf("Der Mittelwert lautet: %f",average(array,5));

while(getchar()!='\n');
}

Bezug
                                                                                
Bezug
Arrays: Antwort
Status: (Antwort) fertig Status 
Datum: 18:51 Di 05.01.2010
Autor: fencheltee

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

#include <stdio.h>
#include <math.h>
double average(int array[], int laenge){
int i;
double sum=0;
double l=laenge;
double e,sumend=0;

for(i=0;i<laenge;i++){
sum+=array[i];
}
//return sum/l;
//} die 2 zeilen sind rauszunehmen, die return sonst sofort ausgegeben wird, du willst aber ja noch mit der sum weiterrechnen
printf("summe gesamt:%f, elemente: %f\n",sum,l);
for(i=0;i<laenge;i++){
e=abs(array[i]-(sum/l));
printf("e: %f= %d - %f\n",e,array[i],sum/l);
sumend+=e;
}
return sumend/l;
}

int main(){
int array[7]={4,5,6,7,5,4,3};

printf("\nDer Mittelwert lautet: %f",average(array,7));

while(getchar()!='\n');
}

hab oben 2 zeilen reinkommentiert

gruß tee

ps. erstaunlich dass mit dem gleichen code bei 2 verschiedenen compilern was unterschiedliches rauskommt

Bezug
                                                                                        
Bezug
Arrays: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:59 Di 05.01.2010
Autor: az118

Ok,danke.
hab das jetzt mit nen paar werten probiert,klappt alles.

Bezug
                                                                                        
Bezug
Arrays: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 19:01 Di 05.01.2010
Autor: az118

Achso,mir fällt gerade auf,dass ich die [mm] 10^9 [/mm] gar nicht benutzt habe?

Bezug
                                                                                                
Bezug
Arrays: Antwort (nicht fertig)
Status: (Antwort) noch nicht fertig Status 
Datum: 19:23 Di 05.01.2010
Autor: fencheltee


> Achso,mir fällt gerade auf,dass ich die [mm]10^9[/mm] gar nicht
> benutzt habe?

war das für die gesamte überschrift oder stand das bei jeder teilaufgabe nochmal explizit dran?
ansonsten ist das vielleicht noch von "früher" auf 16 bit rechnern, wo ein int nur 2^16 zu stände hatte und man daher den datentyp long nutzen musste?! oder wurde evtl noch was anderes übersehen?

gruß tee

Bezug
                                                                                                        
Bezug
Arrays: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 20:02 Di 05.01.2010
Autor: az118

Ja das stand über beide Aufgaben,also a und b.
Also muss ich das noch irgendwie in die aufgabe einbauen?

Bezug
                                                                                                                
Bezug
Arrays: Antwort
Status: (Antwort) fertig Status 
Datum: 20:10 Di 05.01.2010
Autor: fencheltee


> Ja das stand über beide Aufgaben,also a und b.
>  Also muss ich das noch irgendwie in die aufgabe einbauen?

sinnvoll ist die verwendung nur beim maximum, also teil a.
evtl sinnvoll ist es noch falls du es auf ner alten kiste benutzt die nen int mit 16 bit anlegt, statt 32, dann würdest du nur zahlen von -32767 .. 32767 darstellen können statt -2147483647 .. 2147483647. aber auf den heutigen 32 bit rechnen ist int32 glaube standard? von daher..

gruß tee


Bezug
                                                                                                                        
Bezug
Arrays: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 20:16 Di 05.01.2010
Autor: az118

Gut,dann werde ich da auch nichts mehr verändern.
Danke

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorkurse.de
[ Startseite | Mitglieder | Teams | Forum | Wissen | Kurse | Impressum ]