Documente Academic
Documente Profesional
Documente Cultură
Teorie C
Teorie C
1. Citiri , scrieri.
- pentru realizarea citirii se utilizeaza : cin>>nume variabila
cin>>a>>b>>c - citeste variabilele a, b, c
- pentru realizarea scrierii se utilizeaza: cout<<nume variabila
cout<<a<<b<<c - scrie variabilele a, b, c
Exemplul 1:
#include<iostream.h>
#include<conio.h>
void main()
{
int L,l,h;
clrscr();
// sterge ecranul //
cout<<"Lungimea=" ; cin>>L;
cout<<"Latimea="; cin>>l;
cout<<"Inaltimea="; cin>>h;
getch();
// in C++ sub DOS permite vizualizarea rezultatului programului//
}
Exemplul 2:
#include<iostream.h>
#include<conio.h>
void main()
{
int L,l,h,v;
clrscr();
cout<<"Lungimea=" ; cin>>L;
cout<<"Latimea="; cin>>l;
cout<<"Inaltimea="; cin>>h;
1
v=L*l*h;
cout<<"Volumul este"<<" "<<v;
getch();
}
2. TIPURI DE DATE.
2.1. TIPURI INTREGI.
- int (tip intreg care ocupa 16 biti)
- long (tip intreg care ocupa 32 de biti)
- unsigned int sau unsigned long (valorile datelor sunt fara semn, adica pozitive)
- char (tip caracter, aceste date se pun intre doua apostrofuri ' ' )
2.2. TIPURI REALE
- float (tip real care retin si numerele zecimale , ocupa 32 biti)
ATENTIE!! IN C++ LA SCRIEREA UNUI NUMAR ZECIMAL IN LOCUL VIRGULEI SE PUNE PUNCT
- double ( tip real care ocupa 64 biti)
- long double (tip real care ocupa 80 biti)
2.3. CONSTANTE
Pentru a da un nume constantelor se foloseste declaratia const care are forma:
const [tip] nume=valoare ;
[tip] - tipul constantei ; nume -numele constantei ; valoare - valoarea constantei
Exemplu:
const float a=12.6 constanta este de tip float, poarta denumirea a, are valoarea 12,6
3. OPERATORI C++
3.1. OPERATORI ARITMETICI.
+ (adunare) ; - (scadere) ; * (inmultire) ; / (impartire) ; % (restul impartirii intregi)
3.2. OPERATORI RELATIONALI.
< (mai mic) ; <= (mai mic sau egal) ; > (mai mare) ; >= (mai mare sau egal)
3.3. OPERATORI DE EGALITATE.
== (egalitate) ; != (inegalitate)
3.4. OPERATORI DE INCREMENTARE SI DECREMENTARE.
++ (incrementare) ; -- (decrementare)
Operatorii pot fi : prefixati (in fata operandului) situatie in care variabila este
incrementata sau decrementata inainte ca valoarea retinuta de ea sa intre in calcul
postfixati
(dupa
operand)
situatie
in
care
variabila
este
clrscr();
cout<<"x=" ; cin>>x; cout<<"|x|="<<" "<<(x>=0?x:-x);
getch();
}
2. INSTRUCTIUNEA IF.
Forma generala:
if (expresie) instructiune1 else instructiune2
Se evalueaza expresia, daca este adevarata se executa instructiune1, daca este falsa
se executa instructiune2
Exemplul 1. Calculeaza maximul dintre 2 numere citite
#include<iostream.h>
#include<conio.h>
void main()
{
int a,b,max;
clrscr();
cout<<"a=" ; cin>>a;
cout<<"b="; cin>>b;
if(a>b) max=a;
else max=b;
cout<<"numarul mai mare este "<<" "<<max;
getch();
}
Exemplul 2. Se citesc coeficientii a, b, c ale unei ecuatii de gradul doi si se precizeaza
natura radacinilor si semnul lor.
#include<iostream.h>
#include<math.h>
#include<conio.h>
void main()
{
float a,b,c,d,s,p;
clrscr();
cout<<"a=";cin>>a;cout<<"b=";cin>>b;cout<<"c=";cin>>c;
d=b*b-4*a*c; s=float(-b/a); p=float(c/a);
cout<<"Discriminantul ecuatiei D="<<d<<endl;
cout<<"Produsul radacinilor P="<<p<<endl;
cout<<"Suma radacinilor S="<<s<<endl;
if(d<0) cout<<"Ecuatia nu are solutii reale";
else
{ if(d==0) {if(s>0) cout<<"Ecuatia are 2 solutii reale egale si pozitive";
else cout<<"Ecuatia are 2 solutii reale egale si negative";
}
else
if(p>0)
{if(s>0) cout<<"Ecuatia are 2 solutii reale pozitive";
else cout<<"Ecuatia are 2 solutii reale negative";
}
else cout<<"Ecuatia are 2 solutii reale de semne opuse";
5
}
getch();
}
3. INSTRUCTIUNEA SWITCH.
Forma generala a instructiunii:
switch (expresie) {
case e1 : secventa 1 ; break;
case e2 : secventa 2 ; break;
..............................................
case en : secventa n ; break;
default : secventa n+1;
}
Se evalueaza expresie , daca este egala cu una din expresiile e1, e2, ...en se executa
secventa corespunzatoare expresiei s1, s2, ...sn, iar daca nu este egala cu una din
aceste expresii se executa numai secventa n+1
Exemplul 1.
#include<iostream.h>
#include<conio.h>
void main()
{
int i;
clrscr();
cin>>i;
switch(i)
{ case 1: cout<<"Am citit 1";break;
case 2: cout<<"Am citit 2";break;
default: cout<<"Am citit altceva";
}
getch();
}
Exemplul2. Se afiseaza natura sol. unei ec. de gr.2 in functie de semnul lui .
#include<iostream.h>
#include<conio.h>
void main()
{
int a,b,c,d;
clrscr();
cout<<"a=";cin>>a;cout<<"b=";cin>>b;cout<<"c=";cin>>c;
d=b*b-4*a*c;
if(d>=0)
{
switch(d)
{
case 0: cout<<"Ecuatia are o solutie dubla";break;
default:cout<<"Ecuatia are doua solutii reale diferite";
}
}
else cout<<"Ecuatia nu are solutii reale";
}
4. INSTRUCTIUNEA WHILE.
Aceasta instructiune permite programarea ciclurilor cu test initial.
Forma generala este:
while (expresie)
{....... instructiuni }
Se evalueaza expresie, daca este adevarata se executa {....instructiuni} dupa care se
revine la evaluarea expresiei , daca este falsa se trece la instructiune urmatoare.
Exemplu. Executarea unui program intr-un ciclu repetat pana la apasarea unei anumite
taste(se introduc coeficientii unei ec. de gr.2 si se afiseaza solutiile de "n" ori pina la
apasarea tastei "q")
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
float a,b,c,d,x1,x2,x;
int tasta;
while(tasta!='q')
{
clrscr();
cout<<"a=" ; cin>>a;
cout<<"b="; cin>>b;
cout<<"c=" ; cin>>c;
d=float( b*b-4*a*c);cout<<"discriminantul ecuatiei este"<<" "<<sqrt(d)<<endl;
if(d<0) {cout<<"ecuatia nu are solutii reale";}
else
if (d>0)
{ x1=(-b+sqrt(d))/(2*a) ; x2=(-b-sqrt(d))/(2*a);
cout<<"x1="<<x1<<endl;cout<<"x2="<<x2<<endl;}
else
{x=float(-b/2*a);cout<<"ecuatia are solutie unica x=x1=x2="<<" "<<x<<endl;}
cout<<"Pentru continuare apasa o tasta"<<endl;
cout<<"Pentru iesire apasa tasta q";
tasta=getch();
}
}
5. INSTRUCTIUNEA DO WHILE.
Instructiunea permite programarea ciclurilor cu test final.
Forma generala este:
do
{ instructiuni }
while ( expresie )
Se executa { instructiuni } , se evalueaza expresie, daca este adevarata se executa din
nou {instructiuni}, iar daca este falsa executia instructiunii do se termina.
Exemplu: Se citeste numarul natural n si se afiseaza suma primelor n numere naturale
#include<iostream.h>
#include<conio.h>
void main()
{
long n, tasta,s=0,i=1;
while(tasta!='q')
{
clrscr();
cout<<"n=";cin>>n;
do
{
s=s+i; i=i+1;
}
while(i<=n);
cout<<"Suma primelor n numere naturale este"<<" "<<s<<endl;
cout<<"Pentru a continua apasa o tasta"<<endl<<"Pentru a iesi din program apasa
tasta 'q'";
tasta=getch();
}
}
6. INSTRUCTIUNEA FOR
Se utilizeaza cel mai fracvent pentru programarea ciclurilor cu test initial.
Forma generala:
for( eINITIALIZARE; eTEST; eINCREMENTARE) instructiune
eINITIALIZARE - se evalueaza o singura data pentru initializarea variabilei de ciclare inaintea
primului ciclu ;
eTEST - este evaluata inaintea fiecarui ciclu pentru a testa daca se executa instructiunea
subordonata si reprezinta conditia de iesire din ciclu;
eINCREMENTARE - se evalueaza la sfirsitul fiecarui ciclu pentru incrementarea variabilei de
ciclare.
Principiul de executie:
Se evalueaza eINITIALIZARE (numai la prima rulare), se evalueaza eTEST , daca este adevarata
se executa instructiunea subordonata for, se evalueaza eINCREMENTARE si se revine la
evaluarea expresiei eTEST. Daca eTEST este falsa se trece la urmatoarea instructiune (se
termina executarea instructiunii for)
Observatie. Daca expresia eTEST este vida se executa un ciclu infinit. Pentru a iesi din
acest ciclu : in DOS se tasteaza CTRL+PAUSE
in WINDOWS se tasteaza CTRL +ALT + DEL
Exemplul 1. Se introduce de la tastatura numarul n si se calculeaza suma si produsul
primelor n numere
#include<iostream.h>
#include<conio.h>
void main()
{
N2
int i,n,tasta;
long double a,b;
while(tasta !='q') {
clrscr();
cout<<"Introduceti numarul"<<"";cin>>n;
a=b=1;
for(i=2;i<=n;i++)
{a*=i;b+=i;}
cout<<"suma="<<b<<endl;cout<<"produsul="<<a<<endl;
cout<<"Pentru iesire apasa tasta q";
tasta=getch(); }
}
Observatie. Variabila n poate fi definita la inceput fara a mai trebui introdusa de la
tastatura utilizand #define n valoare (comanda se scrie inainte de void main() )
10
11
7. INSTRUCTIUNI DE SALT
7.1. INSTRUCTIUNEA BREAK
Se utilizeaza pentru intreruperea neconditionata a unei secvente si numai in 2 contexte:
1) in instructiunea switch pentru a marca incheierea secventei de instructiuni asociate
unei selector case ;
2) intr-o instructiune de ciclare (while, do while, for) pentru a determina iesirea fortata din
ciclul respectiv.
Observatie. Instructiunea break intrerupe executia de ciclare doar a blocului in care se
afla, fara a afecta celelalte blocuri de ciclare in cazul ciclurilor imbricate.
7.2. INSTRUCTIUNEA CONTINUE
Se utilizeaza numai in blocul instructiunilor de ciclare pentru a intrerupe executia iteratiei
curente (sarind peste instructiunea urmatoare) dupa care:
- in cazul instructiunilor while si do while se continua cu testarea conditiei de ciclare;
- in cazul instructiunii for se continua cu evaluarea expresiei eINCREMENTARE (actualizarea
contorilor) si apoi a expresiei eTEST (testarea conditiei de ciclare)
7.3. INSTRUCTIUNEA GO TO
Are ca efect intreruperea secventei curente si continuarea executiei de la instructiunea
care este specificata dupa go to.
Observatie. Instructiunile de salt se utilizeaza rar in C++ deoarece incalaca principiile
programarii structurate, pentru abandonarea executiei unui ciclu se utilizeaza in general
functiile exit() sau return.
12
si 9 , v[0], v[1],.........v[9]
- float
a[10], b[20] ;
13
15
16
1.2.3. MULTIMI.
In cadrul unei multimi un element apare o singura data (o multime nu poate avea 2 valori
egale). Elementele unei multimi sunt memorate intr-o variabila de tip vector.
Aplicatii:
Exemplul 1. Se citeste o multime A care contine n elemente numere intregi , se citeste un
numar intreg e , se verifica daca numarul e apartine multimii a.
#include<iostream.h>
#include<conio.h>
void main()
{
int A[10],n,e,i,j,gasit;
clrscr();
cout<<"Introduceti numarul de elemente n a multimii"<<" "<<"n=" ; cin>>n;
for(i=1;i<=n;i++) { cout<<"A["<<i<<"]="; cin>>A[i]; }
cout<<"Introduceti numarul considerat"<<" "<<"e="; cin>>e;
gasit=0;
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
if(A[i]==e) gasit=1;
if(gasit) cout<<"Numarul"<<" "<< e<<" apartine multimii";
else cout<<"Numarul"<<" "<<e<<" nu apartine multimii";
getch();
}
Exemplul2. Se citeasc multimile A si B si se afiseaza multimea C unde C = A- B
#include<iostream.h>
#include<conio.h>
void main()
{
int A[10],B[10],C[10],m,n,i,j,z,k,gasit;
clrscr();
cout<<"Specificati numarul de elemente a multimii A"<<" "<<"m="; cin>>m;
cout<<"Specificati numarul de elemente a multimii B"<<" "<<"n="; cin>>n;
cout<<"Introduceti elementele multimii A"<<endl;
for(i=1;i<=m;i++) { cout<<"A["<<i<<"]="; cin>>A[i];};
cout<<"Introduceti elementele multimii B"<<endl;
for(j=1;j<=n;j++) { cout<<"B["<<j<<"]="; cin>>B[j];};
k=0;
for(i=1;i<=m;i++)
{
gasit=0;
for(j=1;j<=n;j++)
if(A[i]==B[j])gasit=1;
if(!gasit) C[k++]=A[i];
}
cout<<"A-B"<<" "<<"={"<<" ";
for(i=0;i<k;i++) cout<<C[i]<<" "; cout<<"}" ;
17
getch();
}
Algoritmul de rezolvare este urmatorul:
Pentru fiecare element din multimea A se face testul daca apartine sau nu multimii B.
Daca nu apartine este adaugat unei multimi C care initial este vida (variabila k cu valoare
initiala 0 retine indicele componentei din C care va memora urmatorul element ce se
adauga multimii C. In final se tipareste multimea C.
18
20
1
A[2]
4
A[3]
2
A[4]
3
A[2]
2
A[3]
4
A[4]
- se efectueaza a doua parcurgere si se schimba A[2] cu A[3] (deoarece 3 > 2), iar
vectorul va arata astfel:
1
A[1]
2
A[2]
3
A[3]
4
A[4]
getch(); }
1.3.2. SPIRALA
Se citeste o matrice patratica (numarul de linii=numarul de coloane=n). Se cere sa se
afiseze elementele tabloului in ordinea rezultata prin parcurgerea acestuia in spirala,
incepand cu primul element din linia 1 in sensul acelor de ceasornic.
23
2. SIRURI DE CARACTERE
2.1. Citirea / scrierea sirurilor de caractere.
Inainte de citirea unui sir de caractere acesta trebuie declarat. Pentru a declara un sir de
caractere se utilizeaza functia:
char nume sir[nr.elemente sir]
Exemplu: char sir1[100] - sa declarat sirul cu numele sir1 care poate lista 100 caractere
Pentru citirea sirurilor de caractere se utilizeaza functia:
cin.get(vector de caractere, int nr, char='\n')
Observatie. Dupa tastarea unui sir de caractere , la apasarea tastei Enter se intrerupe
citirea . Daca dorim sa introducem mai multe siruri de caractere se utilizeza cin.get() astfel
char s1[20],s2[20];
cin.get(s1,20];
cin.get();
cin.get(s2,20);
cout<<s1<<endl<<s2;
Daca ar lipsii functia cin.get() a doua citire nu ar putea fi efectuata, deoarece la apasarea
tastei Enter in memorie este pastrat caracterul '\n' , fapt care duce la intreruperea citirii.
Exemplu:
#include<iostream.h>
#include<conio.h>
void main() {
char s1[20],s2[20];
cin.get(s1,20); cin.get(); cin.get(s2,20);
clrscr();
cout<<s1<<endl<<s2;
getch();
}
Observatie. Se pot scrie mai multe siruri de cuvinte daca declaram o matrice de tip char
char a[10][20]
Exemplu:
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main(){
char a[10][20]; int n,i;
cout<<"Nr.cuvinte ";cin>>n;
for(i=0;i<n;i++) cin>>a[i];clrscr(); for(i=0;i<n;i++) cout<<a[i]<<endl;
getch();}
24
25
27
28
3. TIPUL INREGISTRARE
3.1. Inregistrari simple.
Pentru gruparea variabilelor de mai multe tipuri utilizate pentru o inregistrare se foloseste:
struct nume structura
{ tip variabila nume variabila, nume variabila ;
tip variabila nume variabila;
} lista variabile;
Un exemplu de stuctura:
struct elev
{ char nume[15],prenume[20];
int telefon;
float media;
}inr1,inr2;
Exemplu:
#include <stdlib.h>
#include <iostream.h>
#include<conio.h>
struct elev
{
char nume[15],prenume[20],clasa[10];
int tel;
float med;
} inr;
void main()
{
cout<<"Nume ";cin>>inr.nume;
cout<<"Prenume ";cin>>inr.prenume;
cout<<"Telefon ";cin>>inr.tel;
cout<<"Clasa ";cin>>inr.clasa;
cout<<"Media generala ";cin>>inr.med;
cout<<"Am citit:"<<endl
<<inr.nume<<" "<<inr.prenume<<endl
<<inr.tel<<endl
<<inr.clasa<<endl
<<inr.med;
getch();
}
30
31
F. FISIERE
Fisierul este o colectie de date de acelasi fel stocate pe un suport extern care are un mune
si o extensie (al carei nume este in functie de tipul fisierului).Ex: nume.exe (fisier
executabil) ; nume.dbf (fisier baza de date,utilizat in fox), etc.
1. FISIERE TEXT
Aceste fisiere se caracterizeaza prin urmatoarele:
- datele sunt memorate sub forma unei succesiuni de caractere
- caracterele sunt memorate in codul ASCII
- fisierul se termina cu caracterul EOF
- este format din una sau mai multe linii care se termina cu caracterul newline (\n)
- o variabila speciala numita pointer retine intotdeauna un octet al fisierului
1.1. Citiri / scrieri cu format
Acestea sun caracterizate prin:
- latime - width - se utilizeaza la scriere si are rolul de a stabili numarul de caracatere
utilizate pentru afisarea unei date;
- precizie - precision - se utilizeaza la scriere atunci cand se foloseste o variabila reala,
stabileste numarul de zecimale care vor fi afisate pentru valoare;
- caracterul de umplere - fill - se utilizeaza la scriere in cazul in care data propriuzisa
ocupa mai putini octeti decat latimea si precizeaza caracterul care se afiseaza in spatiile
neocupate;
- alinierea - left sau right - se utilizeaza cand data ocupa mai putin decat latimea si se
precizeaza unde anume sa fie afisata - stanga sau drepta - salt sau nu peste caractere albe - se utilizeaza la citire
* Pentru formatarea citirii / scrierii se utilizeaza varibilele:
precision , wihth, fill
Accesul la aceste varibile se face cu ajutorul unor functii speciale numite manipulatori.
Pentru a le putea utiliza in program trebuie inclusa directiva #<iomanip.h>
Manipulatorii sunt inclusi in expresiile de citire/scriere astfel:
- setw (int) - stabileste latimea int pe care este afisata variabila
- setprecision(int) - stabileste numarul de zecimale int care sunt afisate
- setfill(char) - stabileste caracterul de umplere char a pozitiilor ramase libere
32
Exemplu.
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
void main()
{
double a=0.123456789;
cout<<setw(20)<<setfill('$')<<setprecision(2)<<a;
getch();
}
Afisarea se poate face pe 20 pozitii ; pe pozitiile ramase libere se afiseaza caracterul $ ,
variabila a va fi afisata cu 2 zecimale.
*Pentru formatarea intrarilor / iesirilor se utilizeaza variabila:
flags care utilizeaza comenzile:
- skipws - sunt sarite caracterele albe care preced valoarea ce trebuie citita
- left - datele se tiparesc aliniate la stanga
- right - datele se tiparesc aliniate la dreapta
- internal - se fiseaza semnaul la stinga si numarul la drepta
- dec - conversie in zecimal
- oct - conversie in octal
- hex - conversie in hexazecimal
- showbase - afisarea indicatorului de baza
- showpoint - forteaza afisarea punctului zecimal
- uppercase - in cazul afisarii in hexazecimal se vor utiliza literele mari (A,B,..F)
- showpos - valorile afisate sunt precedate de semn
- scientific - afisarea valorilor se face prin utilizarea formei stiintifice (1e-8)
- fixed - afisarea valorilor se face prin utilizarea formai normale
Variabila flags se utilizeaza in doua moduri:
setiosflags(masca) - pentru setarea bitilor accesati
resetiosflags(masca) - pentru resetarea bitilor accesati
Pentru a avea acces la comanzile cu care lucreaza flags numele lor vor fi precedate de
ios::
masca este formata din una sau mai multe grupe de comenzi de forma:
ios::comanda separate intre ele de operatorul logic | (SAU-pe biti)
Exemplu de masca:
(ios::internal | ios::showpos | ios::right)
33
Exemplu:
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#include<math.h>
void main()
{
double a,b,c,d,e,f;
cout<<"Introduceti primul numar "<<" "<<"a=";cin>>a;
cout<<"Introduceti al doilea numar "<<" "<<"b=";cin>>b;
c=a/b;
d=a*b;
e=sqrt(d);
f=d*d;
cout<<endl;
cout<<"Rezultatul impartirii "<<" "<<"a : b ="
<<setw(100)<<setfill(' ')<<setprecision(10)
<<setiosflags(ios::left|ios::showpos|ios::fixed)<<c;
cout<<endl;
cout<<"Rezultatul inmultirii "<<" "<<"a x b ="
<<setw(100)<<setfill(' ')<<setprecision(10)
<<setiosflags(ios::left|ios::showpos|ios::fixed)<<d;
cout<<endl;
cout<<"Radicalul inmultirii este "<<" "
<<setw(100)<<setfill(' ')<<setprecision(20)
<<setiosflags(ios::left|ios::showpos|ios::fixed)<<e;
cout<<endl;
cout<<"Patratul inmultirii este "<<" "
<<setw(100)<<setfill(' ')<<setprecision(20)
<<setiosflags(ios::left|ios::showpos|ios::fixed)<<f;
getch();
}
34
35
eof()
sfarsitul de fisier
Exemple de programe:
Exemplul1. Creez un fisier fis.txt in d:\ cu intrare de la tastatura (scriu in el de la
tastatura).In acest exemplu nu sunt scrise caracterele albe(deci intre cuvintele scrise nu
este spatiu.Ca sa termin scrierea apas consecutiv tastele CTRL+Z (echivalent cu EOF)
#include<iostream.h>
#include<fstream.h>
#include<iomanip.h>
#include<conio.h>
void main()
{
fstream f("d:\\fis.txt",ios::out);
char x;
while(cin>>x) f<<x;
f.close();
}
Exemplul2. Creez acelasi fisier dar for fi scrise si caracterele albe. Aceasta sa realizat
deoarece a fost introdusa comanda resetiosflags(ios::skipws)
#include<iostream.h>
#include<fstream.h>
#include<iomanip.h>
#include<conio.h>
void main()
{
fstream f("d:\\fis.txt",ios::out);
char x;
while(cin>>resetiosflags(ios::skipws)>>x) f<<x;
f.close();
getch();
}
36
37
38
2. Fisiere binare.
Caracteristici:
- fisierele sunt alcatuite din mai multe inregistrari de acelasi tip (int , struct, etc)
- datele sunt memorate in format intern, iar fisierele se termina tot cu EOF
- pentru deschiderea unui fisier binar se utilizeaza ios::binary
- fisierele lucreaza cu variabile de tip pointer. O astfel de variabila retine o anumita adresa
a unei alte variabile. Ea se declara in felul urmator:
int a, *adr_a=&a , variabila *adr_a a fost initializata cu adresa variabilei a
Variabila *adr_a este de tip poiner
Pentru a obtine adresa unei variabile , variabila este precedata de operatorul &
Daca avem o variabila a de tip int* si o variabila b de tip float* nu este permisa atribuire
de tipul a=b , aceasta atribuire se poate face astfel a=(int*)b
- scrierea unei variabile de tip pointer adr_p intr-un fisier se face utilizand:
nume_fisier.write((char*) adr_p,sizeof(p))
- citirea unei variabile de tip poiter adr_p dintr-un fisier se face utilizand:
nume_fisier.read((char*)adr_p,sizeof(p))
Prin aceste comenzi de fapt se scrie respectiv citeste continutul variabilei p , numarul de
caractere scrise sau citite fiind date de lungimea variabilei p prin comanda sizeof(p).
Exemplul1. Se creaza un fisier binar cu n inregistrari in care fiecare inregistrare retine
datele personale a unei persoane(numele,prenumele,ocupatia,varsta)
39