Tisztelt Hallgató!
Mellékelek néhány fájlkezeléses megoldott feladatot.
Sikeres felkészülést!
*CENSORED*Olvassunk karakterenként a mondat.dat fájlból és írjuk ki a beolvasott karaktert a kiir.dat fájlba. Az adat végét a pont '.' jelzi. A pont helyett
felkiáltójelet írjunk ki a kiir.dat fájlba.
#include
#include
#include
#include
using namespace std;
void main(){
char kar;
ifstream fin;
ofstream fout;
fin.open("mondat.dat");
fout.open("kiir.dat");
fin.get(kar);
while (kar!='.')
{
fout.put(kar);
fin.get(kar);
}
fin.putback(kar);
fout.put('!');
fin.close();
fout.close();
}
Az adat.dat fájl 3 valós számot tartalmaz. Olvassuk be az adatokat és számítsuk ki az adatok átlagát, majd írjuk ki az eredményt az ered.dat fájlba.
#include
#include
using namespace std;
void main(){
double a,b,c;
ifstream fin;
ofstream fout;
fin.open("adat.dat");
fout.open("ered.dat");
fin>>a>>b>>c;
fout<<"Az adat.dat tartalmanak atlaga: "<<(a+b+c)/3.0;
fin.close();
fout.close();
}
A 3 valós számot tartalmazó bemeneti fájl nevét és az eredményt tároló kimeneti fájl nevét olvassuk be billentyűzetről.Ellenőrizzük a fájlok
nyitását, és hiba esetén adjunk hibaüzenetet. Olvassuk be az adatokat és számítsuk ki az adatok átlagát, melyet 3 tizedesjre írjunk ki.
#include
#include
#include
using namespace std;
void main(){
double a,b,c;
char infilenev[14], outfilenev[14];
ifstream fin;
ofstream fout;
cout<<"File neve?:";cin>>infilenev;
fin.open(infilenev);
if (fin.fail())
{
cout<<"Nem letezik: "<
exit(1);
}
cout<<"Kimeneti file neve?:";cin>>outfilenev;
fout.setf(ios::fixed);
fout.setf(ios::showpoint);
fout.open(outfilenev);
if (fout.fail())
{
cout<<"Nem sikerult letrehozni: "<
exit(1);
}
fout.precision(3);
fin>>a>>b>>c;
fout<<"Az adat.dat tartalmanak atlaga: "<<(a+b+c)/3.0;
fin.close();
fout.close();
}
A sorinf.dat fiájlból olvassunk be 3 sort a kiemelés műveleti jellel.
#include
#include
#include
using namespace std;
void main(){
char sor1[80],sor2[80],sor3[80];
ifstream be;
be.open("sorinf.dat");
be>>sor1;
be>>sor2;
be>>sor3;
be.close();
cout<<
cout<<
cout<<
}
Az előző feladatot oldjuk meg getline használatával.
#include
#include
#include
using namespace std;
void main(){
char sor1[80],sor2[80],sor3[80];
ifstream be;
be.open("sorinf.dat");
be.getline(sor1,sizeof(sor1));
be.getline(sor2,sizeof(sor2));
be.getline(sor3,sizeof(sor3));
be.close();
cout<<
cout<<
cout<<
}
A tanulok.dat fájl tartalmának készítsük el a listáját, majd az első és a negyedik tanuló adatait írassuk ki. A feladat megoldásához használjuk a
tellg és a seekg tagfüggvényeket!
#include
#include
#include
using namespace std;
typedef struct{
char neve[20];
int kora;
float atlaga;
} tanulo;
void main(){
tanulo t[20],t1,t2;
int i=0;
streamoff k;
ifstream be;
be.open("tanulok.dat");
be.read((char*)&t[i],sizeof(tanulo));
while(!be.eof()){
cout<<"Tanulo neve: "<<
cout<<"Tanulo kora: "<<
cout<<"Tanulo atlaga: "<<
be.read((char*)&t[i],sizeof(tanulo));
}
be.close();
be.open("tanulok.dat");
k=be.tellg();
cout<<"\n Aktualis pozicio: "<
be.seekg(k);
be.read((char*)&t1,sizeof(tanulo));
cout<<"Tanulo neve: "<<
cout<<"Tanulo kora: "<<
cout<<"Tanulo atlaga: "<<
be.seekg(2*k*sizeof(tanulo)+1,ios::cur);
be.read((char*)&t2,sizeof(tanulo));
cout<<"Tanulo neve: "<<
cout<<"Tanulo kora: "<<
cout<<"Tanulo atlaga: "<<
be.close();
}