arrays

Discussion in 'Software' started by hastefan2001, Jul 5, 2009.

  1. hastefan2001

    hastefan2001 Private E-2

    well hey there guys i have tried several things to try to define this declaration and i dont know where i am going wrong does anyone have any ideas what need to bone in order to define "scores" in my source code because i have tried to implement several things into my source code and when i do keep coming up with more errors but however, i just need to get this variable declared and like i said i have tried several thing with in different areas of my source code
    Code:
    #include <iostream>
    #include <iomanip>
    #include <fstream>
    using namespace std;
    
    
    
    
    ofstream outputfile("output.txt");
    const int MAX_FILE_NAME = 35; // Maximum file name length
    const int MAX_NUMBER_SCORES = 40; // Maximum number of values in array
    void open_input(ifstream& input, char name[]); // Get file name & Open file
    void read_values(ifstream& input, double v[], int size, int& used, double scores); // Read values from file
    double find_average(ifstream& input, double& average); // Find avg values
    void output(const char name[], const double v[], int n, double find_average, ostream& os = cout); // Print results
    
    
    int main()
    // Parameters: None
    // Returns: Zero
    // Calls: open_input(), find_average(), output()
    { char again; // Does user want to go through loop again?
    char file_name[MAX_FILE_NAME + 1]; // Name of file to be processed
    ifstream input_numbers; // For working with input file
    
    
    double average = 0.0;
    int num_scores = 0; // Number of scores in file
    
    
    cout << "This program can find the average numbers in a file..n" << endl;
    system("pause"); // Hold message on screen until key is pressed
    
    
    do
    {
    //system("cls"); // Clear screen
    open_input(input_numbers, file_name); // Get file name & open file
    
    
    find_average(input_numbers, average); // Find average values in file
    read_values(input_numbers, scores, MAX_NUMBER_SCORES, num_scores); // Read values
    output(file_name, num_scores, average, scores );
    output(file_name, num_scores, average, outputfile, scores); // and outputfile
    
    
    input_numbers.close(); // Close file
    if (num_scores > 0)
    { find_average(scores, num_scores, average); // Find average of values in array
    }
    else
    { cout << "..n..n..aNo data in file: " << file_name << endl;
    }
    cout << "..nDo you want to process another file (Y/N)? ";
    cin >> again;
    cin.ignore(256, '..n'); // Remove Enter key from keyboard buffer
    
    
    } while ( again == 'y' || again == 'Y');
    
    
    cout << "..nEnd of Program!" << endl;
    
    
    
    
    return 0;
    } // End of main()
    
    
    void open_input(ifstream& input, char name[]) //Open file, exit on error
    // Parameters: Variables for input file reference and input file name
    // Returns: None
    // Calls: None
    { int count = 0; // Count number of tries
    
    
    do // Continue until we get a valid file name and can open file
    {
    count++;
    
    
    if (count != 1) // Issue error message if we are trying again.
    { cout << "..n..aInvalid file name or file does not exist. Please try again."
    << endl;
    }
    
    
    cout << "..nEnter the input file name (maximum of " << MAX_FILE_NAME
    << " characters please)..n:> ";
    cin.get(name, MAX_FILE_NAME + 1);// Gets at most MAX_FILE_NAME characters
    cin.ignore(256, '..n'); // Remove Enter key from keyboard buffer
    
    
    input.clear(); // Clear all error flags, if any, from prev try
    input.open(name, ios_base::in); // Open only if file exists
    
    
    } while (input.fail() ); // If can't open file, try again
    } // End of open_input()
    
    
    void read_values(ifstream& input, double v[], int size, int& used) // Read values
    // Parameters: Variables for file reference, variable for array reference,
    // value for array size and variable for number of values in array
    // Returns: None
    // Calls: None
    { 
    double value; // Value from file
    int count = 0; // Count number of values in file
    
    
    while (count < size && input >> value) // Continue as long as there is 
    // room in the array and we can read
    { v[count] = value; // a number from file.
    count ++; 
    }
    
    
    used = count;
    } // End of read_values()
    
    
    void find_average(const double v[], int n, double& average) // Find average of values
    // Parameters: Variables for array reference, value for number of values 
    // and variables for average of values
    // Returns: None
    // Calls: None
    { 
    int i; // Array index and loop counter
    
    
    average = v[0];
    
    
    for (i = 1; i < n; i++) // Start with 1 since max & min initialized to v[0]
    { 
    if (v[i] > average) average = v[i];
    if (v[i] < average) average = v[i];
    }
    } // End of find_average()
    
    
    double find_average(ifstream& input, double& average) // Find max & min values
    // Parameters: Variables for file reference and max and min values
    // Returns: None
    // Calls: None
    {
    double avag;
    
    
    double sum = 0;
    int count = 0;
    
    
    while (input >> avag) // Continue as long as we can read a number from file.
    {
    sum += avag;
    count = count + 1;
    }
    average = sum / count;
    return sum / count;
    } // End of average file
    
    
    void output(const char name[], double average, ostream& os) // Print results
    // Parameters: File name, max & min values from file, output stream
    // Returns: None
    // Calls: None
    { os << "..n..nInput your File Name Please : " << name << endl;
    os << "Your average : " << setw(8) << average<< endl;
    
    
    }
    void output(const char name[], const double v[], int n, 
    double avag,  ostream& out) 
    // Parameters: File name, array reference, number of values of average of values
    // Returns: None
    // Calls: None
    { int i; // Array index and loop counter
    out.setf(ios::fixed);
    out.setf(ios::showpoint);
    out.precision(1);
    out << "..n..nInput File Name: " << name << endl;
    out << "..nFile Contents:" << endl;
    for (i = 0; i < n; )
    { out << setw(8) << v[i];
    if ( ++i % 5 == 0) out << "..n"; // Print only 5 values per line
    }
    if ( i % 5 != 0) out << "..n"; // Newline if last line is short
    out << "..nLargest Number in File: " << setw(8) << avag << endl;
    out << "Smallest Number in File: " << setw(8) << avag << endl;
    } // End of output() 
    
    and here is the following error that i am getting:

    (42) : error C2065: 'scores' : undeclared identifier
    this error is happening on line 42 of my source code.
     
  2. Senlis

    Senlis Staff Sergeant

    I'm gonna install c++ express edition on my computer to see if I can solve the problem. Standby.
     
  3. Senlis

    Senlis Staff Sergeant

    simply put, it seems you are using the double array called 'scores' in your program without defining it. If you are going to use 'scores' as a parameter, you need to initialize it in your program.

    Do something along the lines of
    double scores[100];
    at the beginning of your program

    I would also note that you define the function 'readvalues' as
    void read_values(ifstream& input, double v[], int size, int& used, double scores); // Read values from file
    at the beggining of your program (having 5 parameters), but your call to it only specifies 4 parameters. Also, the function itself only takes 4 parameters. You will need to fix this to match your definition.

    Also, your output function...parameter 2 in the call needs to be const double, but the function is sent an int.

    After that, I stopped trying to fix the program. It appears that you programmed a lot without compiling it. When you are programming something, compile it every few lines to catch mistakes. This prevents you from programming a whole lot and then getting 50 errors. It may be time for you to go back to the drawing board.....or I may be completely off base.
     

MajorGeeks.Com Menu

Downloads All In One Tweaks \ Android \ Anti-Malware \ Anti-Virus \ Appearance \ Backup \ Browsers \ CD\DVD\Blu-Ray \ Covert Ops \ Drive Utilities \ Drivers \ Graphics \ Internet Tools \ Multimedia \ Networking \ Office Tools \ PC Games \ System Tools \ Mac/Apple/Ipad Downloads

Other News: Top Downloads \ News (Tech) \ Off Base (Other Websites News) \ Way Off Base (Offbeat Stories and Pics)

Social: Facebook \ YouTube \ Twitter \ Tumblr \ Pintrest \ RSS Feeds