Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C++ (http://www.go4expert.com/forums/cpp/)
-   -   Please correct the error in my program. When i run the program on turbo c++ 3, it out (http://www.go4expert.com/forums/correct-error-program-i-run-program-t16330/)

tharun518 25Feb2009 09:35

Please correct the error in my program. When i run the program on turbo c++ 3, it out
 
Please correct the error in my program. When i run the program on turbo c++ 3, it output 3 times. Also When i enter more than 1 entry only the last entry is outputted. Also it is outputted 3 times.
Code:

#include<fstream.h>
#include<iostream.h>
#include<conio.h>
class  student
{
int rollno;
char name[20];
int tm;
public:
void  input();
void transfer();
void output();
}
obj;
void  student::input()
{
char ch='y';
ofstream  outf;
outf.open("mark.dat");
while(ch=='y')
{
cout<<"Enter  rollno, name and  mark";
cin>>rollno>>name>>tm;
outf.write((char*)&obj,sizeof(obj));
cout<<"Wish  to enter more(Y/N)?\n";
cin>>ch;
}
outf.close();
}
void  student::transfer()
{
ofstream outf;
ifstream  inf;
inf.open("mark.dat");
outf.open("trans.dat");
while(inf)
{
inf.read((char*)&obj,sizeof(obj));
outf.write((char*)&obj,sizeof(obj));
}
outf.close();
inf.close();
}
void  student:utput()
{
ifstream  inf;
inf.open("trans.dat");
while(inf)
{
inf.read((char*)&obj,sizeof(obj));
cout<<"\nRollno  "<<rollno;
cout<<"\nName "<<name;
cout<<"\nTotal  "<<tm;
}
inf.close();
}
void  main()
{
clrscr();
student  obj;
obj.input();
obj.transfer();
obj.output();
getch();
}


xpi0t0s 25Feb2009 13:20

Re: Please correct the error in my program. When i run the program on turbo c++ 3, it
 
Please indent your code. It's very difficult to follow if there's no indentation.

tharun518 25Feb2009 14:49

Re: Please correct the error in my program. When i run the program on turbo c++ 3, it
 
I don't know to indent. Please correct the error. The progaram is to copy content of a file to another file.

xpi0t0s 25Feb2009 15:36

Re: Please correct the error in my program. When i run the program on turbo c++ 3, it
 
Here's some non-indented code:
Code:

int main()
{
printf("Hello\n");
return 0;
}

And here's some indented code (I used spaces):
Code:

int main()
{
    printf("Hello\n");
    return 0;
}

When you have multiple nested code blocks, indentation makes the code a lot more readable.

tharun518 25Feb2009 16:36

Re: Please correct the error in my program. When i run the program on turbo c++ 3, it
 
I have tried to intend it.

Thank you very much for taking time. I am from India and here we learn about only basics of c++ and our syllabus is based on turbo c++ 3. So i use turbo c++ and i don't know much about c++ programing. So i cannot implement instructions you give on modern c++.

I tried new changes. But i still have some little problems. The program is to transfer content of one file to another. When i input only one entry, the program works. But when more than one entry is used it out puts only 1 or 2. Kindly please correct the problem.

Here is the new code by correcting the previous errors.


Code:


#include<fstream.h>
#include<iostream.h>
#include<conio.h>
class student
{
      int rollno;
      char name[20];
      int tm;
      public:
      void input();
      void transfer();
      void output();
 };
void student::input()
{
      char ch='y';
      ofstream outf;
      outf.open("mark.dat");
      while(ch=='y')
      {
              cout<<"Enter rollno, name and mark\n";
              cin>>rollno>>name>>tm;
              outf.write((char*)this,sizeof(student));
              cout<<"Wish to enter more(Y/N)?\n";
              cin>>ch;
      }
    outf.close();
}
void student::transfer()
{
    ofstream outf;
    ifstream inf;
    inf.open("mark.dat");
    outf.open("trans.dat");
    while( inf.read(( char* )this,sizeof(student)))
  {
          outf.write(( char* )this,sizeof( student ) );
  }
  outf.close();
  inf.close();
}
void student::output()
{
  ifstream inf;
  inf.open("trans.dat");
  while (inf.read((char*)this, sizeof(student)))
  {
        inf.read(( char* )this,sizeof( student ) );
        cout<<"\nRollno "<<rollno;
        cout<<"\tName "<<name;
        cout<<"\tTotal "<<tm<<'\n';
  }
  inf.close();
}
void main()
{
    clrscr();
    student obj;
    obj.input();
    obj.transfer();
    obj.output();
    getch();
 }


xpi0t0s 25Feb2009 20:16

Re: Please correct the error in my program. When i run the program on turbo c++ 3, it
 
Don't PM me to demand answers please.

What input do you give, and what output do you get? Enter say 3 or 4 records and use copy and paste to paste the resulting screen exactly - showing both data entered and results. Paste into a code block to maintain formatting.

I am a little concerned by "inf.read(( char* )this,sizeof(student))" and the write equivalent. If these functions are designed for text then the data should be converted to text, not just cast to char*. Apart from this the code seems to be OK so the input and output should help me see what's going wrong.

tharun518 26Feb2009 07:35

Re: Please correct the error in my program. When i run the program on turbo c++ 3, it
 
At last my program to transfer content of one file to another. Here is the full program for further reference to other users.
Code:

#include<fstream.h>
#include<iostream.h>
#include<conio.h>
class student
{
int rollno;
char name[20];
int tm;
public:
        void input();
        void transfer();
        void output();
        };
void student::input()
{
char ch='y';
ofstream outf;
outf.open("mark.dat");
while(ch=='y')
{
cout<<"Enter rollno, name and mark\n";
cin>>rollno>>name>>tm;
outf.write((char*)this,sizeof(student));
cout<<"Wish to enter more(Y/N)?\n";
cin>>ch;
}
outf.close();
}
void student::transfer()
{
ofstream outf;
ifstream inf;
inf.open("mark.dat");
outf.open("trans.dat");
while( inf.read(( char* )this,sizeof(student)))
{
outf.write(( char* )this,sizeof( student ) );
}
outf.close();
inf.close();
}
void student::output()
{
ifstream inf;
inf.open("trans.dat");
while (inf.read((char*)this, sizeof(student)))
{
cout<<"\nRollno "<<rollno;
cout<<"\tName "<<name;
cout<<"\tTotal "<<tm<<'\n';
}
inf.close();
}
void main()
{
clrscr();
student obj;
obj.input();
obj.transfer();
obj.output();
getch();
}


shabbir 26Feb2009 08:57

Re: Please correct the error in my program. When i run the program on turbo c++ 3, it
 
Quote:

Originally Posted by tharun518 (Post 43511)
At last my program to transfer content of one file to another. Here is the full program for further reference to other users.

I really like this approach and some repu your way

tharun518 26Feb2009 12:00

Re: Please correct the error in my program. When i run the program on turbo c++ 3, it
 
Thank you very much admin. I also had a forum like this. But now its down. I am after the exams.

shabbir 26Feb2009 12:04

Re: Please correct the error in my program. When i run the program on turbo c++ 3, it
 
Quote:

Originally Posted by tharun518 (Post 43530)
Thank you very much admin. I also had a forum like this. But now its down. I am after the exams.

PM me the url if you want to.


All times are GMT +5.5. The time now is 20:05.