Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » array

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 ] [ 3 ]
000
14.01.2005, 13:07 Uhr
~gast
Gast


hallo
kann mir jemand sagen wo hier der fehler ist
es kommt immer ein falscher wert raus


C++:
#include <stdio.h>
#include <stdlib.h>

#define MAX 5

void groesster(long *array, long max);

int main()
{
  long zahl[MAX];
  long x;
  
  printf("geben sie %ld werte ein:\n\n",MAX);
  
  for (x=0; x<MAX; x++)
  {
      printf("geben sie den %ld. wert ein:  ",x+1);
      scanf("%ld", zahl);
      printf("\n");
  }
  
  groesster(zahl, MAX);
  
  printf("\n\n");
  
  system("PAUSE");    
  return 0;
}

void groesster(long *array, long max)
{
     long x, wert;
     for(x=0; x<max; x++)
     {
              if(array[x]> wert)
              wert= array[x];
     }
     printf("der groesste wert ist %ld", wert);
}




Bearbeitung von Pablo:


BENUTZE DIE CPP TAGS SELBER!!!!!!!!!!!!!!!!


Dieser Post wurde am 14.01.2005 um 17:22 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.01.2005, 13:34 Uhr
Th



Du mußt in der Funktion "groesster" die Variable "wert" initialisieren:
also

C++:
void groesster(long *array, long max)
{
  long x, wert = MININT;
  for(x=0; x<max; x++)
  {
    if(array[x]> wert)
    wert= array[x];
  }
  printf("der groesste wert ist %ld", wert);
}



Falls im Array nur positive Zahlen enthalten sind, kannst du auch "wert = 0" benutzen.
"MININT" ist übrigens die kleinste Zahl, die ein int enthalten kann ("MINLONG" gibt es glaube ich nicht).

Mit C++ könntest du auch "numeric_limit<long>::min" benutzen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.01.2005, 13:47 Uhr
~gast
Gast


wieso meinst du dass ich wert initialisieren muß. was spielt das für eine rolle.
es kommt wieder der falsche wert raus.
ich denke dass es was mit den zeigern und dem feld zu tun hat.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.01.2005, 13:52 Uhr
Tommix



Hallo,
es muß (außer dem bisher geposteten) bei der Eingabe

C++:
scanf("%ld", &zahl[x]);


heißen.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.01.2005, 14:02 Uhr
~gast
Gast


tommix danke es stimmt jetzt.
kannst du mir vielelicht sagen wieso das & so wichtig ist beim scanf
und wieso wird der stern benötigt beim *array
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.01.2005, 14:04 Uhr
~gast
Gast


bzw.
wenn ich felder habe und funktionen wann übergibt es die adresse der funktion und wann den inhalt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
14.01.2005, 14:20 Uhr
Tommix



Immer dann, wenn die übergebene Variable verändert werden soll, mußt Du es über einen Zeiger machen. scanf z.B. erwartet die Adresse einer Variablen, dort wird der eingelesene Wert gespeichert. Ansonsten bekommt die Funktion eine Kopie der Originalvariable, wenn da was geändert wird, hat das nach außen keinen Effekt.
Möglicherweise kann das ein anderer besser erklären, ich bin im Moment ein bisschen gestresst (außerdem hab ichs selbst kaum verstanden ).

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
14.01.2005, 15:01 Uhr
Th



Du mußt "wert" initialisieren, da du ihn ja in der Schleife mit den einzelnen Werten vergleichst. Ansonsten hat diese lokale Variable einen zufälligen Wert, z.B. 42145. Wenn deine Array-Einträge nun alle kleiner sind als dieser Wert, so wird dieser Anfangswert ausgegeben.

Alternativ: "wert" auf den ersten Array-Eintrag setzen, also

C++:
long groesster(long *array, long max)
{
  long x, wert = array[0];
  for(x=1; x<max; x++)
  {
    if(array[x] > wert)
      wert = array[x];
  }
  return wert;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
14.01.2005, 20:34 Uhr
~gast
Gast


kann mir vielleicht jemand kurz sagen was die vorteile von einem zeiger sind.
denn nur mit einer variablen habe ich ja auch zugriff auf den inhalt. wieso werden dann zeiger benutzt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
14.01.2005, 21:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


lies mal hier den letzten beitrag und frag dann nochmal falls du es immer noch nicht verstehst..

www.fun-soft.de/showtopic.php?threadid=9625
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ 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: