LIMBAJUL DE PROGRAMARE C++ A. ALGORITMI A1. OBIECTELE CU CARE LUCREAZA ALGORITMII. 1. Date Datele pot fi: - numerice , care pot fi intregi sau reale ; - logice , care au doua valori TRUE (adevarat) si FALSE(fals) ; - sir de caractere , reprezinta un sir de caractere cuprins intre apostrofuri ex. 'mesaj' 2. Variabile Sunt urmatoarele tipuri de variabile: - variabile de tip intreg notate integer ; - variabile de tip real notate real ; - variabile de tip logic notate boolean ; - variabile de tip sir notate string ; Pentru ca un algoritm sa poata folosii o variabila aceasta trebuie declarata astfel: integer a, b; real c; string b. 3. Expresii O expresie este alcatuita din doi sau mai multi operanzi legati intre ei prin operatori. Operanzii reprezinta valorile care intra in calcul si care pot fii variabile sau constante. Operatorii desemneaza operatiile care se executa spre a obtine rezultatul. Pot fi aritmetici, relationali, logici 3.1. Operatori aritmetici + (adunare) ; - (scadere) ; * (inmultire) ; / (impartire) - div (impartire intreaga) - operanzii trebuie sa fie de tip intreg si furnizeaza rezultatul corect daca ambele valori ale operanzilor sunt naturale. Ex. 14 div 5 rezultatul va fi 2 (5 intra de 2 ori in 14) 1
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
LIMBAJUL DE PROGRAMARE C++
A. ALGORITMI
A1. OBIECTELE CU CARE LUCREAZA ALGORITMII.
1. Date
Datele pot fi:
- numerice , care pot fi intregi sau reale ;
- logice , care au doua valori TRUE (adevarat) si FALSE(fals) ;
- sir de caractere , reprezinta un sir de caractere cuprins intre apostrofuri ex. 'mesaj'
2. Variabile
Sunt urmatoarele tipuri de variabile:
- variabile de tip intreg notate integer ;
- variabile de tip real notate real ;
- variabile de tip logic notate boolean ;
- variabile de tip sir notate string ;
Pentru ca un algoritm sa poata folosii o variabila aceasta trebuie declarata astfel:
integer a, b;
real c;
string b.
3. Expresii
O expresie este alcatuita din doi sau mai multi operanzi legati intre ei prin operatori.
Operanzii reprezinta valorile care intra in calcul si care pot fii variabile sau constante.
Operatorii desemneaza operatiile care se executa spre a obtine rezultatul. Pot fi aritmetici,
- div (impartire intreaga) - operanzii trebuie sa fie de tip intreg si furnizeaza rezultatul corect daca
ambele valori ale operanzilor sunt naturale.
Ex. 14 div 5 rezultatul va fi 2 (5 intra de 2 ori in 14)
- mod (rest al impartirii) - operanzii trebuie sa fie de tip intreg si furnizeaza rezultatul corect daca
ambele valori ale operanzilor sunt naturale
Ex. 14 mod 5 rezultatul va fi 4 (restul impartirii lui 14 la 5 este 4)
3.2. Operatori relationali
<(mai mic); >(mai mare); =(egal); <>(diferit); <=(mai mic sau egal); >=(mai mare sau egal)
3.3 Operatori logici
NOT (negare) ; AND (si) ; OR(sau) ; XOR (sau exclusiv)
A2. OPERATIILE PE CARE LE EFECTUEAZA UN ALGORITM
1. Operatii de intrare / iesire
Operatia de intrare (citire) este read
Operatia de iesire (scriere) este write
Exemplu:
1
real a,b,c; // se declara variabilele a,b,c//
read a,b,c // se citesc variabilele a,b,c//
write a,b,c // se afiseaza valorile variabilelor a,b,c introduse de la tastatura//
2. Atribuiri
Prin operatia de atribuire se retine o anumita data intr-o variabila.
Tipul variabilei trebuie sa coincida cu tipul valorii atribuite, cu exceptia ca unei variabile de
tip real i se poate atribui o data de tip intreg.
Exemple de forma1:
integer a;
a:=10; // variabila a retine valoarea 10//
real b;
b:=9.55 //variabila b retine valoarea 9.55//
real c;
c:=8; // variabila c retine valoarea 8//
string d;
d:='limbajul C++' ; // variabila d retine valoarea de tip sir limbajul C++
Exemple de forma 2:
a) integer a,b;
a:=5 b:=10;
a:=b // variabilei a i se atribuie valoarea variabilei b //
Dupa aceasta operatie variabila a are valoarea 10 iar variabila b ramine cu valoarea 10
b) integer a,b;
a:=5 b:=10;
b:=a // variabilei b i se atribuie valoarea variabilei a //
Dupa aceasta operatie variabila a ramine cu valoarea 5 iar variabilei b i se atribuie valoarea 5
c) integer a;
a:=5;
a:=a+1
Dupa aceasta operatie variabilei a i se atribuie valoarea 6 (5+1=6)
Pentru a inversa continutul a doua variabile intre ele trebuie utilizata o variabila auxiliara care
realizeaza interschimbul de valori.
Exemplu:
integer a,b,m;
a:=1 b:=2;
m:=a //variabila m preia valoarea variabilei a si devine 1//
a:=b //variabila a preia valoarea variabilei b si devine 2//
b:=m //variabila b preia valoarea variabilei m si devine 1//
3. Operatii de decizie
Forma generala:
2
if expresie logica then operatia1 else operatia2 endif
Mod de executie: se evalueaza expresia logica, daca este adevarata se executa operatia 1, iar
daca este falsa se executa operatia 2
Exemplul1.
integer a, b;
read a read b
if a>b then write a else write b
endif
Se citesc valorile variabilelor a si b. Daca valoarea lui a este mai mare decit valoarea lui b se
afiseaza valoarea lui a, iar daca este invers se afiseaza valoarea lui b.
Exemplul 2.
Se citesc patru valori reale a,b,c,d si se evalueaza expresia:
a+b , c+d>0E = a-b , c+d=0 a*b , c+d<0
real a, b, c, d, rez;
read a, b, c, d
if c+d>0 then rez:=a+b
else
if c+d=0 then rez:=a-b
else
rez:=a*b
endif endif
write rez
B. PRINCIPIILE PROGRAMARII STRUCTURATE
1. Structura liniara
Exemplul1. Se citesc 2 valori si se afiseaza valoarea cea mai mare
real a, b;
read a, b
if a>b then write a else write b
endif
Exemplul 2. Se citesc 2 valori intregi a si b si se afiseaza media lor aritmetica
integer a, b
real medie
read a, b
medie:=(a+b)/2
write medie
3
2.Structura alternativa
Exemplul1. Se citeste o valoare intreaga. Daca aceasta este para se tipareste mesajul"am citit un
numar par"
integer a;
read a
if a mod 2 = 0 write 'am citit un numar par'
endif
Exemplul 2. Se citeste x numar real. Evaluati expresia:
x, x<0 2x 0≤x<10f= 3x 10≤x<100 4x x≥100
real x,f;
read x;
if x<0 then f:=x
else
if x<10 then f:2*x
else
if x<100 then f:=3*x
else f:=4*x
endif endif endif
write f
3. Structura repetitiva
3.1. Structura WHILE DO
Forma generala. Fie E o expresie si S o structura.
while E
do S
endwhile
Se evalueaza expresia logica E, daca este adevarata se executa structura S apoi se repeta
executia pina ce expresia logica devine falsa.
Exemplu. Se citesc numerele naturale n1 si n2 si se calculaeaza produsul lor fara a utiliza
operatorul de inmultire.
integer n1, n2, s, i;
read n1 read n2
s:=0 i:=1
while i <= n2 do
s:=s+n1
i:=i+1
endwhile
write s
4
3.2. Structura FOR
Forma generala. Fie o variabila i (variabila de ciclare) si doua valori intregi a(valoare initiala) si
b(valoare finala) si o structura S
for i:=a, b
S
repeat
Variabila de ciclare i ia valoarea initiala a, si se executa structura S pina ce se ajunge la valoarea
finala b
Exemplu. Se citeste numarul natural n si se efectueaza suma primelor n numere naturale
integer n, s, i;
read n
s:=0
for i:=1, n
s:=s+i
repeat
write s
3.3 Structura REPEAT UNTIL
Forma generala.
Fie o structura S si o expresie logica E
repeat
S
until E
Se executa structura S, se evalueaza expresia E, daca este falsa se executa din nou structura S,
iar daca este adevarata se trece mai departe
Exemplu. Calculul sumei primelor n numere naturale n>0
integer n, i, s;
read n
i:=1 s:=0
do
s:=s+i
i:=i+1
until i > n
write s
C. ELEMENTELE DE BAZA ALE LIMBAJULUI C++
Un program scris in C++ este alcatuit din una sau mai multe functii. Fiecare functie are mai multe
instructiuni in C++ care codifica algoritmul programului. Instructiunile unei functii reprezinta corpul
functiei si sunt cuprinse intre { }. Dupa fiecare instructiune din corpul functiei se pune semnul ;
5
Functiile de acelasi domeniu sunt grupate in fisiere header numite si directive.
La inceputul fiecarui program se specifica fisierele care contin functiile ce se utilizeaza in program
astfel: # include <numefisier.h>
Dupa specificarea directivelor trebuie scrisa functia radacina care se numeste main( ) sau void
main( ). Dupa numele directivelor sau a functiilor nu se pune semnul ;
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// }
{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(); }
11
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.
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() )
cout<<"Valoarea maxima citita este"<<" "<<max<<endl;
min=v[0];
for(i=1;i<=n;i++) if(v[i]<min) min=v[i]; cout<<"Valoarea minima citita este"<<" "<<min;
16
getch();}
1.2.2. ELEMENTE DISTINCTE.
Se citeste un vector cu n componente si se decide daca numerele citite sunt distincte (nu exista
doua numere egale) sau daca nu sunt distincte (exista doua numere egale).
Pentru a rezolva problema se procedeaza astfel:
- o variabila i retine indicele primei componente
- o variabila j retine indicele urmatoarelor componente
Ex: cand i=1 j=2,3,........n
cand i=2 j=3,4,........n
cand i=n j=n-1
- se initializeaza o variabila gasit cu valoarea logica 0
-- daca sunt gasite doua valori egale variabilei gasit i se atribuie vloarea logica 1
Exemplu.
#include<iostream.h>#include<conio.h>void main(){int v[10],i,j,n,gasit;cout<<"introduceti numarul de elemente n="<<" "; cin>>n;for(i=1;i<=n;i++)
{ cout<<"v["<<i<<"]="; cin>>v[i]; }
gasit=0;
for(i=1;i<=n ;i++)
for(j=i+1;j<=n ;j++)
if(v[i]==v[j]) gasit=1;
if(gasit) cout<<"Numerele nu sunt distincte";
else cout<<"Numerele sunt distincte";
getch();
}
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()
17
{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++)
clrscr();cout<<"Specificati numarul de elemente a multimii A"<<" "<<"m="; cin>>m;cout<<"Specificati numarul de elemente a multimii B"<<" "<<"n="; cin>>n;
Se determina multimea A-B la fel ca in cazul precedent, apoi se listeaza multimea B si in
continuare multimea A - B.
Exemplul4. Se citesc multimile A si B si se listeaza multimea C unde C=A∩B
Algoritmul de rezolvare este urmatorul:
Pentru fiecare element din multimea A se face testul daca apartine sau nu multimii B. Daca 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.
#include<iostream.h>#include<conio.h>void main(){int A[10],B[10],C[10],m,n,i,j,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++)
cout<<"Listez numerele in ordine crescatoare"<<endl; for(i=1;i<=n;i++) cout<<a[i]<<" ";
cout<<endl<<"Listez numerele in ordine descrescatoare"<<endl; for(i=n;i>=1;i--)cout<<a[i]<<" ";getch();}
1.3 APLICATII CARE LUCREAZA CU MATRICI.
1.3.1 INTERSCHIMBAREA A DOUA LINII INTRE ELE SAU A DOUA COLOANE
Pentru a interschimba 2 variabile intre ele utilizam o a treia variabila de manevra care am denumit-o temp si inca doua variabile x si y carora le atribuim ca valori numerele liniilor sau a coloanelor care dorim sa le interschimbam intre ele.
a) Interschimbarea a 2 linii
for(j=1;j<=n;j++) {
temp=a[x][j];
a[x][j]=a[y][j];
a[y][j]=temp ;
}
b) Interschimbarea a 2 coloane
for(i=1;i<=n;i++) {
temp=a[i][x];
a[i][x]=a[i][y];
a[i][y]=temp ;
}
Exemplu. Schimbarea a 2 coloane a unei matrici
#include<iostream.h>#include<conio.h>void main(){int i,j,m,n,a[10][10],x,y,temp;clrscr();cout<<"Introduceti numarul de linii"<<" "<<"n=";cin>>m;cout<<"Introduceti numarul de coloane"<<" "<<"n=";cin>>n;
cout<<"Introduceti numerele coloanelor care doriti sa le interschimbati"<<endl;cout<<"x=";cin>>x;cout<<"y=";cin>>y;for(i=1;i<=n;i++) { temp=a[i][x]; a[i][x]=a[i][y]; a[i][y]=temp ; }cout<<endl;
cout<<"Noua matrice are forma:"<<endl;for(i=1;i<=m;i++){for(j=1;j<=n;j++){ cout<<a[i][j]<<' '; } cout<<endl;}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.
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();
23
}
Observatie. Se pot scrie mai multe siruri de cuvinte daca declaram o matrice de tip char
char a[10][20] se pot scrie 10 siruri cu cate 20 caractere fiecare sir (fara spatiu)
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();}
2.2. Functii si algoritmi care lucreaza cu siruri de caractere.
Pentru a utiliza functiile care lucreaza cu sirurile de caractere trebuie inclusa directiva
#include<string.h>
2.2.1. Functia strlen.
Are rolul de a returna lungimea unui sir(fara a lua in considerare caracterul nul).
Forma generala : strlen(nume sir);
Exemplu: Se citeste un sir de caractere si se afiseaza numarul de caractere a sirului
Exemplul2. Se citesc n cuvinte si se ordoneaza alfabetic crescator si descrescator.
#include<iostream.h>#include<conio.h>#include<string.h>void main(){char a[100][10],temp[10];int i,n,gasit;cout<<"Introduceti numarul de persoane "; cin>>n;cout<<"Scrie numele persoanelor"<<endl;
cout<<"Ordinea alfabetica crescatoare a persoanelor scrise este:"<<endl;for(i=0;i<n;i++) cout<<a[i]<<endl;
cout<<"Ordinea alfabetica descrescatoare a persoanelor scrise este:"<<endl;for(i=n;i>=0;i--) cout<<a[i]<<endl;
getch();}
2.2.8. Functiile strlwr si struwr
strlwr(s1) - converteste toate literele sirului s1 in litere micistruwr(s2) - converteste toate literele sirului s2 in litere mari
Exemplu:
#include<iostream.h>#include<conio.h>#include<string.h>void main(){char a[100]="este acesta un sir?", b[100]="Acest Lucru Nu Ma Deranjeaza";cout<<strupr(a)<<endl<<strlwr(b); getch();}
2.2.9. Functia strstr
Forma generala: strstr(sir1,sir2)
Functia identifica daca sirul sir2 este subsir al sirului sir1
2.2.10. Functia strcspn
Forma generala: strcspn(s1,s2)
Functia returneaza numarul caracterelor din sirul s1 care nu se gasesc in sirul s2
2.2.11. Functia spn
Forma generala: strspn(s1,s2)
Functia returneaza numarul caracterelor din sirul s1 care se gasesc in sirul s2
2.2.12. FUNCTII UTILIZATE PENTRU CONVERSIA VALORILOR NUMERICE IN SIR
La utilizarea acestor functii se introduce directiva #include<stdlib.h>
a) Functia atof - converteste un sir catre tipul double
b) Functia atold - converteste un sir catre tipul long double
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
30
- 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)
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(); }
31
1.2. Declararea fisierelor text memorate pe suport magnetic.
Cand se lucreaza cu fisiere pe suport magnetic in program trebuie inclusa directiva:
#include<fstream.h> daca utilizam acesta directiva poatei fi scoasa <iostream.h>
Pentru a lucra usor asupra fisierelor sunt definite comenzile:
- in - deschide fisierul pentru citire- out - deschide fisierul pentru scriere- ate - salt la sfirsitul fisierului dupa deschiderea acestui- app - deschide fisierul pentru a scrie la sfirsitul lui- trunc - daca fisierul care se deaschide exista in locul lui se creaza altul- nocreate - daschide fisierul daca acesta exista (nu se creaza altul)- noreplace - daca fisierul exista el poate fi deschis numai pentru consultare- binary - fisier binar. Se utilizeaza constructorul inplicit al clasei ofstream(); apoi se utilizeaza metoda open in forma generala
Inainte de a lucra cu un fisier acesta trebuie declarat. Forma generala a declaratiei:
In cazul in care numele fisierului trebuie citit de la tastatura declaratia fisierului trebuie sa contina
numele sau si trebuie plasata dupa citirea sirului respectiv astfel:
char nume_fisier[20] ;
cout<<"Numele fisierului este ";cin>>nume_fisier ;
fstream f(nume_fisier, ios::out);
Dupa deschiderea si prelucrarea unui fisier acesta trebuie inchis astfel:
nume_fisier.close() , in cazul nostru f.close()
Exemplu de creare a unui fisier de tip text in c:\ :
#include<iostream.h>
#include<fstream.h>
#include<iomanip.h>
#include<conio.h>
void main()
{
fstream f("c:\\fis.txt",ios::out);
getch(); }
1.3. Prelucrarea fisierelor de tip text
Prelucrarea unui fisier se face dupa urmatorul algoritm:
while(daca nu este sfirsit de fisier)
{
32
citeste ;
prelucreaza ;
}
Pentru a preciza sfirsitul de fisier care se testeaza in paranteza de dupa while se scrie:
! nume_fisier.eof()
Atentie! Functia eof() nu citeste ci doar testeaza daca anterior a fost detectat 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)
Exemplul2. Creez acelasi fisier dar for fi scrise si caracterele albe. Aceasta sa realizat deoarece a fost introdusa comanda resetiosflags(ios::skipws)