Textdatei schreiben



  • Habe ein Programm geschrieben bei dem ich ein Array,das
    zufällige Werte aus einem bestimmten Bereich enthält.
    Für jeden Durchlauf (insgesamt 3 Durchläufe) möchte ich:
    - ein Array mit drei Elementen zufällig generieren
    - die Elemente des Arrays aufsummieren und in einem Zahl S speichern
    -Zum Schluß möchte ich in einer Textdatei die Durchlaufnummer
    und die resultierende Summe S schreiben wie z.B.
    j=0 S=x
    j=1 S=x
    j=2 S=x
    Das Problem ist,dass die zufälligen Zahlen in jedem
    Durchlauf immer gleich bleiben obwohl es nicht der Fall
    sein soll und ich weiss nicht genau
    wie ich die Durchlaufnummer und die Zahl S in einer
    Textdatei schreiben kann.
    Hätte Jemand vielleicht eine Idee?
    Mein Code sieht folgendermassen aus:

    #include <stdlib.h>
    #include <time.h>
    #include <iostream>
    
    using namespace std;
    
    // Die Funktion RandomNum generiert zufällige Zahlen
    // im Bereich zwischen gross und klein
    
    	void RandomNum(double klein,double gross ,int p, double *array)   
    {                                           
        srand((unsigned)time(0));                   
        double range=(gross-klein)+1;  
    	for (int i=0; i<p; i++){
    	    array[i]=klein+int(range*rand()/(RAND_MAX + 1.0)); 
    	}
    }
    //die Funktion AdditionArr summiert die Elemente des Arrays
    // und speichert sie in einer Zahl Sum
    double AdditionArr (double *Arr,int k)  
    {
          int i; 
          double Sum=0.0;
    	  for (i=0; i<k; i++){
    	     Sum+=Arr[i];
    	    }
      return Sum;      
    }
    int main()
    	{
         int  p=3;
         int j;		
        double S,array[3];
         for(j=0;j<3;j++){
            RandomNum(-1.5,1.5 ,p,&array[0]);
    	S=AdditionArr (&array[0],p);
    	for (int k=0; k<p; k++){
    	cout << "array"<<"["<< k << "]" <<" = " << array[k] << endl;
    
    	   	  }
    		cout << "S=" << S << endl;
    		cout << endl;
    		}
    
            return 0;
    
    	}
    


  • Hallo,

    Nimm

    srand((unsigned)time(0));
    

    aus deiner Funktion raus und rufe srand einmal am Anfang der main auf. srand initiualisiert den Zufallsgenerator mit einer Anfangsnummer. Das musst du aber nur einmal machen.



  • es hat gepklappt!! danke 😉
    hätte Jemand eine Idee wie ich die Anzahl
    der Durchläufe und die Summe S in einer
    .txt Datei schreiben kann?
    Danke





  • Danke für den Link.
    Noch eine Frage wäre es möglich den Befehl:

    srand((unsigned)time(0));
    

    mit static_cast umzuschreiben? wenn ja wie?
    Danke



  • srand(static_cast< unsigned >(time(0)));
    


  • ctime, cstdlib



  • danke schön für euere Hilfe 😉


Anmelden zum Antworten