Inregistrare • Cautare • FAQ • Membri • Grupuri • Autentificare
lab 13

 
Raspunde la subiect    Pagina de start a forumului MiniZone » programming Subiectul anterior
Subiectul urmator

lab 13
Autor Mesaj
Zappu
Administrator
Administrator
Zappu

Data inscrierii: 10/Noi/2007
Mesaje: 718
Localitate: Cluj

Mesaj lab 13 Raspunde cu citat (quote)
1. Sã se scrie un program care foloseºte funcþia seekg() pentru poziþionare la mijlocul fiºierului
si apoi afiºeazã conþinutul fiºierului începând cu aceastã poziþie. Numele fiºierului se citeste
din linia de comandã.





#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
void main(int argc,char *argv[])
{
if(argc==1)
{
cout<<"Nu sa primit numele fisierului prin linia de comanda"<<endl;
exit(1);
}
ifstream fin;
fin.open(argv[1],ios::in);

if(fin.fail())
{
cout<<"Eroare la deschiderea fisierului!"<<endl;
exit(1);
}
fin.seekg(0,ios::end);
fin.seekg(fin.tellg()/2,ios::beg);
char buff[2]="";
while(!fin.eof())
{
cout<<buff;
fin.read(buff,1);
}
cout<<endl;
fin.close();
}




2. Scrieþi un program care utilizeazã funcþia write() pentru a scrie într-un fiºier ºiruri de
caractere. Afiºaþi apoi conþinutul fiºierului folosind funcþia get(). Numele fiºierului se va citi
de la tastaturã.






#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
void main(void)
{
char calea[20];
cout<<"Introduceti calea fisierului: ";cin>>calea;
fstream io;
io.open(calea,ios::in|ios::out);
char buff[256]="\n";
cout<<"Introduceti sirurile... pentru a incheia introduceti pe un rand nou \"e\": "<<endl;
bool flag=false;
while(1)
{
cin.getline(buff,256,'\n');
if(!(toupper(buff[0])=='E'&&buff[1]=='\0'))
{
io.write(buff,strlen(buff));
if(flag==true)
{
io.put('\n');
}
else
io.seekp(0,ios::beg);
}
else
break;
flag=true;
}
io.seekg(0,ios::beg);
char buff1=0;
cout<<"Continutul fisierului este: "<<endl;
while(1)
{
io.get(buff1);
if(!io.eof())
cout<<buff1;
else
break;
}
io.close();
}



3. Scrieþi o aplicaþie C++ care citeºte un fiºier utilizând funcþia read(). Verificaþi starea
sistemului dupã fiecare operaþie de citire. Numele fiºierului se va citi din linia de comandã.
Afiºaþi pe ecran conþinutul fiºierului.





#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
void main(int argc,char *argv[])
{
if(argc==1)
{
cout<<"Nu sa trimis numele fisierului in linia de comanda!"<<endl;
exit(1);
}
ifstream file;
file.open(argv[1],ios::in);
file.seekg(0,ios::end);
char *stream=new char[(int)file.tellg()+1];
stream[0]='\0';
file.seekg(0,ios::beg);
if(file.fail())
{
cout<<"eroare la deschiderea fisierului!"<<endl;
exit(1);
}
char buff[2]="";
while(1)
{
file.read(buff,1);
cout<<"starea: "<<file.failbit<<endl;
if(!file.eof())
{
strcat(stream,buff);
}
else
break;
}
cout<<stream;
file.close();
}



4. Scrieti o aplicatie C++ in care deschideti un fisier in mod binar pentru citire. Afisati un mesaj
corespunzator daca fisierul nu a fost creat in prealabil si cereti reintroducerea numelui
fisierului. Presupunand ca in fisierul deschis exista inregistrari de tip agenda (nume, localitate,
numar de telefon), utilizati supraincarcarea operatorilor de insertie si extractie pentru afisarea
pe ecran a continutului fisierului.



#include<iostream>
#include<fstream>
using namespace std;

class Persoana
{
char nume[256];
char localitate[256];
char telefon[11];
public:
friend ifstream& operator>> (ifstream &file,Persoana &pers);
friend istream& operator>> (istream &stream,Persoana &pers);
friend ostream& operator<< (ostream &stream,Persoana &pers);
friend ofstream& operator<< (ofstream &file,Persoana &pers);
static int count;
};
int Persoana::count=0;
ifstream& operator>> (ifstream &file,Persoana &pers)
{
file>>pers.nume>>pers.localitate>>pers.telefon;
return file;
}
istream& operator>> (istream &stream,Persoana &pers)
{
bool flag=false;
char tmp[256];
cout<<"Nume: ";stream>>pers.nume;
cout<<"Localitatea: ";stream>>pers.localitate;
do
{
if(flag) cout<<"Numarul de telefon introdus nu contine 10 cifre.. introduceti numarul de telefon cu tot cu prefix"<<endl;
cout<<"Numar de telefon: ";stream>>tmp;
flag=true;
}
while(strlen(tmp)!=10);
strcpy(pers.telefon,tmp);
return stream;
}
ostream& operator<< (ostream &stream,Persoana &pers)
{
stream<<"Nume: "<<pers.nume<<endl;
stream<<"Localitate: "<<pers.localitate<<endl;
stream<<"Numar de Telefon: "<<pers.telefon<<endl;
return stream;
}
ofstream& operator<< (ofstream &file,Persoana &pers)
{
file<<pers.nume<<" "<<pers.localitate<<" "<<pers.telefon<<" ";
return file;
}
void main(void)
{
char calea[20];
bool flag=false;
int read,n;
Persoana p;
ifstream fin;
cout<<"Doriti scrierea unui fisier?(tastati 1 pentru DA si orice alt numar intreg pentru NU: ";cin>>read;
if(read==1)
{
ofstream fout;
cout<<"Introduceti calea pentru salvarea fisierului binar: ";cin>>calea;
fout.open(calea,ios::out|ios::binary);
cout<<"Introduceti cate elemente doriti sa aveti in sir: ";cin>>n;
for(int i=0;i<n;i++)
{
cout<<"Introduceti datele pentru persoana nr."<<i+1<<" :"<<endl;
cin>>p;
fout<<p;
}
fout.close();
}
do
{
if(flag)
{
cout<<"Fisierul nu exista! Va rugam incercati dinou:"<<endl;
fin.close();
}
cout<<"Introduceti calea fisierului de unde doriti citirea: ";cin>>calea;
fin.open(calea,ios::in|ios::binary);
flag=true;
}
while(fin.fail());
while(1)
{
fin>>p;
if(fin.eof())
break;
else
{
cout<<"Persoana nr."<<++p.count<<":"<<endl;
cout<<p;
}
}
fin.close();
}

_________________
Detinator MiniZone
www.zappdivercity.blogspot.com
27/05/2014 23:29 Vezi profilul utilizatorului Trimite mesaj privat
Afiseaza mesajele pentru a le previzualiza:    

Raspunde la subiect    Pagina de start a forumului MiniZone » programming Ora este GMT + 3 ore
Pagina 1 din 1

 
Mergi direct la: 
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum


Powered by phpBB © 2001, 2005 phpBB Group
Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro