1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Zufällige Fliesskommazahlen

Dieses Thema im Forum "Borland CBuilder und VCL" wurde erstellt von Icarus77, 2. September 2010.

  1. Icarus77

    Icarus77 Gast

    Hallo zusammen,

    ich lerne zur Zeit das Programmieren mit c und stehe nun vor einem Problem. ich arbeite mit dem Borland Builder 6.

    Ich möchte mit dem Befehl random zufällige Fliesskommazahlen in einen Array einlesen. Doch leider bringt er mir immer nur zufällige Zahlen vor dem Komma, also zufällige Ganzzahlen.

    Kann mir vielleicht jemand einen Tipp geben, wie ich das Problem lösen kann?

    Programm:
    Code (Text):
    1. #define ANZAHL 10
    2.  
    3. int main()
    4. {
    5. int  i, e;
    6. randomize();
    7. double vektor[ANZAHL];
    8.  
    9. for (i=0;i<ANZAHL;i++)
    10.                 {
    11.                 vektor[i]=0;
    12.                 }
    13.  
    14. printf("Wieviele Vektoren sollen eingetragen werden? (max. 10) ");
    15. scanf("%d", &e);
    16.  
    17.                 for (i=0;i<e;i++)
    18.                 {
    19.                 vektor[i]=random(100);
    20.                 }
    21.  
    22.                 printf("\nVector wurde mit Zufallszahlen gefüllt!\n");
    23.  
    24. for (i=0;i<ANZAHL;i++)
    25.                 {
    26.                 printf("Vektor[%d]: %lf\n", i, vektor[i]);
    27.                 }
    28.  
    29. getch();
    30. return 0;
    31. }
     
  2. deepthroat

    deepthroat Erfahrenes Mitglied

  3. Icarus77

    Icarus77 Gast

    Dann müsste es theoretisch mit folgendem Befehl funktionieren:
    Code (Text):
    1. for (i=0;i<e;i++)
    2.                 {
    3.                 vektor[i]=((random(100)+1)/(random(100)+1));
    4.                 }
    Das Problem ist, das i als Ganzzahl deklariert ist. Wenn ich i aber als Double deklariere dann funktioniert
    die Schleife nicht mehr.

    Dann erscheint folgende Fehlermeldung:
    Code (Text):
    1. [C++ Fehler] Unit1.cpp(21): E2060 Unzulässige Verwendung einer Fließkommazahl
    Oder habe ich irgendeinen Denkfehler?
    Mach das noch nicht sehr lange..
     
  4. deepthroat

    deepthroat Erfahrenes Mitglied

    Nein. Erstens liefert random eine ganze Zahl (du müßtest also erstmal casten) und außerdem schränkst du den Wertebereich auch extrem ein.

    Verwende einfach direkt die Standard-C-Funktionen srand() und rand() wie im Link.

    Beachte aber die angesprochene Problematik das diese Random-Funktionen lediglich 15 Bit Randomzahlen generieren und ein double aus 64 Bit besteht.
    Die Variable i muß als Ganzzahl definiert werden.

    Gruß

    PS: Bitte verwende die Code-Tags!