unique numbers using srand( ) and rand( ) functions in C++

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • August1

    unique numbers using srand( ) and rand( ) functions in C++

    This is a follow up to using these functions to produce lottery
    numbers to an outfile, then read the numbers from the file to the
    screen. Although other methods are certainly available.

    #include <iostream>
    #include <fstream>//for declaring objects of the ofstream and ifstream
    #include <time.h>
    #include <stdlib.h>
    using namespace std;

    #define MAX 54//defines the upper bound range of array numbers as 54

    void main(void)
    {
    //declare integer array and variable types
    int numArr[6],temp,randomNum ;
    short numero = 0;
    short b = 0;

    //Plant seed for random number generator with system time
    srand((unsigned int)time(NULL)/2);

    ofstream send2file;//declare object of ofstream class for use with
    file
    ifstream readfile;//declare object of ifstream class for use with file
    send2file.open( "T8Be08b.da t", ios::out);/*use open function

    //heading and information
    cout << "\t\t\tLott ery Numbers" << endl << endl
    << "This program opens the data file \"T8Be08b.da t\" and then stores
    groups of" << endl
    << "lotto numbers that have 6 unique numbers to a group in the data
    file." << endl
    << "There are 50 groups of numbers. The groups of numbers are
    displayed to the" << endl
    << "screen - 3 groups per line." << endl << endl;

    if(!send2file.f ail())//if opening data file was successful
    {

    //Loop to repeat the sequence 50 times for each Lotto group
    for(int x=0;x<50;x++)
    {
    //Loop for the six Lotto numbers
    for(int i=0;i<6;)
    {
    randomNum=rand( ); //assigns random # from 0-32767

    //Converts to 1-MAX (upperbound limit)
    numArr[i]=(randomNum-(((int)(((float )randomNum)/((float)MAX)))* MAX))+1;

    //Loop to check each number against the others
    for(int num=temp=0;num< i;num++)
    if(numArr[num]==numArr[i]) temp++;
    if(temp==0) i++;
    }

    for(i=0;i<6;i++ )
    {
    send2file << numArr[i];
    if(i<5)
    {
    send2file << "#";
    }
    if(i==5)//allows spacing between groups of 6 numbers
    {
    send2file << endl;
    }
    }//end for
    }//end for

    send2file.close ();//use close function to close outfile

    }
    else
    {
    cout << "Error opening data file." << endl;
    }

    /////////////////////////////*************** *****///////////////////////////////
    readfile.open(" T8Be08b.dat", ios::in);//open data file for input
    if(readfile.fai l())
    {
    cout << "Error opening data file." << endl;
    }
    else
    {
    for(short z = 0; z <= 5; z++)//read 1st record from the data file
    {
    readfile >> numArr[z];
    readfile.ignore (1);/*consume # character between numbers of each
    record in file
    cout << numArr[z] << " ";//display each number in a group (6 per
    group) }//end nested for() loop that reads 1st group of numbers from
    data file

    cout << " ";//put spacing between each group of numbers displayed
    numero = 1;
    while(b != 49)// records from the data file (50 in all)
    {
    for(short z = 0; z <= 5; z++)
    {
    readfile >> numArr[z];
    readfile.ignore (1);
    cout << numArr[z] << " ";
    if(z == 5)
    {
    cout << " ";
    }//end nested if
    }//end nested for() loop
    numero++;//increment counter for screen formatting
    //if 3 groups of lotto numbers are on the output screen, go to next
    line
    if(numero == 3)
    {
    cout << endl;
    numero = 0;//reset counter that allows 3 groups of numbers to appear
    per line
    }
    b++;/*increment counter up to 50 for the 50 groups of lotto numbers
    to be read from the data file*/
    }//end nested while() loop
    }//end if-else

    cout << endl;//spacing

    }//end main()
Working...