• Acasă
  • Despre noi
  • Autori
  • Mărturii
  • Arhivă
  • Trimite Articol
  • Contact

WORLDIT

Lumea în 1 și 0.

  • Știri
    • Tehnologie
    • Tehnologie mobilă
    • Securitate
    • Developers
    • Știință
    • Benzi desenate
    • Jocuri
    • Intern
  • Tehnic
    • Browser
    • C#
    • C/C++
    • Challenge
    • HTML/CSS
    • Javascript, Ajax, jQuery
    • Open Source
    • PHP
    • Python
    • Securitate IT
    • Socializare
    • WordPress
    • Altele
  • Recenzii
  • Interviuri
  • Evenimente

Lucrul cu fisiere

8
  • Publicat de Coss
  • în C/C++
  • — 13 iul., 2009 at 6:08 pm

Urmatorul articol prezinta diferite moduri in care putem utiliza fisierele. In loc sa citim datele unei probleme de la tastura,le putem „lua” dintr-un fisier. In plus, lucrul cu fisiere este necesar in rezolvarea problemelor de olimpiada, care au date de intrare/iesire citite din fisier.

Asadar,sa ne apucam de treaba:

Pentru a putea efectua diferite operatii cu si in fisiere avem nevoie de biblioteca <fstream.h> .

1) Citirea din fisier

Sa spunem ca vrem sa citim dintr-un fisier un numar x. Fisierul se numeste „nr.txt”, trebuie sa-l cream si sa introducem in el numarul x.

#include <iostream.h>
#include <fstream.h>
#include <conio.h>
int main()
{
ifstream f("nr.txt");
int x;
f>>x;
f.close();
cout<<"numarul citit din fisier este: "<<x;
getch();
return 0;
}

Observati acel ifstream f(„nr.txt”); Putem spune ca ifstream este instructiunea de citire din fisier. Forma generala este:

ifstream variabila_fisier(„numefisier.extensie”);

Variabia_fisier este in cazul nostru f.

Fisierul:

nr
Va afisa cu ajutorul codului de mai sus:

afis_fis

Observati ca ma inchis fisierul cu f.close( ) . De obicei, este bine sa inchidem fisierele imediat ce am terminat lucrul cu ele.

Am putea declara fisierele si asa:

fstream f(„nr.txt”,ios::in);

Dar evaluatoarele gen infoarena nu prea accespta acest tip de declarare. Desi este mai facil, eu recomand folosirea primei variante (si mie imi place mai mult cea cu ios:: , dar…..).

Am utilizat ifstream pentru datele de intrate,sa vedem cu sta treaba si cu datele de iesire:

2) Scrierea intr-un fisier

Vrem sa citim un numar de la tastatura si sa-l bagam in fisierul out.txt. Avem urmatorul cod:

#include <iostream.h>
#include <fstream.h>
int main()
{
ofstream g("out.txt");
int n;
cout<<"Dati numarul: ";cin>>n;
g<<n;
g.close();
return 0;
}

Forma este ofstream variabila_fisier(„nume.extensie”); In cazul nostru, variabila_fisier este g.

nr5

In fisierul „out.txt” va aparea:

fis_out

Putem scrie si cu :

fstream g(„out.txt”,ios::out);

Pentru a scrie in fisier nu este nevoie sa-l cream.Va fi creat automat.

Acestea au fost principalele functii legate de fisiere, sa vedem cum sta cu structurile de date:

3) Vectori si fisiere

Vom citi din fisierul „vect.in” numarul de elemente (care se afla pe prima linie),apoi elementele din vector.Le vom afisa si apoi vom introduce in fisierul „vect.out” numai elementele.

include <iostream.h>
#include <fstream.h>
#include <conio.h>
int main()
{
ifstream f("vect.in");
ofstream g("vect.out");
int v[100],n,i;
f>>n;
for (i=0;i<n;i++)
f>>v[i];
f.close();
for (i=0;i<n;i++)
cout<<v[i]<<" ";
for (i=0;i<n;i++)
g<<v[i]<<" ";
g.close();
getch();
return 0;
}

Fisier de intarare:

int_fis

Afisare:

afis

Fisier de iesire:

out_fis1

4) Matrice si fisiere

Vrem sa citim din fisierul „mat.in” o matrice.Pe prima linie se afla numarul de linii si numaurl de coloane (exact in aceasta ordine), iar pe urmatoarele m linii elementele matricei. Vom afisa numarul de linii si coloane,precum si elementele matricei.Apoi vom introduce numari matricea in fisierul „mat.out”.

#include <iostream.h>
#include <fstream.h>
#include <conio.h>
int main()
{
ifstream f("mat.in");
ofstream g("mat.out");
int a[10][10],i,j,m,n;
f>>m>>n;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
f>>a[i][j];
f.close();
cout<<"nr de linii: "<<m<<endl;
cout<<"nr de coloane: "<<n<<endl;
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
g<<a[i][j]<<" ";
}
g<<endl;
}
g.close();
getch();
return 0;
}

Fisier de intarare:

in_mat

Afisare:

afis_mat

Fisier de iesire:

out_mat

5) Struct si fisiere

Vom citi din fisierul „copil.in” numarul de copii (pe prima linie,n), numele,prenumele,varsta,clasa si vom afisa numele celui mai mic copil.

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <fstream.h>
int main()
{
ifstream f("copil.in");
struct copil
{
char nume[10],prenume[10];
int varsta,clasa;
}e[3];
int i,min,k,n;
f>>n;
for (i=0;i<n;i++)
f>>e[i].nume>>e[i].prenume>>e[i].varsta>>e[i].clasa;

f.close();
min = e[0].varsta;
for (i=1;i<3;i++)
if (e[i].varsta<min) min=e[i].varsta;
cout<<"min="<<min<<endl;
for (i=0;i<3;i++)
if (min==e[i].varsta) cout<<"Cel mai mic copil: "<<e[i].nume<<" "<<e[i].prenume;
getch();
return 0;
}

Fisier intrare:

STRUCT_COPIL

Afisare:

DATE_OUT

Ca „Tema” , va propun rezolvarea unei probleme simple, de pe infoarena. Este necesar sa cunoasteti fisiere. 🙂

Cam asta este cu fisierele, totul este scris pe scurt. If you like it, tell me. 😀

Etichete: afisareC++date iesire/intrarefilesfisierematriceprogramstrucutvectori

— Albulescu Cosmina a scris 223 articole

Nu există o descriere a autorului.

  • Articolul anterior Noul telefon Toshiba
  • Articolul următor Pisica robot

8 Comentarii

  1. Avadanei Andrei spune:
    iulie 13, 2009 la 11:39 pm

    Destul de dragut.Ca o completare as putea spune faptul ca in general eu nu folosesc aceasta metoda pentru lucrul cu fisiere.Poate unii dintre voi au observat ca folosesc in probleme freopen.

    Cum lucreaza?

    freopen(„fisier.in”,”r”,stdin); //fisier intrare
    freopen(„fisier.out”,”w”,stdout); //fisier iesire

    scanf(„%d”,&i); //citim o valoare de tip int
    scanf(„%lld”,&l); //citim o valoare long long int
    scanf(„%c”,&c); //citim un caracter
    scanf(„%s”,s); //citim un sir de caractere pana intalnim spatiu sau sfarsit de linie

    printf(„%d”,i); //afisam valoare de tip int
    printf(„%lld”,l); //afisam valoare de tip long long int
    printf(„%c”,c); //afisam caracter
    printf(„%s”,s); //afisam text

    fclose(stdout); fclose(stdin); // inchidem resursele

    Pentru a citi mai multe variabile facem astfel :

    scanf(„%d%lld%s”,&i,&l,&s); //citim o variabila de tip int,una de tip long long int si una de tip sir de caractere

    Formatare text :

    printf(„%s are : %d ani\n”,nume,ani); //am afisat un sir de caractere si o variabila de tip int

  2. miculprogramator spune:
    iulie 14, 2009 la 9:14 am

    Asta-i varianta de C. Eu prefer sa lucrez in C numai cu stringurile, in rest C++. Mi se pare mi usor…

  3. ~Selony~ spune:
    iulie 14, 2009 la 10:18 am

    Foarte fain.Good Work 😀

  4. Avadanei Andrei spune:
    iulie 14, 2009 la 1:34 pm

    Gusturile nu se discuta.Si eu prefer C++ in anumite situatii insa exista zvonuri cum ca aceasta metoda ar fi ceva mai rapida in anumite situatii.
    Am intampinat si cateva probleme pe infoarena care schimband metoda de citire/scriere luam maxim sau pierdeam multe puncte.
    E bine sa le stii pe ambele si sa lucrezi cu ambele probleme pentru a vedea care ofera mai multe rezultate pozitive 🙂

  5. Andrei Misarca spune:
    iulie 14, 2009 la 11:16 pm

    Din ceea ce am vazut si experimentat eu, citirea e mai rapida cu streamuri, insa afisarea este mult mai inceata. Asta insa doar pe versiunile mai noi de compilatoare GNU (de la 4.2 in sus). Pe .campion de exemplu unde se foloseste o versiune mai veche (3.2 cred) folosirea streamurilor este contraindicata. 🙂
    Daca primesc ceva permisiuni m-as baga si eu la dezvoltarea siteului, ideea mi se pare faina.

  6. Avadanei Andrei spune:
    iulie 15, 2009 la 12:01 am

    Vorbim pe Y! Messenger. Just Click

  7. adrian spune:
    august 27, 2009 la 8:03 pm

    ai o greseala in ultimul program .. min este negativ pt ca nu il initializezi inainte si este intotdeauna mai mic decat oricare e[i].varsta si da ceva aiurea la iesire .. cred ca ar trebui min = e[0].varsta; inainte de for. bafta

    • Avadanei Andrei spune:
      august 27, 2009 la 8:53 pm

      Mersi Adrian pentru observatie. 😀


  • Facebook

    WorldIT.info
  • Ultimele Atacuri Cibernetice din Romania – RO Hacked

    [wp_rss_retriever url="https://rohacked.bit-sentinel.com/feed/" excerpt="none" items="5" read_more="false" new_window="true" thumbnail="false" cache="0"] RO Hacked este registrul atacurilor cibernetice din România.
  • Caută

  • Articole Recomandate

    • Recent Posts
    • Tags
    • Număr record de participanți la DefCamp 2015, cel mai important eveniment dedicat securității cibernetice din Europe Centrala si de Estdecembrie 2, 2015
    • La DefCamp 2015 vei afla prin ce tehnici pot fi evitate măsurile de securitate ale sistemelor informatice criticeoctombrie 16, 2015
    • Ultima sansa sa rezervi bilete de tip Early Bird la DefCamp 2015septembrie 1, 2015
    • 15 sfaturi despre cum poti deveni un programator bun venite de la specialisti romaniaugust 4, 2015
    • algoritmica Android antivirus Apple Avadanei Andrei benzi desenate BitDefender blog browser C++ Chrome concurs eveniment Facebook Firefox Google google chrome hacking html5 infografic informatica internet Internet Explorer IT javascript linux Microsoft Mozilla Firefox online PHP programare retea sociala review Romania securitate Tehnologie Twitter web Windows Windows 7 Wordpress WorldIT worldit.info Yahoo! YouTube
  • mai 2022
    L Ma Mi J V S D
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031  
    « dec.    
  • Link-uri Sponsorizate

    • laptop second hand

    • Calculatoare Second Hand

    • cod voucher pc garage

  • Home
  • Tehnic
  • C/C++
  • Lucrul cu fisiere
  • Important

    • Bit Sentinel
    • Centrul de Cercetare în Securitate Informatică din România
    • DefCamp
  • Prieteni

    • BetiT.ro
    • bijuterii handmade
    • Computerica | Resurse gratuite PC
    • Descopera.org
    • Gadgeturi si IT – Giz.ro
  • Prieteni

    • PC – Config
    • RO Hacked
    • Stiri IT

Copyright © 2009-2014 WORLDIT. Toate drepturile Rezervate.
Termeni și condiții | Contact | Licența Creative Commons