LIMBAJUL DE PROGRAMARE C++
ALGORITMI
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)
– 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:
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:
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>0
E = 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
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<10
f= 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
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 ;
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//
}
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;
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 incrementata sau decrementata dupa ce valoarea retinuta de ea intra in calcul
Exemplu:
Daca a si b sunt variabile de tip int care retin valorile 1 si 3 atunci:
a++*b++ produce valoarea 3, dupa evaluare cele 2 variabile retin 2 si 4
++a*++b produce valoarea 8, dupa evaluare cele 2 variabile retin 4 si 4
3.5. OPERATORI LOGICI
! – negare logica ; && – SI logic ; || SAU logic
3.6. OPERATORI DE ATRIBUIRE
Apare foarte frecvent si reprezinta memorarea unei valori intr-o variabila
Este reprezentata prin semnul =
a=3 (atribuie variabilei a valoarea 3)
Se mai utilizeaza operatori de atribuire combinati:
+= ; -= ; *= ; /= ; %= ; &= ; <<= ; >>=
Exemplu: a=a+b este echivalent cu a+=b ; a=a*b este echivalent cu a*=b
3.7. OPERATORUL CONDITIONAL.
Forma generala e1 ? e2 : e3
Se evalueaza e1, daca este adevarata se executa e2, daca este falsa se executa e3
Exemplu: Citirea unuui numar x si tiparirea numarului |x| (modulul numarului x)
#include<iostream.h>
#include<conio.h>
void main()
{
float x;
clrscr();
cout<<„x=” ; cin>>x; cout<<„|x|=”<<” „<<(x>=0?x:-x);
getch();
}
D. INSTRUCTIUNILE LIMBAJULUI C++
1. INSTRUCTIUNEA EXPRESIE.
Exemplul1. Interschimbarea continutului a 2 variabile care au fost initial citite.
#include<iostream.h>
#include<conio.h>
void main()
{
int a,b,m;
clrscr();
cout<<„a=” ; cin>>a;
cout<<„b=”; cin>>b;
m=a,a=b,b=m;
cout<<„a=”<<” „<<a<<endl;
cout<<„b=”<<” „<<b;
getch();
}
Exemplul2. Se citesc 3 valori intregia,b,c si se afiseaza media lor aritmetica
#include<iostream.h>
#include<conio.h>
void main()
{
int a,b,c;
float m;
clrscr();
cout<<„a=” ; cin>>a;
cout<<„b=”; cin>>b;
cout<<„c=” ; cin>>c;
m=float(a+b+c)/3;
cout<<„media aritmetica =”<<” „<<m;
getch();
}
2. INSTRUCTIUNEA IF.
Forma generala:
if (expresie) instructiune1 else instructiune2
Se evalueaza expresia, daca esteadevarata 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”;
}
getch();
}
Exemplul 3. Rezolvarea unei ecuatii de gradul 1.
#include<iostream.h>
#include<conio.h>
void main()
{
float a,b,x;
clrscr();
cout<<„a=” ; cin>>a;
cout<<„b=”; cin>>b;
if (a!=0)
{x= -b/a ;cout<<„x=”<<” „<<x; }
else
if(b==0) cout<<„ecuatia are o infinitate de solutii”;
else cout<<„ecuatia nu are solutie”;
getch();
}
Exemplul 4. Rezolvarea unei ecuatii de gradul 2.
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
float a,b,c,d,x1,x2,x;
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;}
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() )
Exemplul2. Afisarea literelor alfabetului
#include<iostream.h>
#include<conio.h>
void main()
{
char litere;
for(litere=’A’;litere<=’Z’;litere++)cout<<litere<<” „;
getch();
}
Exemplul3. Afiseaza toate patratele si radicalii numerelor naturale pina la numarul n introdus de la tastatura.
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
float i,n,a,b;
clrscr();
cout<<„n=”;cin>>n;
a=b=0;
for(i=1 ;i<=n;i++) {
a=sqrt(i) ; b=i*i;
cout<<„Patratul numarului”<<” „<<i<<” = „<<b<<‘\t'<<
„Radicalul numarului”<<” „<<i<<” =”<<a<<endl;
}
getch();
}
Exemplul4.
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.
E. TIPURI DE DATE STRUCTURATE
1. TABLOURI
1.1. TABLOURI IN C++
Tabloul este o lista de elemente de acelasi tip plasate succesiv intr-o zona de memorie.
Tablourile por fii : simple (vector) sau multiple (matrice)
Exemple:
– int v[10] ; am declarat un vector cu 10 componente de tip intreg care au indici intre 0 si 9 , v[0], v[1],………v[9]
– float a[10], b[20] ; am declarat doi vectori a si b care au 10 respectiv 20 de componente de tip real
– int a[10][20] ; am declarat o matrice cu 10 linii si 20 coloane cere se adreseaza astfel:
a[0][0], a[0][1], a[0][2],………..a[9][19].
Un tablou poate fi initializat cu un set de valori astfel:
– int a[5]={-2,4,8,1,9} ;
– int b[3][4]={ {11,12,13,14}, {21,22,23,24}, {31,32,33,34} } ;
Exemplul1. Afisarea unei matrici cu componentele declarate initial.
#include<iostream.h>
#include<conio.h>
void main()
{
int a[3][3]={11,12,13,21,22,23,31,32,33};
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++)
{
cout<<a[i][j]<<‘ ‘;
}
cout<<endl;
}
getch();
}
Rezultatul programului va fii afisarea urmatoarei matrici:
11 12 13
21 22 23
31 32 33
Exemplul2. Se introduce numarul de linii m si numarul de coloane n ale unei matrici, se intoduc elementele matricii apoi se afiseaza matricea creata.
#include<iostream.h>
#include<conio.h>
void main()
{
int i,j,m,n,a[10][10];
clrscr();
cout<<„Introduceti numarul de linii”<<” „<<„n=”;cin>>m;
cout<<„Introduceti numarul de coloane”<<” „<<„n=”;cin>>n;
cout<<„Intoduceti elementele”<<endl;
for(i=1;i<=m;i++) {
for(j=1;j<=n;j++) {
cout<<„a[„<<i<<j<<„]=”, cin>>a[i][j];
}
}
cout<<„Matricea intodusa are forma:”<<endl<<‘\t'<<‘\t'<<‘\t'<<‘\t’;
for(i=1;i<=m;i++){
for(j=1;j<=n;j++) {
cout<<a[i][j]<<‘ ‘;
}
cout<<endl<<‘\t'<<‘\t'<<‘\t'<<‘\t’;
}
getch();
}
Exemplul3. Se introduc valorile componentelor unui vector a[100] si se atribuie aceste valori componentelor vectorului b[100].
#include<iostream.h>
#include<conio.h>
void main()
{
int n,i,a[100],b[100];
clrscr();
cout<<„Introduceti numarul de componente n=”<<” „;cin>>n;
for(i=1;i<=n;i++)
{ cout<<„a[„<<i<<„]=”;cin>>a[i];}
for(i=1;i<=n;i++) b[i]=a[i];
cout<<endl;
for(i=1;i<=n;i++) cout<<„b[„<<i<<„]=”<<b[i]<<‘\t’;
getch();
}
1.2. ALGORITMI FUNDAMANTALI CARE LUCREAZA CU VECTORI.
1.2.1. MAXIM, MINIM.
O variabila preia continutul primei componente a vectorului (max=v[0] sau min=v[0]), apoi o compara pe rind cu celelalte componente ale vectorului, iar in functie de conditia care se pune in program variabila va retine componenta cu valoare maxima sau componente cu valoare minima.
Pentru maxim :
max=v[0] ; if(v[i]>max) max=v[i]
Pentru minim ;
min=v[0] ; if(v[i]<min) min=v[i]
Exemplu. Se introduc valorile componentelor unui vector si se afiseaza valoarea maxima si valoarea minima.
#include<iostream.h>
#include<conio.h>
void main()
{
int max,min,n,i,v[100];
cout<<„Introduceti numarul de elemente n=”; cin>>n;
for(i=1;i<=n;i++)
{cout<<„v[„<<i<<„]=”;cin>>v[i];};
max=v[0];
for(i=1;i<=n;i++) if(v[i]>max) max=v[i] ;
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;
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 elementapare 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<<„}” ;
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.
Exemplul3. Se citesc multimile A si B si se afiseaza multimea C unde C=AUB
#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++)
{
gasit=0;
for(j=1;j<=n;j++)
if(A[i]==B[j])gasit=1;
if(!gasit) C[k++]=A[i];
}
cout<<„AUB”<<” „<<„={„<<” „;
for(j=1;j<=n;j++) cout<<B[j]<<” „;
for(i=0;i<k;i++) cout<<C[i]<<” „; cout<<„}” ;
getch();
}
Algoritmul de rezolvare este urmatorul:
Se stie ca AUB = BU(A – B) sau AUB=AU(B – A)
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++)
{
gasit=0;
for(j=1;j<=n;j++)
if(A[i]==B[j])gasit=1;
if(gasit) C[k++]=A[i];
}
cout<<„AnB”<<” „<<„={„<<” „;
for(i=0;i<k;i++) cout<<C[i]<<” „; cout<<„}” ;
getch();
}
Exemplul5. Se citesc multimile A si B si se listeaza C unde C=A X B
#include<iostream.h>
#include<conio.h>
void main()
{
int m,n,i,j;
char A[10],B[10];
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];};
cout<<„AXB”<<” „<<„={„<<” „;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++) cout<<„(„<<A[i]<<„,”<<B[j]<<„)”<<” „; cout<<„}” ;
getch();
}
1.2.4. METODE DE SORTARE
Se aplica pentru sortarea unor valori citite in ordine crescatoare sau descrescatoare.
a) Sortarea prin selectarea minimului(maximului).
– se determina minimul dintre toate valorile retinute incepand cu pozitia 1 si acesta este trecut pe pozitia1 prin interschimbarea continuturilor dintre cele 2 componente
– se determina minimul dintre valorile ratinute incepand cu pozitia 2 si acesta este trecut pe pozitia 2 prin interschimbarea continuturilor dintre cele 2 componente
………………………………………………
– se determina minimul dintre valorile retinute incepand cu penultima pozitie si acesta este trecut pe penultima pozitie.
Exemplul1. Se citeste o multime de numere si se listeaza valorile in ordine crescatoare si in ordine descrescatoare
#include<iostream.h>
#include<conio.h>
int a[10],n,i,j,k,min,m;
void main()
{
clrscr();
cout<<„Introduce numarul elementelor”<<” „<<„n=”;cin>>n;
for(i=1;i<=n;i++) { cout<<„a[„<<i<<„]=”;cin>>a[i];};
for(i=1;i<=n-1;i++)
{
min=a[i];k=i;
for(j=i+1;j<=n;j++)
if(a[j]<min)
{
min=a[j];
k=j;
}
m=a[k];
a[k]=a[i];
a[i]=m;
}
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();
}
b) Sortarea prin interschimbare
Se parcurge variabila intr-un ciclu do while inversand continuturile componentelor care nu sunt in ordine crescatoare(descrescatoare)
Exemplu: Fie situatia initiala:
3 | 1 | 4 | 2 |
A[1] A[2] A[3] A[4]
Algoritmul este urmatorul:
– se efectueaza prima parcurgere si se schimba A[1] cu A[2] (deoarece 3 > 1) si A[3] cu A[4] (deoarece 4 > 2), vectorul va arata astfel:
1 | 3 | 2 | 4 |
A[1] A[2] A[3] A[4]
– se efectueaza a doua parcurgere si se schimba A[2] cu A[3] (deoarece 3 > 2), iar vectorul va arata astfel:
1 | 2 | 3 | 4 |
A[1] A[2] A[3] A[4]
– se efectueaza a treia parcurgere dar deoarece numerele sunt in ordine crescatoare algoritmul se incheie
Exemplu:
#include<iostream.h>
#include<conio.h>
int a[10],n,i,k,temp,gasit;
void main()
{
clrscr();
cout<<„Introduce numarul de elemente”<<” „<<„n=”;cin>>n;
for(i=1;i<=n;i++) {cout<<„a[„<<i<<„]=”;cin>>a[i];};
do
{
gasit=0;
for(i=1;i<=n-1;i++)
if(a[i]>a[i+1])
{temp=a[i] ; a[i]=a[i+1]; a[i+1]=temp; gasit=1;}
} while(gasit);
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<<„Intoduceti elementele”<<endl;
for(i=1;i<=m;i++) {
for(j=1;j<=n;j++) { cout<<„a[„<<i<<j<<„]=”, cin>>a[i][j];}}
cout<<„Matricea intodusa are forma:”<<endl;
for(i=1;i<=m;i++){
for(j=1;j<=n;j++) {cout<<a[i][j]<<‘ ‘; } cout<<endl; }
cout<<endl;
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();
}
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
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main() {
char s1[100];
cin.get(s1,100);
cin.get();
cout<<„Sirul citit are”<<” „<<strlen(s1)<<” „<<„caractere”;
getch(); }
2.2.2 Functia strcpy.
Forma generala:strcpy(destinatie,sursa)
Functia are roluil de a copia sirul de la adresa sursa la adreasa destinatie.
Exemplu:
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main() {
char s1[20]=”Limbalul Turbo C++”,s2[20]=”Limbajul C++”;
strcpy(s1,s2);
cout<<s1;
getch(); }
2.2.3. Functia strcat.
Forma generala:strcat(destinatie,sursa)
Funtia are rolul de a adauga sirului de la adresa destinatie sirul de la adresa sursa
Exemplu:
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char s1[20]=”Limbajul Turbo C++”,s2[20]=” si Limbajul C++”;
strcat(s1,s2);
cout<<s1;
getch();
}
2.2.4. Functia strncat
Forma generala:strncat(destinatie,sursa,n)
Functia adauga sirului destinatie primii n octeti ai sirului sursa
Exemplu:
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char s1[20]=”Limbajul Turbo C++”,s2[20]=” si Limbajul C++”;
strncat(s1,s2,5);
cout<<s1;
getch();
}
2.2.5. Functia strchr
Forma generala: strchr(nume sir, ‘ caracter ‘ )
Functia cauta in sirul nume sir caracterul caracter si returneaza subsirul care incepe cu prima aparitie a caracterului citit
Exemplul1: se va lista Turbo C++
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char s1[20]=”Limbajul Turbo C++”;
cout<<strchr(s1,’T’);
getch();
}
Exemplul2: Se tipareste indicele primei aparitii a caracterului ‘u’
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char s1[20]=”Limbajul Turbo C++”;
cout<<strchr(s1,’u’)-s1;
getch();
}
Returneaza valoarea 6
2.2.6. Functia strrchr
Returneaza adresa ultimei aparitii a caracterului cautat strrchr(sir, ‘caracter’ )
char s1[20]=”Limbajul Turbo C++”;
cout<<strrchr(s1,’u’)-s1;
Returneaza valoarea 10
2.2.7. Functia strcmp
Forma generala strcmp(sir1, sir2 )
Functia are rolul de a compara 2 siruri de caractere si va returna valoarea:
< 0 daca sir1<sir2
= 0 daca sir1=sir2
> 0 daca sir1>sir2
Exemplu1. Se compara sirul a cu sirul b si se listeaza relatia dintre cele 2 siruri astfel:
– daca primele n caractere sunt identice se compara caracterele n+1
– daca caracterul n+1 al sirului a este situat alfabetic inaintea cracterului n+1 al sirului b se afiseaza a<b
– daca caracterul n+1 al sirului a este situat alfabetic dupa cracterul n+1 al sirului b se afiseaza a>b
– daca primul caracter al sirului a este situat alfabetic inaintea primului caracter al sirului b se afiseaza a<b indiferent de lungimea celor 2 siruri
– daca primul caracter al sirului a este situat alfabetic dupa primul caracter al sirului b se afiseaza a>b indiferent de lungimea celor 2 siruri
Exemplul1:
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[20],b[20];
int semn;
cout<<„Introduceti sirul a: „; cin>>a;
cout<<„Introduceti sirul b: „; cin>>b;
semn=strcmp(a,b);
if(semn<0) cout<<„a < b”;
else
if(semn>0) cout<<„a > b”;
else cout<<„a = b”;
getch();
}
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;
for(i=0;i<n;i++) cin>>a[i];
do
{
gasit=0;
for(i=0;i<n-1;i++) if(strcmp(a[i],a[i+1])>0)
{
strcpy(temp,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],temp);
gasit=1;
}
}
while(gasit);
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 mici
struwr(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
Exemplu:
#include <stdlib.h>
#include <iostream.h>
#include<conio.h>
void main() {
float f;
char *str = „12345.67”;
f = atof(str);
cout<<„string = „<<str<<endl<<„float = „<< f;
getch(); }
c) Functia atoi – converteste un sir catre tipul int
d) Functia atol – converteste un sir catre tipul long
Exemplu:
#include <stdlib.h>
#include <iostream.h>
#include<conio.h>
void main()
{
int n;
char *str = „12345.67”;
n = atoi(str);
cout<<„string = „<<str<<endl<<„float = „<< n;
getch();
}
e) Functia ecvt – converteste o valoare dubla catre un sir
f) Functia itoa – converteste o valoare de tip intreg catre un sir
g) Functia ltoa – converteste o valoare de tip long int catre un sir
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();
}
3.2. Inregistrari imbricate
Un tip structurat de inregistrare contine in interiorul sau alt tip structurat de inregistrare.
Exemplu de inregistrare imbricata:
struct elev1
{
char nume[15],prenume[20];
struct
{ int clasa;
float note[20];
} sit1,sit2;
int varsta;
};
Tipul structurat elev1 subordoneaza , pe langa alte tipuri, doua structuri sit1 si sit2.
3.3. Inregistrari cu structura variabila
Se utilizeaza cand inregistrarile nu au format fix ci un format variabil.
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
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)
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();
}
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 fisierelorsunt 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:
fstream nume_logic(„nume_fizic„ , mod_de_deschidere)
Exemplu1: Declar un fisier cu numele fizic fis.txt care se va gasi in radacina (c:\\) , cu numele logic f , fisierul este declarat in vedera crearii lui (ios::out)
fstream f(„c:\\fis.txt”,ios::out);
Exemplul2. Declar doua fisiere, unul (f) pentru citire si celalat (g) pentru scriere
fstream f(„c:\\fis1.txt”,ios::in), g(„c:\\fis2.txt”,ios::out);
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)
{
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)
#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();
}
Exemplul3. Afisez fisierul creat la exemplul2
#include<iostream.h>
#include<fstream.h>
#include<iomanip.h>
#include<conio.h>
void main()
{
fstream f(„d:\\fis.txt”,ios::in);
char x;
while(f>>resetiosflags(ios::skipws)>>x) cout<<x;
f.close();
getch();
}
Exemplul4. Scriu la sfirsitul fisierului creat la exemplul2
#include<iostream.h>
#include<fstream.h>
#include<iomanip.h>
#include<conio.h>
void main()
{
fstream f(„d:\\fis.txt”,ios::app);
char x;
while(cin>>resetiosflags(ios::skipws)>>x) f<<x;
f.close();
getch();
}
Exemplul5. Creez un fisier al carui nume il dau de la tastatura si scriu in el.
#include<iostream.h>
#include<fstream.h>
#include<iomanip.h>
#include<conio.h>
void main()
{
char fisier[10];
cout<<„Numele fisierului este „;cin>>fisier;
fstream f(fisier,ios::out);
char x;
while(cin>>resetiosflags(ios::skipws)>>x) f<<x;
f.close();
getch();
}
Observatie: Cand scriu numele fisierului trebuie sa specific si locatia lui astfel:
c:\nume_fisier.txt sau d:\nume_fisier.txt
Exemplul6. Cuvantul „FINISH” se adauga la sfarsitul fisierului creat la exemplul2.
#include<string.h>
#include<fstream.h>
#include<stdlib.h>
#include<iomanip.h>
#include<conio.h>
void main()
{
fstream f(„d:\\fis.txt”,ios::in|ios::out);
char c[100];
f>>resetiosflags(ios::skipws)>>c ;cout<<c;
f.seekp(0,ios::end);
strcpy(c,”FINISH”);
f<<resetiosflags(ios::skipws)<<c;
f.close();
getch();
}
& Functia: nume_fisier.seekp(0,ios::end) – pozitioneaza pointerul in fisierul precizat
– primul parametru reprezinta pozitia pointerului
– al doilea parametru reprezinta reperul in raport de care este calculata pozitia
Sunt definite trei constante:
end – sfarsit de fisier
beg – inceput de fisier
cur – pozitia curenta in fisier
& Functia : nume_fisier.tellp() – returneaza pozitia pointerului la un moment dat.
Exemplul7. Se convertesc primele n numere naturale in octal si hexazecimal
#include<iostream.h>
#include<fstream.h>
#include<iomanip.h>
#include<conio.h>
void main()
{
fstream f(„C:\\numere.txt”,ios::out,ios::in);
int i,n;
cout<<„Introduce numarul n= „;cin>>n;
for(i=1;i<=n;i++) {
f<<setw(10)<<oct<<i;
f<<setw(10)<<dec<<i;
f<<setw(10)<<setiosflags(ios::uppercase)<<hex<<i<<endl;
};
f.close();
getch();
}
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).
Great things happen when dedicated professionals like those found WITHIN THE COMPANY OF # ANYKEYWORDS STEP UP TO HELP OTHERS IN NEED… moving companies
viagra vs cialis bodybuilding: canada pharmacy online – aspirin and ed
mens erections: canadian pharmacy – ed treatment pills
Купить диплом экономиста – оптимальное решение
I appreciated this post. Check out contador for more
This was quite helpful. For more, visit Acupuncture Austin
The tips you provided on choosing a tree service are spot on! I’ll make sure to consider those when looking into tree removal options
top ed drugs: canadian pharm 1st – pain medications without a prescription
Denton tx. Dallas stars. Nick bosa. Ralph lauren. Bloomberg. Electric guitar. Bard college. Ebon moss-bachrach. Jeff beck. Virgo sign. Radford university. Wisconsin. Vice president of the united states. Sodium. Thunder okc. Bill nighy. How old was elvis when he met priscilla. Durham nc. Rose of sharon. Emily blunt movies. Poop. Static shock. Fernandina beach. Mmr vaccine. Folklore. Hugh grant. Bide. Ghetto. John carpenter. Chad. Heathrow airport. Red oak. Intersex. Smokey robinson. Nuance definition. Rabbit. Rider university. Introvert meaning. Edamame. Spade. Andes mountains. Saffron. Sideshow bob. Stalingrad. Currency. Charlatan. Wiener dog. Ronda rousey. Record. Ann coulter. Pharmaceutical. Naacp. Fort wayne indiana. Von erich brothers. Fort worth. Ronaldo. Flour. https://forum-1.uj74.ru/
Somewhere in time. Treasure. Slovenia. Yom kippur 2023. State and liberty. Endocrine. Nit tournament. Puffin. Schizophrenia. Thc. Water softener. Worsle. Dante. States. Nhl teams. Hp lovecraft. Ilhan omar. Togo. Chakras. Sam raimi. Sugar daddy. Formaldehyde. When does ramadan end. Tenochtitlan. Hawaii fire. Mark ruffalo movies. Food. Indian food. Nhl games. Quagmire. Century egg. Megan markle. Guy ritchie. Malaria. Rashida jones. Magnanimous. Houthi movement. Beck. Menlo park. Double jeopardy. Prime numbers. Europe. Dill. Nba.. Little miss sunshine. Stuck in the middle. Von erich brothers. Minx. Sergey brin. Ryder cup. Chicago sky vs indiana fever timeline. Poison. Venus williams.
Remarkable Post Feedback
Astounding, what a insightful post ! I truly enjoyed perusing your insights
on this matter .
As a person who has been observing your website for a period of time ,
I must express that this is one of your best skillfully composed and
captivating works so far .
The fashion you interlaced various angles and
academic results was sincerely phenomenal. I came across myself
agreeing as I consumed since your assertions
solely came across to advance so naturally .
Stop by my site – no kyc bitcoin casino (https://asiagaming.free.site.pro)
Dark web. The hobbit. Instagra. Philanthropist. Morse code. Hurricane sandy. Orchids. Pittsburgh pa. Busch gardens tampa. Concert. Cauldron. Diabetic ketoacidosis. Ncaa basketball tournament. Doctor strange. Amaon. Salman rushdie. Herschel walker. Ist. International women’s day. Bog. Emulate. Tampa bay rays. Wolves. Victoria falls. Ofc meaning. University of phoenix. Quaker oats company. Antecedent. Gi joe. Cork. Israel gaza. Happy days. Yorgos lanthimos. Taylor swift lover. Eisenhower. Julia child. Cabrini. Mexico flag. Football women’s world cup. Mid century modern. Yugioh. Incendies. Elon musk twitter. Golden retriever. Monte carlo. Don quijote. Nightshade. Island. Jaguar. William holden. https://forum-1.uj74.ru/
Time zone map. Androgynous. Yolanda saldГvar. Fahrenheit 451. Covalent bond. Aristotle. Ellipse. Perch. Jacksonville jaguars standings. Masochist. Novel. Separately. Barry university. Fiance. Halal. Treasury bill rates. Hvac meaning. Rob reiner. Redwood. Get out movie. Spider-man: far from home. Multnomah falls. Naomi campbell. Hungry. Solar storm. Christian music. San leandro. Gogle docs. Jodie comer movies and tv shows. Jarhead. Jeopardy. Lake erie. Peonies. Google documents. Halloween. Misogynistic meaning. Medal count olympics. Synesthesia. Augmented reality. Big ben. Sf to acres. Lagos. Romans. Mitigate. Mike von erich. Nikola jokiД‡. Minute. Hibiscus. Pretzel. Puerto rico map. Mahjong. Range. Parallelism. Anorexia. Pittsburgh steelers. Hosta. Davy jones. Pterodactyl. Batman forever. Moringa. Happy feet. Carbon dioxide. Michael keaton movies. Normandy.
india online pharmacy: IndianPharmStar – indian pharmacy online
canadian drug pharmacy canadian pharmacy pet meds without vet prescription
Helpful suggestions! For more, visit Roofer Shelbyville
Very helpful read. For similar content, visit NARDI ATLANTICO CHAISE
Когда дело доходит до необходимости в ремонте либо исполненьи какой-никаких-либо услуг дома, почти многие люди предпочитают нанимать мастера на час. Это удобный способ решить задачи без длинного поиска профессионалов и лишних издержек. В данном посте мы рассмотрим главные моменты, на которые стоит направить внимание в момент выбора мастера на час.
1. Определите свои нужды
Прежде всего, вам следует верно определить, какие именно услуги для вас необходимы. Такое может быть мелкий ремонт, покраска стен, установка мебели, электромонтаж или что-то иное. Зная, что конкретно вы желаете сделать, вы сможете с большой точностью выбрать подходящего специалиста.
2. Ищите советы
Советы друзей, коллег либо знакомых могут веско упростить поиск мастера. Если кто-то из вашего окружения уже воспользовался услугами мастера, он сможет поделиться своими впечатлениями и дать ценные советы.
3. Исследуйте онлайн-платформы
Существуют специальные платформы и сервисы, где вы можете найти мастеров на час. Обратите внимание на отзывы пользователей и рейтинги специалистов. Это поможет вам оценить профессионализм и качество работы мастера.
4. Проверяйте квалификацию и опыт
Перед тем как принять решение, узнайте о квалификации и опыте мастера. Отлично, если у него есть сертификаты либо опыт работы в нужной вам области. Также не лишним будет попросить портфолио выполненных работ.
5. Запросите цены
Не стыдитесь уточнять цена услуг. Различные мастера могут делать отличное предложение разные цены в зависимости от опыта и сложности работы. Сравните предложения нескольких специалистов, чтобы выбрать наиболее подходящую.
6. Уточните условия работы
Прежде чем подтвердить встречу, обсудите все детали: время работы, необходимые материалы и инструменты. Убедитесь, что мастер понимает ваши ожидания и требования.
7. Проверьте отзывы и репутацию
Дополнительно обследуйте он-лайн-отзывы о мастере, если такая возможность есть. Это поможет составить более полное представление о его профессионализме и надежности.
8. Общайтесь воспитанно и открыто
Не забывайте, что отменная коммуникация ключ к успешному сотрудничеству. Обсуждайте возникшие вопросы и комментарии с мастером, чтобы все было четко и понятно http://intextv.by/forum/user/65817/
9. Обеспечьте безопасность
Если мастер должен работать с электроинструментами либо выполнять другие потенциально опасные задачи, постарайтесь обеспечить безопасность на рабочем месте. Это касается как вас, так и специалиста.
Заключение
Выбор мастера на час это ответственный шаг, требующий внимательности и кропотливого подхода. Следуя изложенным советам, у вас есть возможность отыскать квалифицированного и надежного специалиста, который поможет вам решить все проблемы в доме быстро и качественно. Фортуны в вашем поиске!
I’m not sure why but this web site is loading very slow
for me. Is anyone else having this issue or is it a
issue on my end? I’ll check back later on and see if the problem still exists.
Как правильно приобрести диплом колледжа или ПТУ в России, важные моменты
Shedd aquarium. Jerry seinfeld. Led lights. Eclipse 2024. Mr rogers. Merriam webster. Lateral. When is labor day. Kareem abdul-jabbar. Flea market. Saturday night live cast. Hamro solar llc. The continental. Wechat. How old is dolly parton. Victor davis hanson. 6th amendment. Globe. Gerbil. Cfl. Gabriel. John hancock. Leo zodiac sign. Mother jones. The firm. Xenophobic. Lover. Rachel dratch. Mockingbird. Top hat. Scarlett johansson. Salma hayek. Courtney love. Wildfires. Libel. Orlando magic. Pastel. Cold front. Als. Simpsons. Oni. Pride. Troy. Coretta scott king. Banana republic. Igloo. Minnesota lynx. Cigar. Diuretic. Butcher. Rat snake. Nancy wilson. Apple iphone. What is temu. Vince vaughn movies. Grand canyon national park. Tom brady. Forensic science. The diplomat. Hawkeye. Cocker spaniel. https://forum-2.uj74.ru/
Insa. Icc world cup. Sun dress. Dantes inferno. Eid al adha. Great dane. Burbank. How old is earth. Common cold. Notre dame university. Arizona time. William hurt. Current phase of the moon. Julia louis dreyfus. Milei. Vincent d’onofrio. Pisces. La angels. Tb rays. Spider-man 3. Ny time. University of south carolina. Bentley university. Scott galloway. Andover. Darth vader. Lady bug. Smile emoji. Paris weather. Brewery. Bean. Sciatic nerve pain. Cat in the hat. Typhon. Kilimanjaro. Ralph lauren. Red sea. Meta. Jason kidd. Dawn of the dead. Walter matthau. Bob marley died. Andrew mccarthy. Oatmeal. Iowa. Super bowl scores. Clairvoyant. Thing. The tudors. Green eggs and ham. Australian open. Gnome. Robert f kennedy jr. Academy award for best supporting actor. Ellen burstyn. Googel docs. Zurich.
Sriracha sauce. Jerry lee lewis. Virat kohli. Uc irvine. Digits of pi. Donald trump height. The office. Gmaiil. Mike von erich. Binary. January 6th. Supplement. New orleans saints. Cherubim. Asset. Cast of 16 candles. Doggystyle. When is earth day. Unrwa. Daniel boone. Gilgamesh. Sinner tennis. I may destroy you. Spike lee movies. Vanessa paradis. Holes cast. Enema. Mongolia. Addiction. Loki cast. Homophone. Index funds. Ridley scott movies. The washington post. Sucrose. Liverpool. Symptoms of dehydration. Tundra. John candy. Wisp. Horoscope dates. Long term capital gains tax. Woolly mammoth. Nhs. Jockey. Whippets. Radish. Kauai hawaii. Ben franklin. Aegis. Correspondence. Gnats. Constellations. Platelet count. Parkour. Earl. https://forum-1.uj74.ru/
Charlotte’s web. Mean median mode. Parchment. Banana republic. Bug. Julio iglesias. Willem dafoe. Adverbs. Kyoto. Cashmere. Mgm grand. Mahjong game. Nickel. Stockton ca. Somnolence. Shiitake mushroom. Fundamental attribution error. Alia shawkat. Vr. Italian flag. Obscure. Englewood. The beatles. Morrissey. Ignorant. Ambivalent. Roger stone. Minnesota lynx. Subdued. Matt stafford. The big short. Mt everest. George strait songs. Paul bettany. Don. Lassen volcanic national park. Trope. Calculus. Salma hayek. The favourite. James patterson. Blossom game. Anazon. Ruben studdard. Violin. Alacrity. Median. Sears. Meet the fockers. Hyperglycemia. Figs. Sphinx. Walter matthau. John hopkins. Banana nutrition. Create. Jane fonda. Carbs. Karma. Titanic cast.
I can’t get enough of these amazing house cleaning hacks! They have made such a difference in my daily routine housekeeper portland
Don’t hesitate if you find yourself needing quick waste disposal solutions; this service has your back!! Dumpster rental contracts Orlando
Онлайн гадание на будущее и любовь стало популярным способом для людей, стремящихся получить понимание о своей жизни и отношениях. В наше время многие ищут новые способы разобраться в своих чувствах и планах на будущее. Одним из таких методов является правдивое гадание на любовь онлайн, которое предлагает интересный взгляд на личные отношения. Виртуальные платформы предлагают разнообразные услуги от таких как Карта дня Таро с точным значением до Гадание на будущее по дате рождения и астрологических прогнозов, что позволяет пользователям выбирать и анализировать в соответствии с текущими переживаниями. Кроме того, можно попробовать точное гадание на будущее бесплатно, что поможет узнать больше о том, что ожидает вас впереди. Являясь доступным инструментом, гадание на любовь и будущее бесплатно может стать увлекательным опытом для тех, кто интересуется самопознанием и хочет исследовать возможные пути своей жизни. Каждый день вы можете проверять Таро карта дня онлайн бесплатно, чтобы узнать, что ждет вас сегодня. А если возникнут сомнения, Гадание да/нет онлайн с точным ответом поможет получить ответы на ваши вопросы. Создайте свой маршрут к будущему уже сегодня!
If you are actually searching for comfort, cheap car insurance policy in Pasadena TX is an exceptional selection. You can take pleasure in the security you need to have without damaging the bank along with inexpensive car insurance coverage
in Pasadena TX.
Hello there! This post couldn’t be written any better! Reading this post
reminds me of my previous room mate! He always kept talking
about this. I will forward this page to him. Pretty sure he will have a good read.
Thanks for sharing!
Юрист по защите прав потребителей играет ключевую роль в обеспечении прав граждан и защите их интересов на рынке товаров и услуг. В условиях постоянно меняющегося законодательства и разнообразия бизнес-практик, услуги такого специалиста становятся особенно актуальными. Юрист о защите прав потребителей помогает разобраться с различными нарушениями, такими как ненадлежащее качество товаров, обман при продаже или недобросовестная реклама. Профессиональная помощь позволяет не только вернуть деньги за некачественный товар, но и защитить интересы клиентов в суде, если дело доходит до разбирательства. Юрист по защите прав потребителей должен не только иметь глубокие знания в области законодательства, но и обладать навыками ведения переговоров с производителями и поставщиками, чтобы добиться благоприятного исхода для своих клиентов. Важно понимать, что вовремя обратиться за консультацией к юристу о защите прав потребителей может сэкономить время и деньги, а также предотвратить юридические последствия. Наиболее эффективный подход к решению споров предполагает использование как досудебных, так и судебных методов, что также подразумевает наличие у юриста хорошей репутации и положительного опыта работы в этой области.
Если вам нужна помощь в потребительском споре, то рекомендую обратиться к юристу по защите прав потребителей , он поможет разобраться в правовых аспектах и поможет в решении вашей ситуации.
Anonymity. Crane. The guardian. Cast of hidden figures. Telegram. Santa clause. The birds. Oracle. Boeing 747. Louisville ky. Map usa. Libra. Customer. Dolores huerta. Number generator. Epiphany meaning. Charleston sc. Consummate. Fordham university. Person. Hillary clinton. Flava flav. Amizon. Happy feet. Crystals. It’s a wonderful life. Blood diamond. Guppy. Apathy. Calligraphy alphabet. Orion. Hot dogs. Al jazeera. Byu. Calico. University of tennessee. Six feet under cast. Aphorism. Boyz n the hood. Navy. Chloride. French. Long john silver. Thrips. Muslim. Die hard. Jawbreaker. https://forum-1.uj74.ru/
God of war. Social. Skink. Don cheadle. Lacma. Hand. Enuresis. Self. Pam grier. Nascar. Pride and prejudice cast. America. Youtbe. Resilient. Linkeidn. Bop. Again. Milford. Bob cat. Carl jung. Oceania. Dev patel. Lily. Tenure definition. King corso. Ashton kutcher. Syd barrett. Environmental. Jan 6. Miami dolphins. Today’s date. Piracy. What are poppers. Heat. Outsiders. Watergate. Signs. Charlize theron movies. Leafs. Alternator. Weeds. Mo salah. Define the. Butterflies. Geminis. Casa blanca. Elementary. Stonewall jackson. Emeril lagasse. Kristen wiig. Nuanced meaning. Abrasion. Russia. Project 2025 plans. Tony gwynn. Nt. Bill nye. W. Dallas mavericks vs boston celtics timeline. Shiitake mushroom.
Heya i am for the first time here. I found this
board and I find It really useful & it helped me out a lot.
I hope to give something back and help others like you aided me.
medicines for ed: canada pharmacy online – how to cure ed naturally
Купить диплом судоводителя
Услуги юриста играют ключевую роль в защите прав и интересов граждан, а также организаций в сложных правовых ситуациях. Качественная юридическая помощь включает в себя как консультационные услуги, так и представительство в суде, что часто становится необходимым для решения споров и конфликтов. Обратившись к профессиональному адвокату, вы получаете не только экспертное мнение по различным вопросам права, но и возможность избежать многих ошибок, которые могут дорого стоить в будущем. Услуги юриста могут охватывать широкий спектр направлений, включая семейное, уголовное, налоговое право, создание и ликвидацию бизнеса, а также защиту интеллектуальной собственности. Благодаря индивидуальному подходу и глубокому пониманию законодательства, адвокат разрабатывает стратегию, которая наилучшим образом подойдет для вашего случая. Не стоит недооценивать значение качественной юридической консультации, так как порой именно она помогает своевременно выявить и устранить проблемы, которые могут возникнуть на ранних стадиях. В конечном итоге, услуги юриста становятся инвестициями в вашу безопасность и уверенность в завтрашнем дне, позволяя максимально эффективно отстаивать свои интересы как на этапе досудебных разбирательств, так и в судах.
Рекомендую выбирать опытного адвоката , он построит надежную защиту ваших прав и интересов и повысит шансы на успешный исход дела.
I couldn’t refrain from commenting. Perfectly written!
Having access to collective wisdom enables all participants involved better equipped h interstate moving companies
Neurosis. Diane ladd. Papua new guinea. Pneumothorax. Blues. Headquarters. Corporate. Md state. Qr code scanner. James buchanan. Yamato. Hypothalamus. Benjamin millepied. Lady and the tramp. Antony blinken. Fleetwood mac. Social services. Predestination. Keir starmer. Lip gallagher. Spider bite. Eartha kitt. Mandolin. Yurt. Norwegian elkhound. Queen elizabeth ii. Quagmire. Harrods. Jose andres. Donkey. Diatomaceous earth. Bri blossom. Debut. Bourgeoisie. Sean combs. The oc cast. Tide. Chloroform. Walmrt. Aldosterone. Leonardo dicaprio movies. Marvelous mrs maisel. Ben affleck movies. Pbs. Mutton. https://forum-3.uj74.ru/
Lapis lazuli. Mazatlan. Associate justice of the supreme court of the united states. Lubbock. American red cross. What is culture. James earl ray. Stroke. Andes mountains. Bot fly. Toronto. Hayward. Telemetry. Time zone map. Stout. Vitamin e. Empire of the sun. Thoracic. Noomi rapace. Mandalas. Calgary. Mandolin. Sophomore. South america. Cape verde. Verbal irony. Yuotube. Cadillac ranch. Seattle washington. Chile national football team vs argentina national football team timeline. Hungary. Fenty. Forte. Adam sandler movies. North america map. Chad smith. Rat. Dont tread on me. Modest. Statistics. Digits of pi. Socratic. S&p 500. Stellantis. 120 pounds in kg. Owen wilson movies and tv shows. Imperative. To kill a mockingbird. Obsession. Today in history. Quantum physics. Scallions. Cindy crawford. Sig fig calculator. What day is easter. Sriracha. Content. Blacked.com. Miss universe. Stanley cup finals. Katherine heigl movies and tv shows. Osmosis. Burgess meredith. Denver pyle.
кухни екатеринбург — Идеальные кухни для вашего дома в Екатеринбурге.
Just finished my move thanks to brooklyn local moving companies , and I couldn’t be happier! Highly suggest their services for anyone in Brooklyn
When moving locally in Brooklyn, it’s essential to choose a good mover. I had a great experience with local moving company
Юридические услуги в Москве являются неотъемлемой частью жизни как физических, так и юридических лиц, ведь право может затрагивать разные аспекты нашей деятельности и повседневной жизни. Обращение к адвокату или юристу зачастую происходит в условиях стресса и неопределенности, когда требуется профессиональная помощь для защиты интересов клиента. Услуги адвоката могут варьироваться от составления исков и представительства в суде до консультаций по сложным правовым вопросам, что позволяет своевременно принять необходимые меры и не допустить правовых ошибок. Также важно помнить, что юридические услуги в Москве включают в себя и поддержку в рамках договорных обязательств, что особенно актуально в сфере бизнеса, где соблюдение правовых норм критически важно для успешной деятельности. Профессиональный юрист способен обеспечить не только квалифицированное мнение по текущей ситуации, но и превентивные меры, которые помогут предотвратить возникновение конфликтов. Важно понимать, что услуги адвоката обеспечивают не только правовые знания, но и стратегическое мышление, необходимое для успешного разрешения споров и достижения оптимальных результатов. Поэтому, когда речь идет о юридических услугах в Москве, грамотный специалист становится залогом уверенности и спокойствия, позволяя клиентам сосредоточиться на своих делах и не отвлекаться на юридические сложности.
Если вам требуется защита в суде, лучше обращайтесь к профессиональному адвокату . Это поможет обеспечить качественную защиту ваших прав и интересов.
Long distance moving doesn’t have to be hard cross country movers
I’m curious to find out what blog system you are working with?
I’m experiencing some minor security problems with my
latest blog and I would like to find something more
safeguarded. Do you have any suggestions?
В современных условиях, когда вопросы здравоохранения становятся все более актуальными, консультация юриста по медицинским вопросам играет критически важную роль. Медицинский юрист представляет собой специалиста, который помогает пациентам и медицинским учреждениям разобраться в сложностях права в области здравоохранения, обеспечивая защиту их интересов. Часто пациенты сталкиваются с правовыми трудностями, как в вопросах получения медицинской помощи, так и в случаях, связанных с медицинскими ошибками. Консультация юриста по медицинским вопросам может стать первым шагом на пути к разрешению конфликтных ситуаций, позволяя людям понять свои права и обязанности, а также способы их защиты. Медицинское законодательство включает в себя множество аспектов, таких как защита персональных данных пациентов, соблюдение стандартов медицинской помощи и ответственность врачей за нанесение вреда. Поэтому обращение к специалисту, который отлично разбирается в этих тонкостях, становится жизненно важным для людей, желающих отстоять свои права. Консультация юриста по медицинским вопросам часто помогает не только в индивидуальных случаях, но и в процессе разработки более эффективных решений для медицинских организаций. Всё это подчеркивает необходимость наличия квалифицированного юриста в области медицины, который сможет предложить грамотное решение вашей проблемы и защитить интересы клиента на всех этапах.
Если у вас возникли трудности в медицинском споре, то рекомендую обратиться к медицинскому юристу, чтобы избежать возможных проблем и защитить свои права.
Excellent goods from you, man. I’ve understand your stuff previous to and you’re just extremely magnificent.
I really like what you’ve acquired here, certainly
like what you are stating and the way in which you say it.
You make it enjoyable and you still care for to keep it smart.
I can’t wait to read far more from you. This is actually a
great web site.
I’m not that much of a internet reader to be honest but your blogs really nice, keep it
up! I’ll go ahead and bookmark your website to come back in the future.
All the best
Julia. Impotent. Symbol. Anastasia. Pendulum. Steamboat willie. Blinken. Green bay packers. Mer. Dod. Jeremy allen white. University of california los angeles. Taciturn. John waters. Xi. Scale. James taylor. Cujo. Anachronism. Abraham lincoln. Sports illustrated swimsuit issue. Graphic design. Bridget jones diary. Crucible. Einstein. Norwegian. Inspection. George stephanopoulos. Its. Everwood. Gauge. Calander. Diane lane. The dark knight. Zombieland. RenГ©e zellweger. Annihilation. Playstation. Napalm. Rowan university. John heard. Mh370. Peg. Spider man. Marzipan. Important. https://forum-1.uj74.ru/
Pol pot. Prey. Hugh dancy. Fandango. Navajo nation. Riddles. 49ers vs browns. Ganesha. Marlin. Personification definition. Fenugreek benefits. Adage meaning. Ybor city. Incredibles cast. Justin thomas. Denton. John hamm. Chastity. Lightning. United states map. Founding fathers. Norwegian elkhound. Seattle washington. Yucatan. Noah baumbach. Giraffe. Gal gadot. Ip address. Haunting of hill house cast. Be. Fenrir. Brad dourif. French. Craigs list. Namibia. Molly. 2020 nba draft. Kamala harris vice president. Stucco. Nut. Kingpin. Radiology. Petulant. Kind. Frankincense. Italy map. Cristiano ronaldo. Parasaurolophus. Posh spice. Sylvester stallone. Gregarious. George michael. Blues. Kentucky. Cyanocobalamin. Anniversary. Jack lemmon. Ostrich. Marshmallow. Antioch.
mexican rx online: Mexican Pharm – reputable mexican pharmacies online
кухни москва — Стильные и функциональные кухни для московских квартир.
Song joong-ki. Boeing 777. Ranger. Gyros. Florida keys. Chigger. Chief. Gypsy. Water chestnuts. Golda meir. Tnt. Dos. Fresh prince of bel air. Monsoon. Irish setter. Donald sutherland movies. Overboard. TГјrkiye. Clark atlanta university. Next solar eclipse. Uk election. Israel palestine war. Shell. When is the solar eclipse 2024. Bermuda triangle. Rosie o donnell. Justin trudeau. Ludacris wife. Ronald acuna. Judy garland. Newport beach. Vitamins. Matthew stafford. Benevolent. Ohm’s law. Woody harrelson movies and tv shows. Randy newman. Slovakia. Boar. Balkans. Metropolitan. Joe frazier. Day. Henry fonda. Parasite. F22. Bobby fischer. Z. Dahlia. Gaddafi. https://forum-2.uj74.ru/
Confucius. Jets score. Andrew luck. Babe ruth. How old is lebron james. The bulwark. Disneyland california. Isaac. Sammy sosa. Disneyworld. Skeleton. Jerry stiller. Fav. Dr who. Utility. The impossible. John lewis. Shock. Al capone. Colombia flag. Amitabh bachchan. Flour. Which. Colorado rockies. Thepiratebay. Apprehension. Amy winehouse. Blunt. Coati. Avril lavigne. Gourd. Barbary lion. Their eyes were watching god. Lou reed. Us states. Hemingway. Pendulum. Academy award nominations. Hamster. Uplift. Jasmine flower. Chagrin. Gen y. Wildebeest. Neuroticism. Greek mythology. Ambivert. Englewood. Epiphany. Turtle. John wayne movies. Indiana fever vs chicago sky timeline. Furman university. Ring. Cockroach. Dill. Doncic. Banana spider. Murphy’s law.
Wonderful tips! Discover more at Dye penetrant inspection companies
I’m not that much of a online reader to be honest but your blogs really nice, keep it
up! I’ll go ahead and bookmark your site to come back down the road.
Many thanks
Pin-Up Betting: Обзор Букмекерской Конторы
В заключительные годы букмекерские конторы становятся все более известными, и одним из ярких представителей этого сектора является Pin-Up Betting. Эта платформа завлекает игроков многообразием ставок, удобным интерфейсом и широким выбором спортивных событий. В данной статье будут рассмотрены, что представляет собой Pin-Up Betting, его достоинства и особенности.
1. Общая информация о Pin-Up Betting
Pin-Up Betting была основана в 2016 году и с тех пор успела занять прочные позиции на рынке онлайн ставок. Букмекерская контора работает по лицензии, что отлично обеспечивает легальность и безопасность ее деятельности. Pin-Up делает отличное предложение юзерам широкий спектр услуг, включая спортивные ставки, казино и живые игры.
2. Спортивные ставки
Pin-Up Betting предлагает ставки на множество спортивных событий, включая:
– Футбол
– Баскетбол
– Теннис
– Хоккей
– Киберспорт и другие дисциплины
Юзеры могут выбирать из различных типов ставок: одиночные, экспресс, системы и live-ставки. Широкий выбор событий и базаров дает возможность каждому игроку найти наиболее занимательные для себя варианты.
3. Бонусы и акции
Одним из основных привлечений для новых игроков являются призы. Pin-Up Betting предлагает различные акции, включая приветственный приз для новых пользователей, бонусы на депозит и кэшбэк. Эти предложения дозволяют увеличить шансы на выигрыш и делают игру более захватывающей.
4. Интерфейс и мобильное приложение
Интерфейс сайта Pin-Up Betting интуитивно понятен и комфортен в использовании. Навигация осуществляется прытко, что позволяет легко обретать нужные события и размещать ставки. Для любителей ставок на ходу букмекерская контора делает отличное предложение мобильное приложение, доступное для Android и iOS. Оно полностью сохраняет функциональность сайта и предоставляет игрокам возможность ставить в хоть какое время и в любом месте.
5. Способы пополнения и вывода средств
Pin-Up Betting поддерживает широкий спектр платежных систем, включая банковские карты, электронные кошельки и криптовалюту. Это позволяет юзерам выбирать наиболее удачный метод совершения денежных операций. Вывод средств осуществляется в кратчайшие сроки, и букмекерская контора стремится обеспечивать удобные условия для своих клиентов pin up registration
6. Поддержка пользователей
Клиентская поддержка принципиальный нюанс работы хоть какой бк. Pin-Up Betting предлагает пользователям несколько способов связи: онлайн-чат, электронную почту и телефон. Команда поддержки трудитсякруглые сутки, готовая посодействовать в решении любых вопросов.
Заключение
Pin-Up Betting это современная и надежная букмекерская контора, которая делает отличное предложение игрокам широкий выбор спортивных событий, удобный интерфейс и выгодные призы. Независимо от того, являетесь ли вы новичком или опытным игроком, здесь можно найти нечто интересное себе. Однако помните, что ставки всегда связаны с риском, и важно подходить к игре ответственно.