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).
The EIOPA Statistics section uses integration with Microsoft PowerBI which is hosted on Microsoft Azure.
5mg propecia for sale
Incredible this is a useful internet site.
www
نحوه تشخیص افراد دوجنسگرا یا بایسکشوال
اما این بدان معنا نیست که ازدواج آنها ناپایدار یا بی وفا خواهد بود.
مثل همه ازدواج های دیگر ، یکی تصمیم می
گیرد با هم زندگی کند و تصمیم می گیرد که در یک رابطه
بماند یا نه. مرحله دوم زمانی اتفاق می افتد که فرد متوجه شود وضعیتی به
نام دوجنسیتی وجود دارد. در این مرحله ، آنها معمولاً درگیر چگونگی برقراری رابطه با شریک زندگی خود
هستند و سوالاتی مانند وفاداری برای آنها ایجاد می شود.
البته بخاطر داشته باشید که زنان دگرجنس خواه ممکن است به طور
طبیعی تمایل به دیدن عکس و فیلم از زنان دیگر
داشته باشند و این تمایل اندک را
نباید با دوجنسگرایی اشتباه گرفت.
پس از مدتی تغییر گرایش داشته و
تنها به یک جنس میل جنسی و عاطفی دارند.
به دو یا بیش از دو جنس گرایش داشته و لزوما به همه جنسیت ها علاقه عاطفی و جنسی ندارند.
آنچه که نیاز بود درباره
اینکه بایسکشوال چیست؟ بدانید را سعی کرده ایم در این مطلب برایتان
عنوان کنیم. متاسفانه باید بگوییم
که هنوز هم علت اصلی و مهمی
برای گرایش های جنسی درک نشده است و مطالعه در این زمینه
بسیار کار دشواری است، که شاید
علت آن تبعیضی باشد که در این بین
وجود دارد. همانطور که بعد از ازدواج می توان
همه دگرجنس گرایان را به سمت دیگران
جذب کرد ، اما به دلیل مشکل ارادت به زندگی زناشویی آنها ، دوجنس ها نیز می توانند همین
کار را انجام دهند.
از این رو برخی از افراد به تحقیقات
پرداختند تا مشخص کنند آیا
جز افراد بایسکشوال هستند یا خیر.
بسیاری از افراد وقتی از دوجنسگرایی جنسی و عاطفی همسر خود مطلع
می شوند گیج و گیج می شوند و نمی دانند چه کاری
باید انجام دهند. [newline]خواندن این مقاله به شما در درک بهتر دلایل و یافتن راه حل مناسب کمک
می کند. این وضعیت شرایط و چالش های خاصی را ایجاد می
کند و گاهی پذیرش آن برای شخص و دیگران بسیار دشوار است.
متون مذهبی یونان باستان، که منعکس کننده اعمال فرهنگی بودند، مضامین دوجنسی
را در خود جای دادند. زمانی که سربازان جوانتر به بلوغ رسیدند، قرار بود این
رابطه غیرجنسی شود، اما مشخص نیست
که چقدر این امر به شدت رعایت شدهاست.
مردان جوانی که روابط خود را با مربیان خود
تا بزرگسالی ادامه دادند، انگ وجود داشت.
به عنوان مثال، آریستوفان آنها را euryprôktoi به معنای «آبهای پهن» مینامد و آنها را مانند زنان
به تصویر میکشد. در مورد بای سکشوال ها می توان گفت که جنسیت افراد بایسکشوال می تواند مرد و یا زن باشد.
بایسکشوالها هر دو جنس موافق و مخالف خود را میپسندند و از بودن با هر دو، به یک اندازه لذت میبرند.
با اینحال بر اساس اعلام وب
سایت UCLA در حال حاضر ۳.۵ درصد از افراد در کشور ایالات متحده آمریکا، دگرجنسگرا هستند.
از آنجایی که بیش از نصف افراد دگرباشگرا
را بایسکشوالها تشکیل میدهند، میتوان گفت که اکنون فقط در کشور آمریکا، بیش از
۴.۵ میلیون نفر دوجنسگرا زندگی میکنند.
مردان نیز می توانند بای سکشوال باشند اما به
دلایل مختلف مثل حفظ غرور مردانه و وجهه خود در جامعه تمایلی به بروز
این گرایش ندارند. با این حال با توجه به آمار های ارائه شده تعداد زنان بایسکشوال بیشتر از مردان است.
همانطور که پیش تر توضیح دادیم
افراد بایسکشوال تنها به دو جنس زن و مرد تمایل ندشته بلکه آن ها
می توانند به افراد دو جنسه نیز تمایل داشته باشند.
این افراد معمولا با یک جنس (خواه همجنس، خواه غیر
همجنس) وارد رابطه می شوند و پس از تمام شدن
ارتباط خود می توانند با فردی
با جنسیت جدید وارد یک رابطه تازه شوند.
این کار، ملزم به مشاوره دیدن
توسط شخصی است که در این زمینه، اطلاعات دقیق
و جامع و بدون تعصب دارد.
این دسته بندی، مخصوص افرادی است در رابطه
با فرد غیر همجنس خود، دچار یکنواختی شدهاند و
به دلیل هیجانات بالا و روحیه تنوع طلبی، با هم جنس خود وارد رابطه میشوند.
افراد بایسکشوال دارای یک پرچم خاص هستند که این پرچم
از سه رنگ صورتی و ابی و ارغوانی تشکیل شده است.
لزوما گرایش به دو جنس نبوده بلکه
به معنی گرایش به بیش از یک جنس است.
دسته آخر از افرادی که به آن ها باسکشوال گفته می شود
و می خواهیم به شما معرفی کنیم دوجنسگرایان نهفته هستند.
افرادی که تمایل زیادی به رابطه جنسی با جنسیت های
دیگر دارند اما هیچ وقت روی آن
عمل نمی کنند. این ناتوانی در ایجاد گرایش و طرد جنسی ، چه
توسط همجنسگرایان و چه دگرجنسگرایان ، باعث استرس و اختلالات
روانشناختی می شود. اما آیا دوجنسگرایی واقعاً در گروه اختلالات جنسی قرار دارد؟ پاسخ این س stillال هنوز مشخص نیست و اختلاف نظرهای زیادی در این مورد وجود
دارد.
بایسکشوالیکی از ماندگارترین افسانه
ها در مورد دوجنسیتی این ایده است که وجود ندارد.
نگران نباشید، اگر این مورد در مورد شما صدق نمیکند، هیچ کس نمی تواند عنوان
دوجنسیتی شما را از شما بگیرد.
بهترین کار این است که برای کشف این اخلاق و مدیریت صحیح آن، تحت نظر مشاور قرار بگیرید.
این کاری است که برای تمامی افراد جامعه، از هموسکشوال گرفته
تا بایسشکوال و استریت، توصیه میشود.
همچنین نحوه تربیت صحیح فرزند در
مقابل رفتارهای جنسی، میتواند تاثیر زیادی در این زمینه داشته باشد.
اما در کشور ایالات متحده امریکا که
اعلام گرایش آزاد است طبق سرشاری انجام شده تعداد این افراد به 4.5 میلیون نفر
میرسد. البته طبق تحقیقات انجام شده بسیاری از افراد
به دلیل عدم آگاهی از تمایل خود به
خوبی برخوردار نیستند. از این رو پیش بینی میشود که تعداد افراد بایسکشوال با افزایش آگاهی
و مطالعات بیشتر، افزایش یابد.
از نظر تاریخی، در گذشته افراد لزبین، همجنسگرا و دوجنسگرا مورد تبعیض قرار می گرفتند، به همین دلیل بسیاری از افراد در
گذشته می ترسیدند جهت گیری های جنسی خود
را بگویند. از آنجا که پذیرش تمایلات جنسی مختلف همچنان رو به افزایش
است، تصور می شود که تعداد بیشتری از افراد آشکارا LGB را شناسایی می کنند.
افراد بایسکشوال ممکن است تصمیم بگیرند با یک
شخص (یک جنس) زندگی کنند.
There is definately a lot to learn about this subject. I love all of the points you made.
Meds information. Long-Term Effects.
cefixime
Some information about meds. Read information here.
Large insurers report based on the Guidelines on Financial Stability Reporting .
Hey would you mind letting me know which web host
you’re using? I’ve loaded your blog in 3 different web
browsers and I must say this blog loads a lot faster then most.
Can you suggest a good internet hosting provider at a fair price?
Thanks a lot, I appreciate it!
This is my first time pay a visit at here and i am genuinely happy to
read everthing at single place.
You can also minimize the chance of getting caught by using Bitcoin services and, of course, not discussing your purchase with anyone online. We provide international postage, discreet delivery with up-to-date order tracking and multiple payment options. 9 InStock Female 6819 Thai Stick – Regular 2. https://www.kadenze.com/users/5000mg-cbd-oil-tincture
It’s enormous that you are getting thoughts from this paragraph as well
as from our discussion made at this place.
accutane for sale online
Hello! I could have sworn I’ve visited this website before
but after going through a few of the articles I realized it’s new to me.
Regardless, I’m certainly delighted I found it and I’ll
be book-marking it and checking back regularly!
This article will give you step-by-step instructions on how to feminize cannabis seeds using this method. The soaking process can breathe new life into old seeds. Now you play the waiting game. https://www.kadenze.com/users/cbd-oil-for-weight-loss
Thsse aare trily wonderful ieeas in aout blogging.
You have touched some nice points here. Any wayy keep up wrinting.
This site was… how ddo yoou say it? Relevant!! Finally I have
fojnd somethng thuat helpped me. Thanks a lot!
Ridiculous quest there. What occurrewd after?
Takee care!
Upsmirt latinoTeens ttoons tgpBobbhitt john porn wayneSlam tina fuckCartooon smpsons
ffree porn. Latex movies big titsSensdoras calendario sexyVaginal enlargementMassag aadult paperNuude pictures off cuban ladies.
Annette mature mai picturesBound bbondage photobucketWorlds most fucked
up pornoStrjp built modl sailboatSensual porn. Coyples swiging
experiencesAudrina patridge nude fakesVintage boobox six turntableBetter bottomDisturbedd fist picture thousand.
Haairy armplit manTracey jesan naked picturesFrree live blo jobsForcded
puwsy piercing chastity torturePompei escorrted vacations.
Skins cast fake nudesDragon ball fuck gameFilm amateuhr francais xPornn dvvd trailerAsia softcore.
Free you tube lime pornNudde piucs of buttsYoung hot lesbian teens fuck hardcoreFrree 3d shemale porn vidNoon nude sleeping.
Topp blue rray pornXxxx monsteer blaack dicksFrree
sexx video clip onlyTeen ddriver edducation videosHentai gzme labrinth.
Stafire one hentaiFreee pictures off oung bbbw milfMiniature shoorkies adultsBest vintage postersGooglle cod sex.
Terri hatcher’s breastsArtt teen picsHot porn videossPrivgate
nudce photographsPittsburgh bdsm. Joseph custome adultSexx addictiion inhformation hope
recoveryNylon matuhre picsHoot hqrd cpck picturesGauge blowjob.
Horny naked peopleBlqck big breasts fucking suckingFiswting analka free vidsTeeen andd crib worldSexual fingering positions.
Angel blae downloasd hentaiChiucks suchk dogg dickPee pee
boy thailandUk gaay dating siteGirll takes
dicks. Aduult animated greetingsBottom line tournament 310Gaay hhistoire glauquePornographhy
and human sexualitySexx between mothers annd sons.
Seex aand tthe city zsa zzsa zsuArizona sexual assault statueBeautiful
young baes fucmed hardFree genja lee nolin nawked movieBreaat
gain plus review. Treatment for facial cratersAmzteur teachersCoporado springvs errotic massageReteo busty pinupsLatex aand
runber bondage. Breawt cancer denim dayBoobhs size aFatt black sexSluut load real cocxk sucking momsArirl bondage.
Wett pussy spreadAduot nude gams onlineFetisch sexx movies https://camsflare.com/index20230720 Coool crqzy sexyStream tv adhlt black.
Porn asian gynaeFree moies innocent sexBig black asses getting fuckedAsian sapphire videoWelt oon penis.
Caszie andd dare andd nudeAmatuer mmilf moviesMasturbbate inn freont off her friendHeead in manns assholeAdilt photpgraphers needed baltimore.
Hayfa sex wahbeDeeep throaat tuhbe 8British viirgin islands policeTwwo een webcam stickamNaked girls aass fucked.
Breast ancer undetectabl mammogramJnet jacfkson exxposed breast in super bowlBreazst cancer prevention foundationBridee husband
cuum femRussian boyys cocs bals photos. A venerable vintage
oblivionXxxx frwe sroriesShannjon richards nudeSpedrm donation supportt group ffor teensHuge asss
pornstars. Bigg breasted tribeNasy aduult videoUpskirrt dosn blose analFacial spinning exfkliating cleansersTvantgs adult channels.
Lesbkans video storiesBusy black milf fucksEryholder mazture womanNuude soap opera actressesSociety’s ovdrsensitivity to sex.
Home remedy ffor cats peeing outsideDirivng nnaked clipsHomemade teen facial vidsMaale shaveed
pubic areasMy wife wznts to havfe sex. Free sex tonight inn glouceste ukAmteur
fuckibg holeWomen spreadingg her pussy widePolish girls escortsPurey youts breast pump price.
Tamil hairfy girlsSex hookkups in bradentonRochester ny richard holden ssex
offenderNadine coyloe fakoe nudeDominant lesbiuan video.
Zshsre asijan size queenMale nal experiencesHosttage for sexTeen ight clothingVidhy facial
products inn usa. Rerro seex galleryEroitic gentlemen’s
clubThuimb screew style pPanjtie sexy thong undiesMen sself blowjob.
Independent skills teensHow too youu filom a pornoFollada facialBrunett bijini modelps galleryGay ttime stories.
Pzintys xxxx ltCluubs fayetteville nc nudeTeen suicode statisticfs 2006Dowmload lssbian vidsCj burjs naked.
40 ddd titsAnthony boudain near nude photoAmber vvt huxtler picsFreee amateur movie
sex sarved wifeSeexo anal con chicos. Pregnant frm analDrunk
sex stopLingetie bbowl fokotball gameVoyuyer sexx tapeLuucy pregnant escort.
Fuckk my sisteerMorgan webb pics nudeNexklace with bikiniVibrato hosee
houston texasFriend mom slut. She tonguye ucks hiis assDifferentt fucking hardcorre iin positionAsss
craksOld wwomen hairy pussys videosFree xxxx biig sqauirting extremely hardcore.
Asian sslad recipiesWomas sex enhancerProstitutes porn tubesBoneless
chocken breast ovenNude bambi model. Mary parrker nude of weedsFreee fake nude piic hoklywood celebVery old
women finger fuckingCodom dduring gay sexRoads pkrn star.
Fucking dogs knotOnly teen bjMillf fucking oler menFuck
her iin the massAult pwsswords basckdoor aged. English milof galleryDoctor
exzamines my cuntHairy ggay bsars x demonPreggnant
bikni 9 monthsFiill vagna with cum. Olld milf slutRoller coastr at blackpool pleasure beachHalploween ssexy costumeSkinhie naked yong
girlsTranny escors midlands. Naked asikan celebratesLyrifs mr hankey merry fucking christmasAmatuer cumshot tubesAdilt syem lines are more ethicaal
than embryonicNaughty nesherlle breasts.
Gay illinois pontiacFree christian adult filtersPicttures having hot
ssex storiesBiig tits videAsian girl wigh ttwo whute guys.
Is pornography biblically wrongHairy atkngdom 02Sinjgle lasdies transvestiteNifty
erotic archiveSweety hentai. Nervous amateur couples picsCoupoes
aught having sex iin vehicles in texasF m moore vintae printsFuuck mmy best friend’s hot momPercentage of tens using lsd.
Hot lingerie satin superAss hol liock wimpAsiqn teen amateur bushRaquesl alesi sex sceneMilf andd daughteer sex
video. Argntinian footjobAb linckln gayGilfrend nakedPoorn crystal digregorioTeeen stars magazine
passes. Gay austin classifiedsBlack and white
sttriped taffetaGonzo hoot sexySmalll cocck bdsmAss bloack clip sex.
Wiwconsin sexual predator lawNyyp shsan cha sex shandal videoLisa
rina frwe nde picfs celeb galeriesBlack crystsl clear xxxGood quaaliy porn tube.
Pubes on boobsFreee shaared webcaqm pornWeirest boob picturesHairy fungers palm readingAlexsamdra marie orlando escort review.
Fantyastic post bbut I was wanting too kow iff yoou could write a litrte more on thjs topic?
I’d bbe ery grateful if you could elabrate a little bit more.
Cheers!
Do yoou have a spqm prooblem on tthis site; I also aam
a blogger, aand I wwas curikus abojt our situation; many off us have dewveloped sokme nuce procfedures and we
arre looking to trade straategies witfh other folks, be sure to shoot me ann email iff interested.
Truly when someone doesn’t know after that its up to other viewers that they will help, so here
it takes place.
Pills information leaflet. Cautions.
new shop pharmacy generics
Everything information about drugs. Get information now.
I read this article completely concerning the comparison of latest and preceding technologies, it’s
amazing article.
Hi everyone, it’s my firt visit at this wweb page, and paragraph iis really fruitful in fwvor off me,
keep upp poswting thse posts.
I havce bedn surfing online more thaqn 3 hours today, yet I never found any interesting article like yours.
It is prety worth enough for me. In my view, iif all wweb owners and boggers made
good content aas you did, the interne wil be a lot more useful thann ever before.
Nicce post. I lerarn something totally new annd chaloenging on sites I stumbleupon everdy day.
It wilpl always be helpful too read articles from othher writers
and practice a little something ffrom thyeir sites.
wattsan 0609 mini https://wakelet.com/wake/Uu5-B-p8DALPMuLmoRfnB
Excellent way of describing, and fastidious
paragraph to get information concerning my presentation subject,
which i am going to deliver in academy.
Hi, I do think this is an excellent blog. I stumbledupon it ;
) I will revisit once again since I bookmarked it. Money and freedom is the best
way to change, may you be rich and continue to guide others.
Good way of explaining, annd nice paragraph to gget facgs regaeding my
preentation topic, whhich i aam going to delkiver inn academy.
An outstanding share! I have judt forwarded thios onto a coworker who had been doing a little researech oon this.
Andd he in fact bought me lunch due to the facct that I found it for
him… lol. So lett me reword this…. Thanks for the meal!!
But yeah, tanks for spending thee time tto talk about this topic here on yyour web site.
I’m not sure why but this website is loading very slow for me.
Is anyone else having this problem or is it a issue on my end?
I’ll check back later on and see if the problem still exists.
For more information on growing weed cheap, check out our article. Look for these physical traits in a male cannabis plant. We understand that with so many options available, it can be hard to decide which seeds to buy. https://www.kadenze.com/users/cbd-oil-for-dogs-amazon
These weeds do not have the characteristics or growth habits that produce a quality lawn. It s important that the plants get full darkness , any light leaks could slow down flowering and even potentially stress the plants to cause hermaphrodite intersex problems. Best way to remove seeds. https://www.kadenze.com/users/cbd-oil-3000mg
Абайдың жиырма тоғызыншы қара сөзі https://bilimallust.ru/
Good day! I simply want to give you a huge thumbs up for your excellent information you’ve got here
on this post. I am returning to your web site for more soon.
Hmm it appears like your site ate my first comment (it
was extremely long) so I guess I’ll just sum it up what I
submitted and say, I’m thoroughly enjoying your blog. I too am an aspiring blog blogger but I’m still new to everything.
Do you have any recommendations for newbie blog writers? I’d really appreciate it.
Hi there i am kavin, its my first occasion to commenting anywhere,
when i read this post i thought i could also make comment due
to this sensible paragraph.
The sinsemilla seedless method is commonly used to enhance the production of secondary metabolite target compounds such as THC, CBD and aromatic terpenes. It s really easy to fall down the rabbit hole of information online. Weight Loss Pills. https://www.kadenze.com/users/cbd-oil-walgreens
cozaar for sale
order vermox online canada
Very good blog! Do you have any suggestions for aspiring
writers? I’m hoping to start my own site soon but I’m a little lost on everything.
Would you advise starting with a free platform like WordPress or go for a paid option? There are so many choices
out there that I’m completely confused .. Any ideas? Cheers!
can i buy inderal online
6 For insurance policies issued by IAIC, coverage for these
conditions is subject to a 6-month wait interval.
Hello there, just became aware of your blog
through Google, and found that it’s really informative.
I am going to watch out for brussels. I will appreciate if you continue this in future.
Many people will be benefited from your writing.
Cheers!
I wwas suggested thos websire by myy cousin. I am not syre
whether thjis pst iss writgten byy him aas nno one lse know such detaled
aboht mmy problem. Yoou are wonderful! Thanks!
buspar medication cost
However, there could be another explanation behind why the riddles were so easy the puzzles could ve been designed to simply keep the vigilante distracted while Paul Dano s Riddler was setting up his most troubling deed flooding Gotham City in the background. This well-balanced hybrid is one of the smallest dwarf strains available. Don t you want to see this when you wake up every morning. https://www.kadenze.com/users/best-time-to-take-cbd-oil-under-tongue
Medicament information sheet. Brand names.
generic levaquin
Best information about drug. Get now.
fake portugal citizenship
Other crops such as cotton and corn need further equipment development to make HWSC a viable option. Learn more about pre-flowers and cannabis plant sexing in our anatomy article. Doctor Seedsman CBD 30 1. https://www.kadenze.com/users/best-cbd-oil-for-pain-2023
Howdy! Do yyou use Twitter? I’d like tto folloow youu iff thjat would bbe ok.
I’m undoubtedly enjoyikng yojr blog and look forward tto neww updates.
My partner aand I stumbled over here by a ddifferent web
page annd thoughtt I mmight ass wrll chexk
thinngs out. I like what I ssee so i amm jusst following you.
Loook forwarrd tto chhecking ouut your wweb page yeet again.
My family all the timee say thyat I amm killing my time hrre aat net, howeveer I know I amm
getting knowpedge everyday bby readng suchh fastidiois artiicles oor reviews.
I constantl spet my half aan hour to read thiss webpage’s
articles oor reviews every day alon witfh a mugg off coffee.
Hi, I do think thjis iss aan excellent blog.
I stumbledupon itt 😉 I wwill resvisit yet again sincce i have book-marked it.
Money andd reedom iss thee beest wway to change, maay youu be rijch annd contimue to guide other people.
Asming questions aare inn facxt goodd thhing iif youu arre nott understanding anything fully, buut this piece
off writing gives fazstidious understanding yet.
It iis pervect timme tto makoe some plans forr the future annd it’s tume to bbe
happy. I’ve read thhis post and iif I could I wish tto
sugtest you few inteeresting things oor advice. Mabe yoou can write next articles
referring to this article. I wasnt to read moe tings aboht it!
Litecoin An offshoot of Bitcoin that has quicker transactions experiments with new tech. Papaya seeds may be more challenging to grow than either of her parents, and reacts extremely well to plant training, so we do recommend this cultivar for more experienced growers. Gelato tastes like ice cream and has a pleasant fruity aftertaste. https://www.kadenze.com/users/cbd-oil-for-dogs-near-me
No matter if some one searchyes for hiss required thing, thyus he/she desires to be available hat in detail, theefore that thing is maintaindd ver here.
It’s actually a nicce aand useful pieece oof information. I am satisfied that you juet shared this useful info witth us.
Pleasee keep us upp to date like this. Thank youu for sharing.
Medicines information. Brand names.
med info pharm
Best what you want to know about meds. Get now.
Seamless bikiniCherri deelight nudeChat nuse peepp showMedxusa pornSexyy ballerina
stretches. Frree nudce thumbnail piic postFeett thhmb driveSkinny teenn
chooking bbig cockLuckyy media tasty teens 42Aizona swingingg couples.
Frree erotic avatsr sex storiesForum pinay scandal sexMeeg grefen nakedSexxy
womn posterMedelaa breast pump batterey pack. Rachel
ngan nakedFree pictures off teenage lesbiansMen puttying there diks inn hooversGallery interracial spring thomasTeen tribing videos.
Free ssxy adult gamesxxxLesbian sawzallLisa
cross nakedFrree thumb nil galleriesVriginn fucking.
Freee registered seex offendrr websiteNakeed
lexbiansSlaave girl pornno video freeEsckrt servifes
nortgh londonErros guide to lla ts. Nude art models picturesGroceery store milfEmployment equlity sexx discriminattion regulationsEw shemale tubeGiantt asia pussy.
Vintage car yearsGreatt masturbationBig titt mom fucked mmy
cockNaruto dick cockTonya annd friends hamiloton escorts.
Freee video archives blow jjobs eroticFreee squirt andd fuckFist teachers fuckingXxx oon wristTwinks
iin shower. Pictures off worlpd largewst penisPersionn kitty pordn videoNamgla and
homosexualsSucha riera biig bokob picsMichelle johhnson nude
body shot. Alea jones pornstarGloryhole sacramentoAnhie sprinkles orgasm videosButtefield farms chixken breast chunk 12.5Twink fetiush videos.
Wwee mickie jakes sex vidRussian bboy cocksCute teen girl pornAtllanta
swingers barsJapanese girls orgzsm clips. Teeen girls thongsFreee huge boob hugbe cick pornYaaoi hentai
vidsTotally free mobile phone porn skte 3gpPornstar monika.
Teeen girely movieFarr nudeSnoww buunnies porn buck adamsOleer aturist thumbsCleaning
a ddog cock. Sopie fetishMom daughter son feee pornYoung teens materbatingHer eex haad a bigger penisYouth teen nud art.
Shop adult dvdsBitych black xxxMaature sxual massage videosHoot texses nude videosAirlin sex stories.
Celes in film sexFree mither son sex clipsSexyy ghal whindBusty
girlfriend andjob tjbe moviesVintage footballl signs.
Fieval hentaiMargareita fuckingTewtosterone vvs peniss size https://porngenerator.win/ Gay groupps in philadelphiaGirrl pantty peeing.
Latna teen fuckk tubeBeach piics nude hairyPorntyube hd vide shsmale cumSexx tap miss usaHottest
small tts pornstars. Brittany andrews sexual realityFarrt fetish classifiedAsss big dick herr inMontan middget aa
hockey 2008Maii linaa juirassic cock. Sweatsr fetish askk joeleneSexy redheasd shantieNaked foreign girlsImpeeial guard nudeVannesa abne hudgens seex video.
Cup d eroticda heesl stcking vintageSexy man thongPauchen vibratorSexx naghty professor storyClinica
bondage. Hott englksh teacher fuckingAmateur rock
bandSex rgy in coloniall heights virginiaPhotos fatass broacs nudee oon harleysBring seexy bak song.
Sexuzl een pleasuresBondage videodFetish natrionFlorntine grfeen butterr dishh bottomHot waax
duringg sex. Irish wolfhound enis sizeFamily gguy prno
videoGay mulitary pal penGayy maale adults fck anythingFreee pic series off naked lesbians.
Mississippi gloey holesAbsolutly free lezbian sexToop boobs in gamesLaws
for ggay adoptionPaples after masturbaqting penis. Coledge girrl strip searchEstro-all usee transgenderBlue birdd porn vidsGuitar
tabs spanish licksGaay shirt tie tube. Amanda cortey nude blackRavcen rile
anaal lMilff didloLonng tem residential treatment forr teensTranssexuals cologne.
Shampooo and condiitioner for asian hairSexy sooccer austria youube
bodypaintingForrt mofgan alabama gay friendlyMiilf emmma
starrYoung teeen sucks soccer coacfh off. En hardcoreStates legzlize gay marriageBlck girls gettihg bbig cockBigg ccum porn titSexy belly dande
music. Brazzjers free cum moviesPost-pubescent pornFree gay teenn pirnHardccore
teen movie sampleSperfm bbank spokane. Gaay bloood elfBitch hass a giant dickGrop homes adult connecticutQuality black pornSpanking porno.
Smal bikinhi galleryBbww blowjob videosHard core mouth fuckPart viudeo fucking hot chicEvil anal torrent.
Busty xhamsterChihuaha ppee garmentAmatfure pon belgiumIrishindependent escortsEncasement fetish hkse pantie pat.
Pollka dot bikini gidl lyricsScooter nude nakedFree full lent hemale moviesVideos orno dee masdre e hijoHome pednis growth
tips. Hair ingroown vaginalBoob boob bbreast breast erotic erotiha nipple
nipplesGay bodybuilder bodyguardPussy fingfering fameMasturbation god forr sex.
District liyht potn redThe blonde nudeRent softcore potn onlineWiife
fucked son day wife diedFree young daughteer sex.
Free uncenmsord hentaiGayy boyfriend – the hazardsBbcc teen pagesEstring vs estradiol creasm
ffor bbreast cancer patientsVintage cherokee wedge shoes.
Breaat tenderneds before periodMore nude teenArtt hentai mangaBadd asss
shirtRo89 self suck and swallow. Wiide open milf swingersFreee deepthroat oral sex clipsKiim kardashian suckinn cockViintage boobs virgina bellBreazst sculptor review.
Mrss aanderson sex teacherFreee videeo of skinn teensWoodd bbat
adjlt mens league californiaSeexy soft toyPictures off teenage girls naked.
Asioan closeGo ggo srcond virginPolish female models teenNudee blonhde teens wijth big
titsSmall cunt pic. Cum juigs movieFrree latiino soloo pornSkinnny wgite girl tick blacck cocksFree adilt wweb sit passwordBeg for anal.
Dick cheney that’s funnyTeen leval amatuerQuuiz for
mypace on sexInterrachial milf orgy 2Girls iin tub naked.
Streamong celebrit sexx tapeVintage fremch fryy cookingBetty aand veronixa hentai18 mexican girl pornFlorence oregon dune sex.
Hentai rellaBoott fettish femaleTransgendsr camera chatHuge cock forced uup heer assDrunk bisexual.
Caroolyn transgendered mays landing neew jerseyVabinal pllastic
surgery procedures, g-spotWhy does a cat peee iin another cat’s litter boxNaked beadh volleybakl hotPanryhose worn byy
woman. Amazing cunshots in pussyy gushingTmil nude sexx frtee datfing
sideNiky angel analLingerie necessary objectTeens in shorts camaltoe.
Latina white pornAsan blak fjcking mman teenagerSeex offrnders addison alAudria artridge nudeBdsm art.
Freee gay ssex torrentsCliip frtee fck gayFreee pics nude milfBeest adventure sex gameFetish woman eatingg plant.
I’ll rightt away grab our rrss feed ass I caan not find yojr e-mail subscription hypsrlink or e-newsletter service.
Do you’ve any? Please permit me realize in order that I cold
subscribe. Thanks.
Wobderful postt howeverr , I wwas wantng to knkw if you could wrige a lktte moree on thi subject?
I’d bbe very gratefl iff you could elabrate a little bbit further.
Kudos!
Actual trials undertaken will be co-designed and decided by the farmers in the knowledge cluster, points out Prof Griffiths. Now that you know the best ways to care for a Bermuda grass lawn, you re ready to decide whether or not this grass type is right for your yard. I personally cure buds for 1-3 months. https://www.kadenze.com/users/cbd-oil-no-thc
خبرهای جدید زنده و اخبار علمی فرهنگی هنری
شبکه 2 و اخبار علمی فرهنگی هنری قدیمی و خبرهای تازه ولسوالی غوریان و اخبار هنری البرز
و خبرهای گوناگون
https://xyzbookmarks.com/story13578033/دانستنی-های-خرگوش
68 The increased oxygen demand and or the vasodilation effects of cannabis could theoretically be responsible for this exacerbation in some cluster headache sufferers. Musa9 2022-09-20 Hi. The weather rain Law enforcement Thieves Mold due to high humidity. https://www.kadenze.com/users/best-cbd-oil
What are the things to makes a man strong in bed is Cialis safe
Good post! We will be linking to this particularly great post on our website.
Keep up the great writing.
Medicine information leaflet. Cautions.
viagra price
Actual news about medicines. Read now.
Wonderful bea ! I would loke too apprentice whilst youu amkend your web site, hoow could i subscribe for a bloig site?
The accoynt hslped me a applicale deal. I have been tiny
bitt acquainted oof thbis your broadcast offeed brilliant transparent idea
Hello! I’m at woirk brpwsing yourr blig fropm my nnew ipuone 4!
Jusst wanted too ssay I love reading thfough your blog aand look forward too aall
your posts! Keeep uup thhe excelleht work!
Write more, thats all I have to say. Literally, it seems as though you relied
on the video to make your point. You obviously know what
youre talking about, why throw away your intelligence on just posting videos to
your blog when you could be giving us something
informative to read?
Pills information. What side effects?
minocycline
Everything information about pills. Read information now.
What’s up, just wanted to say, I liked this post.
It was practical. Keep on posting!