Need Help with programming

Discussion in 'C++' started by Drewdog, Sep 16, 2005.

  1. Drewdog

    Drewdog Guest

    I am getting some error messages which I can't figure out their
    meaning. I have the code setup, I think it's correct but it doesn't
    work. My goal is to get this program to read from a data file and
    basically put it into an output file that I can access as a test file.
    Here is my header file:

    #include <iostream.h>
    #include <fstream.h>
    #include <iomanip.h>

    struct StudRdType
    {
    int id;
    float exam1;
    float exam2;
    float exam3;
    };
    StudRdType students;

    void ReadRd(ifstream&, StudRdType[]);


    void WriteRd(ofstream&, StudRdType[]);

    Here is my function file: It is supposed to hit the data file, read it
    and save the information. For example the data file looks like:

    1111 275 323 432
    1342 432 235 532
    2343 235 432 234

    So the ReadRd function is spoed to read that and save it. I can't get
    it do that, im a bit rusty and can't seem to remember how to do this.
    This is what I have for the function file (implementation).

    #include "stud2.h"

    void ReadRd(ifstream& inFile, StudRdType students[])

    {

    inFile.get(students.id);

    while(inFile)
    {
    inFile >> students.exam1 >> students.exam2 >> students.exam3);
    inFile.ignore('\n');
    inFile.get(students.id);
    }
    }

    void WriteRd(ofstream& outFile, StudRdType students[])
    {
    outFile << students.id << students.exam1 << students.exam2 <<
    students.exam3 << endl;
    outFile.setf(ios::fixed);
    outFile.setf(ios::showpoint);
    outFile.precision(2);
    }

    For some reason it isn't working , not sure hwy.. Finally here is my
    driver file:

    #include "stud2.h"

    int main()
    {

    ifstream inFile;
    ofstream outFile;
    StudRdType students;
    inFile.open("in.data");
    outFile.open("out.data");
    if(inFile.fail() || outFile.fail())
    {
    cout << "input or out file opening failed" << endl;
    exit(1);
    }

    ReadRd(inFile, students);
    WriteRd(outFile, students);

    outFile << "*** END ***" << endl;

    return 0;
    }
    Now here are the errors I get when I run them.. Again my goal is to
    read the data file I showed above and print it to an outfile, the exact
    same way as it looks.

    Errors:

    runstud2.cxx: In function `int main()':
    runstud2.cxx:40: error: cannot convert `StudRdType' to `StudRdType*'
    for
    argument `2' to `void ReadRd(std::ifstream&, StudRdType*)'
    runstud2.cxx:41: error: cannot convert `StudRdType' to `StudRdType*'
    for
    argument `2' to `void WriteRd(std:fstream&, StudRdType*)'
    stud2.cxx: In function `void ReadRd(std::ifstream&, StudRdType*)':
    stud2.cxx:15: error: request for member `id' in `students', which is of
    non-class type `StudRdType*'
    stud2.cxx:19: error: request for member `exam1' in `students', which is
    of
    non-class type `StudRdType*'
    stud2.cxx:19: error: request for member `exam2' in `students', which is
    of
    non-class type `StudRdType*'
    stud2.cxx:19: error: request for member `exam3' in `students', which is
    of
    non-class type `StudRdType*'
    stud2.cxx:19: error: parse error before `)' token
    stud2.cxx:21: error: request for member `id' in `students', which is of
    non-class type `StudRdType*'
    stud2.cxx: In function `void WriteRd(std:fstream&, StudRdType*)':
    stud2.cxx:35: error: request for member `id' in `students', which is of
    non-class type `StudRdType*'
    stud2.cxx:35: error: request for member `exam1' in `students', which is
    of
    non-class type `StudRdType*'
    stud2.cxx:35: error: request for member `exam2' in `students', which is
    of
    non-class type `StudRdType*'
    stud2.cxx:35: error: request for member `exam3' in `students', which is
    of
    non-class type `StudRdType*'

    I'm completely Confused.. I am in need of some serious help as I am
    eager to learn this stuff and am unsure as to what I'm doing
    incorrectly.

    Thanks in advance!
    Drewdog, Sep 16, 2005
    #1
    1. Advertising

  2. Drewdog

    Srini Guest

    First up - I am NOT going to give you a correct working program (I
    think you're having problems in your homework!)

    > #include <iostream.h>
    > #include <fstream.h>
    > #include <iomanip.h>


    #include <iostream>
    #include <fstream>
    #include <iomanip>

    > Errors:
    > runstud2.cxx: In function `int main()':
    > runstud2.cxx:40: error: cannot convert `StudRdType' to `StudRdType*'
    > for
    > argument `2' to `void ReadRd(std::ifstream&, StudRdType*)'


    This should tell you everything! You are passing an object where a
    pointer is expected! All the other errors are also due to this very
    mistake. In main, you've said -

    > StudRdType students;


    This is a *single* object and *not* an array of objects. The functions
    ReadRd and WriteRd are expecting pointers! Now, go figure it out how to
    fix it - you've enough information to do it yourself!

    Srini
    Srini, Sep 16, 2005
    #2
    1. Advertising

  3. Drewdog wrote:
    > I am getting some error messages which I can't figure out their
    > meaning. I have the code setup, I think it's correct but it doesn't
    > work.


    LOL

    You're confused about arrays, and are desparately trying to ignore this
    issue in your code.

    The easiest answer would be to use a vector instead of an array. But I'm
    absolutely positive you won't want to take the easy route (newbies never
    do).

    So you need to get a C++ book and look up dynamic arrays, that is the
    technique you need here.

    Alternatively look up vectors. This will be easier in the long run but
    mean that you have to throw away more of the code below.

    john
    John Harrison, Sep 16, 2005
    #3
  4. Drewdog

    Mushr00mhead Guest

    On 9/15/2005 7:07 PM, Drewdog wrote:
    > struct StudRdType
    > {
    > int id;
    > float exam1;
    > float exam2;
    > float exam3;
    > };
    > StudRdType students;
    >
    > void ReadRd(ifstream&, StudRdType[]);
    >
    >
    > void WriteRd(ofstream&, StudRdType[]);


    If you look closely at your function prototypes, you will notice that
    they are expecting to receive an array of StudRdType. The variable you
    have defined calles "students" is not an array, it is mearly a variable
    of type struct StudRdType. Turn that into an array and most of those
    errors should disappear.

    --
    ~Mushr00m Head
    http://members.cox.net/mushroomhead/
    Mushr00mhead, Sep 16, 2005
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. JFizzR
    Replies:
    13
    Views:
    1,237
    Scott Ellsworth
    Dec 1, 2003
  2. Allan Wax

    Eclipse programming help need

    Allan Wax, Dec 10, 2004, in forum: Java
    Replies:
    1
    Views:
    362
    IchBin
    Dec 11, 2004
  3. Alan Ling via JavaKB.com

    Need Help with Programming in Java with Eclipse

    Alan Ling via JavaKB.com, Jan 28, 2005, in forum: Java
    Replies:
    2
    Views:
    315
    Roland
    Jan 28, 2005
  4. puzzlecracker

    programming in eclipse.... need help

    puzzlecracker, Dec 19, 2005, in forum: Java
    Replies:
    3
    Views:
    392
    Roland
    Dec 19, 2005
  5. Replies:
    2
    Views:
    463
    Roedy Green
    Mar 26, 2006
Loading...

Share This Page