Documente Academic
Documente Profesional
Documente Cultură
MAGIA PROGRAMĂRII
Caiet de informatică și TIC pentru clasa a VI-a
2015
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
ISBN 978-973-0-19038-0
1
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Conținut
TIPURI STRUCTURATE DE DATE............................................................................................................... 3
TIPUL TABLOU.................................................................................................................................................. 3
Tablouri unidimesionale în limbajul C++ .................................................................................................. 3
Tablouri bidimesionale în limbajul C++ ................................................................................................... 25
TIPUL FIŞIER .................................................................................................................................................. 52
HTML ................................................................................................................................................................ 61
NOȚIUNI DE BAZĂ ........................................................................................................................................... 61
FORMATARE TEXT................................................................................................................................................ 61
LISTE ................................................................................................................................................................. 64
LEGĂTURI....................................................................................................................................................... 67
IMAGINI .......................................................................................................................................................... 69
TABELE........................................................................................................................................................... 71
BIBLIOGRAFIE .............................................................................................................................................. 74
2
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Tipul tablou
La prima vedere totul pare simplu, dar observăm, cu cât n este mai mare cu atât trebuie să
declarăm mai multe variabile care să reţină numerele din şir, iar atunci când începem să realizăm şi
comparările cu ultimul număr din şir, numărul liniilor de program creşte, având impresia că
programul acesta nu o să se mai termine niciodată şi dintr-o dată ceea ce părea foarte simplu a
devenit complicat.
Dar ce vom face totuşi în astfel de cazuri sau în cazuri asemănătoare când trebuie să prelucrăm
un set de valori de acelaşi tip care sunt aşezate într-o anumită ordine?
Limbajul C++ permite ca toate aceste valori de acelaşi tip care sunt aşezate într-o anumită
ordine să fie memorate într-o singură variabilă indexată (compusă) numită tablou unidimensional
sau vector.
Fie A variabila indexată care reţine şirul nostru de numere întregi atunci:
Elementele şirului
…………………
8 17 10 11
0 1 2
Poziţiile numerelor în
primul al doilea al treilea ş.a.m.d. al n-1-lea cadrul şirului
număr număr număr număr
3
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Crearea unei structure de date de tip tablou de memorie presupune mai întâi să aibă loc
declararea tabloului de memorie unidimensional (vectorului) pentru a se aloca spațiu de memorie:
unde:
Exemplu:
int A[100];
OBSERVAŢII:
1. Pentru a accesa componentele din tablou se folosesc indici întregi, cuprinși între paranteze
drepte. Dacă un tablou are n componente:
prima componentă are indicele 0: A[0];
a doua componentă are indicele 1: A[1];
…………………………………………………….
ultima componentă are indicele n-1: A[n-1].
2. Dimensiunea tabloului trebuie să fie o expresie constantă.
Exemplu de declaraţii corecte:
const int dim=10;
int B[dim]; // tabloul B are 10 componente de tip int;
int A[30]; // tabloul A are 30 componente de tip int;
Exemplu de declaraţie incorectă:
int dim=100;
int a[dim];
3. Tipul datelor din tablou, adică tip_dată, trebuie să fie standard sau definit de utilizator
înainte de a fi folosit.
4. La declararea unui vector se pot atribui valori inițiale elementelor, cu instrucțiunea:
4
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Atunci când un tablou este inițializat, la declarare, poate lipsi dimensiunea. El va avea
atâtea elemente câte valori se folosesc la inițializare.
Exemplu
int a[]={4,6,8}; //s-a declarat tabloul a cu 3 componente de tip int, unde a[0]=4; a[1]=6;
a[2]=8;
5. Pentru a folosi o componentă oarecare, fie aceasta ,,A[i]”, a unui tablou unidimensional,
vom scrie numele tabloului urmat de indicele ,, i” între paranteze drepte;
6. Elementele unei variabile de tip tablou se reţin în memoria calculatorului una după alta;
7. Citirea şi afişarea unui vector cu componente de tip întreg se realizează astfel:
Comentarii:
#include <iostream>
using namespace std;
int a[100],i,n; - în secţiunea de declarare a variabilelor s-a
int main() declarat un vector a cu 100 componente
{ întregi;
cout<< "n=";cin>>n; - citim mai întâi numărul n, de componente al
for(i=1;i<=n;i++) { vectorului de care avem nevoie în aplicaţia
cout<<"a["<<i<<"]=";
cin>>a[i]; } noastră;
cout<<"Afisare vector"<<endl; - pentru claritatea programului vom
for(i=1;i<=n;i++) considera că prima componentă a tabloului
cout<<"a["<<i<<"]="<<a[i]<<" "; unidimensional are indicele 1;
return 0; - într-un ciclu for, parcurgem poziţiile
}
componentelor şi pentru fiecare poziţie citim
valoarea corespunzătoare;
- afişarea vectorului se face tot printr-o
parcurgere a poziţiilor componentelor într-un
ciclu for şi pentru fiecare componentă a[i], în
parte, se afişează valoarea.
5
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
3. Se consideră că avem un şir A de elemente numere întregi de cel puţin două cifre. Se cere
săse realizeze un program care să afişeze elementele şirului care au ultima cifră impară, în
cazul că există.
Ex: Fie n=5 şi a=(28, 27, 81, 14, 33), atunci elementele afişate vor fi: 27,81,33
6
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
7
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
11. Se consideră un şir A de n elemente numere întregi. Se cere să se realizeze un program care
să afişeze numărul elementelor prime din şir.
Ex: Fie n=5 şi a=(5,40, 7,8, 11), atunci numărul nr=3.
Rezolvarea problemei 11:
#include <iostream>
using namespace std;
Comentarii:
int a[100],i,n,nr,ok,j;
int main() - are loc citirea şirului a, cu n elemente;
{ - se iniţializează variabila pe care o folosim
cout<< "n=";cin>>n; pentru a număra câte elemente sunt prime cu
for(i=1;i<=n;i++) { zero (în cazul nostru nr=0);
cout<<"a["<<i<<"]="; - într-un ciclu for, parcurgem fiecare poziţie a
cin>>a[i]; }
nr=0; elementelor, şi verificăm dacă elementul
for(i=1;i<=n;i++) corespunzător poziţiei este prim sau nu;
{ ok=1; - dacă elementul (a[i]) este prim, variabila ok va
if(a[i]==1) ok=0; avea valoarea 1, iar variabila nr va creşte cu 1;
for(j=2;j*j<=a[i];j++) - pentru a verifica dacă un număr este prim, am
if(a[i]%j==0)
folosit algoritmul explicat în volum I;
ok=0;
if(ok==1) nr++;} - în final are loc afişarea numărului de elemente
cout<<"nr="<<nr; prime din vector;
return 0;}
13. Se consideră două numere naturale x şi y şi un şir A de n elemente numere întregi. Se cere
să se realizeze un program care să afişeze numărul elementelor pare din şir, care se află în
intervalul [x, y].
Ex: Fie x=12, y=25, n=5 şi a=(10,16, 7,22, 4), atunci numărul nr=2;
8
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
9
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
19. Se citesc două şiruri de numere întregi cu n elemente fiecare. Să se realizeze un program
care să construiască un alt şir care conţine pe fiecare poziţie suma elementelor
corespunzătoare din cele două şiruri.
Ex: Fie n=5 şi A=(15,10, 7,8, 11) respectiv B=(15,20,1,2,1), atunci vectorul construit va fi
C=(30,30,8,10,12) cu n=5 elemente;
10
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
22. Se dă un şir A cu n elemente numere întregi .Să se realizeze un program care să calculeze şi
să se afişezeminimul din şirul A.
Ex: Fie n=5 şi a=(5,4, 7,1,8), atunci mimimul şirului va fi min1=1.
Rezolvarea problemei 22:
Comentarii:
#include <iostream>
using namespace std; - are loc citirea şirului a, cu n elemente;
int a[101],min1,i,n;
int main()
- pentru a afla minimul din şirul a cu n elemente procedăm
{ astfel: presupunem mai întâi că minimul ocupă chiar prima
cout<< "n=";cin>>n;
for(i=1;i<=n;i++) { poziţie a şirului, deci minimul şirului este a[1], după care
cout<<"a["<<i<<"]=";
cin>>a[i]; } parcurgem într-un ciclu for începând cu poziţia a doua toate
min1=a[1];
for(i=1;i<=n;i++)
elementele şirului şi verificăm pentru fiecare element
if(a[i]<min1) corespunzător poziţiei, dacă acesta este mai mic decât
min1=a[i];
minimul ales la pasul precedent, dacă da, atunci variabila
cout<<"minim="<<min1;
return 0; care reţine minimul min1 va lua valoarea respectivă;
}
- în final se afişează variabila min1, care reţine minimul.
24. Se citește n, apoi încă n numere naturale, reprezentând elementele unui vector. Să se
realizeze un program care să calculeze valoarea minima și valoarea maximă a valorilor
elementelor vectorului.
Ex: Fie n=5 şi A=(5,4, 7,1,8), atunci maximul şirului va fi max1=8, iar minimul șirului va fi
min1=1
11
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
12
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Rezolvarea problemei 27
Comentarii:
#include <iostream>
using namespace std; - are loc citirea şirului a, cu n elemente;
int a[101],pozmax,i,n,j,max1; - pentru a afla poziţia pe care se află maximul în şirul
int main() a cu n elemente procedăm astfel: folosim două
{ variabile una care ne reţine maximul din şir max1
cout<< "n=";cin>>n; - şi alta care ne precizează poziţia pe care o ocupă în
for(i=1;i<=n;i++) {
şir maximul notată cu pozmax;
cout<<"a["<<i<<"]=";
cin>>a[i]; } - presupunem că maximul se află chiar pe prima
max1=a[1]; pozmax=1; poziţie deci variabila pozmax avea valoarea 1, iar
for(i=2;i<=n;i++) variabila max1 va avea valoarea a[1];
if (a[i]>max1) - după care parcurgem într-un ciclu for, începând cu
{max1=a[i]; poziţia a doua toate elementele şirului şi verificăm
pozmax=i;}
cout<<"Pozitie maxim= "<<pozmax;
pentru fiecare element corespunzător poziţiei dacă
return 0; acesta este mai mare decât maximul ales la pasul
} precedent, dacă da atunci variabila care reţine
maximul max1 va lua valoarea respectivă, iar
variabila pozmax va primi valoarea poziţiei
corespunzătoare;
- în final se afişează variabila pozmax, care reţine
poziţia pe care se află maximul şirului;
29. Se dă un şir A cu n elemente numere întregi. Să se realizeze un program care să verifice dacă
şirul are toate elementele numere pare şi să afişeze mesajul DA sau NU în caz contrar.
Ex: Fie n=5 şi a=(8,10,4,26,8), se va afişa DA;
Rezolvarea problemei 29 Comentarii:
#include <iostream> - are loc citirea şirului a, cu n elemente;
using namespace std;
int a[101],n,i,ok; - atunci când dorim să verificăm dacă toate elementele
int main() unui şir îndeplinesc o condiţie se poate proceda astfel:
{ cout<< "n="; cin>>n; - presupunem că toate elementele şirului îndeplinesc
for(i=1;i<=n;i++) condiţia, iar pentru aceasta folosim o variabilă
cin>>a[i]; notată în program cu ok, care va fi iniţializată cu
ok=1; valoarea 1;
for(i=1;i<=n;i++)
if(a[i]%2!=0) - într-un ciclu for parcurgem toate poziţiile şirului şi
ok=0; verificăm dacă există în şir cel puţin un element
if(ok==1) corespunzător poziţiei care nu îndeplineşte
cout<<"DA"; condiţia, dacă da atunci variabila ok va primi
else valoarea 0;
cout<<"NU"; - dacă variabila ok va avea la final valoarea 1, atunci vom
return 0;} afişa mesajul “DA” (toate elementele şirului îndeplinesc
condiţia), în caz contrar se va afişa mesajul “NU”.
13
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
31. Se dă un vector cu n elemente numere naturale. Să se verifice dacă are elementele ordonate
crescător. Programul afișează pe ecran mesajul DA, dacă vectorul are elementele ordonate
crescător, sau NU, în caz contrar.
Ex: Fie n=5 şi a=(8,10,14,26,28) se va afişa DA;
14
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
36. Se dau doi vectori cu câte n elemente, numere naturale. Să se realizeze un program care să
verifice dacă cei doi vectori conțin exact aceleași elemente pe poziții pare. Programul
afișând un mesaj corespunzător.
Ex: Fie n=5 şi A=(9,10,5,26,8) și B=(8,10,3,26,8) se va afișa DA.
#include <iostream>
Comentarii:
using namespace std; - are loc citirea şirului a, cu n elemente şi afişarea lui pe
int a[101],n,i; ecran;
int main() - pentru afişa ultimul element al unui şir care îndeplineşte o
{ condiţie, în cazul în care există procedăm astfel:
cout<< "n="; cin>>n; - se iniţializează o variabilă notată în program cu i cu ultima
for(i=1;i<=n;i++)
cin>>a[i]; poziţie a şirului;
i=n; - atâta timp cât elementul corespunzător poziţiei nu
while(i>=1&&a[i]%7!=0) îndeplineşte condiţia şi mai sunt elemente în şir care nu
i--; au fost verificate, variabila i scade cu 1;
if(i==0)
cout<<"NU EXISTA"; - procedeul continuă până când un element îndeplineşte
else condiţia sau au fost parcurse toate elementele şirului şi
cout<<"ELEMENTUL ESTE: nici unul nu îndeplineşte condiţia;
"<<a[i]; - dacă la ieşirea din while variabila i va avea o valoare
return 0; diferită de 0, atunci se va afişa ultimul element care
} îndeplineşte condiţia, în caz contrar, se va afişa un mesaj
că nu există în şir elemente care îndeplinesc condiţia dată.
15
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
40. Se dă un şir cu n elemente, numere naturale. Să se verifice dacă există în şir elemente care
să aibă ambii vecini de aceeaşi paritate cu el. Programul afișează pe ecran mesajul DA, dacă
există în şir elemente care să aibă ambii vecini de aceeaşi paritate cu el, respectiv NU în caz
contrar.
Ex: Fie n=5 şi A=(8,10,3,26,8),se va afişa NU.
41. Se dau doi vectori cu câte n elemente, numere naturale. Verificați dacă cei doi vectori
conțin exact aceleași elemente. Programul va afișa pe ecran mesajul DA, dacă cei doi
vectori conțin exact aceleași elemente, respectiv NU, în caz contrar.
Fie n=5 şi A=(18,10,3,26,8) și B=(10,3,8,26,18)se va afişa DA.
42. Se dă un şir A cu n elemente numere întregi. Să se realizeze un program care să verfice dacă
şirul A are toate elementele distincte.
Ex: Fie n=5 şi A=(8,10,5,26,8), se va afişa:‘NU’.
Rezolvarea problemei 42
Comentarii:
#include <iostream>
using namespace std;
int n,i,j,ok,a[101]; - are loc citirea şirului a, cu n elemente şi afişarea lui
int main() pe ecran;
{ - presupunem că toate elementele şirului sunt
cout<< "n="; cin>>n; distincte, iar pentru aceasta folosim o variabilă
for(i=1;i<=n;i++) notată în program cu ok, care va fi iniţializată cu
cin>>a[i];
ok=1;
valoarea 1;
for(i=1;i<n;i++) - parcurgem într-un ciclu for fiecare poziţie a
for(j=i+1;j<=n;j++) elementelor de la 1 la n-1 cu ajutorul variabilei de
if(a[i]==a[j]) ciclare i şi comparăm elementul corespunzător
ok=0; poziţiei i, (a[ i ] ) pe care îl vom numi pivot, cu toate
if(ok==1) elemntele care urmează în şir
cout<<"DA";
else (a[i+1],a[i+2],....,a[n]);
cout<<"NU"; - elementele care urmează în şir vor fi parcurse cu
return 0; ajutorul celui de-al doilea ciclu for, unde variabila
} de ciclare j va lua pe rând valorile i+1,i+2,.......,n.
- dacă în urma comparării elementul corespunzător
poziţiei i, a[ i ] este egal cu un element a[ j ] aflat
după el atunci variabila ok va primi valoarea 0;
- dacă variabila ok va avea la final valoarea 1 atunci,
vom afişa mesajul “DA” (toate elementele şirului
distincte), în caz contrar se va afişa mesajul “NU”.
16
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
În viaţa de zi cu zi suntem de multe ori puşi în situaţia următoare: să ordonăm alfabetic nume de
copii, să aşezăm în ordine crescătoare un şir de copii după înălţimile lor; de asemenea se ştie că
listele cu elevii admişi la un examen sunt afişate în ordine descrescătoare a mediilor şi exemplele pot
continua.
Pentru ca aceste situaţii să fie rezolvate uşor vom prezenta două metode de sortare:
1. sortarea prin interschimbare directă;
2. sortarea prin metoda bulelor.
1) 8, 10, 5, 26, 4;5,10, 8, 26, 4;4, 10, 8, 26, 5; (pivotul este a[1])
2) 4, 10, 8, 26, 5; 4, 8, 10, 26, 5; 4, 5, 10, 26, 8; (pivotul este a[2])
3) 4, 5, 10, 26, 8; 4, 5, 8, 26, 10; (pivotul este a[3])
4) 4, 5, 8, 26, 10; 4, 5, 8, 10, 26; (pivotul este a[4])
17
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
1) 8, 10, 5, 26, 4; 8, 5, 10, 26, 4; 8, 5, 10, 4,26; (s-a realizat prima parcurgere a şirului, q=false);
2) 8, 5, 10, 4,26; 5, 8, 10, 4,26; 5, 8, 4, 10,26; (s-a realizat a doua parcurgere a şirului, q=false);
3) 5, 8, 4, 10,26; 5, 4, 8, 10,26; (s-a realizat a treia parcurgere a şirului, q=false);
4) 5, 4, 8, 10,26; 4, 5, 8, 10,26; (s-a realizat a patra parcurgere a şirului, q=false);
5) 4, 5, 8, 10,26; (s-a realizat a cincea parcurgere a şirului, q=true şi după cum se şi observă şirul
este sortat crescător.);
18
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
49. Se citește un vector A cu n (n<=1000) elemente numere naturale. Realizați un program care
să ordoneze crescător elementele prime și plasați-le la începutul vectorului și apoi
descrescător pe cele neprime, în a doua parte a vectorului. Afișați vectorul ordonat ca în
cerință.
Ex: Fie n=5 şi A=(8,10,2,11,4) , se va afişa: A=(2,11,10,8,4);
50. Se citește un vector A cu n (n<=1000) elemente numere naturale. Realizați un program care
să verifice dacă elementele vectorului alternează ca paritate, adică oricare două elemente
alăturate au parități diferite. Răspunsul va fi DA în caz afirmativ, altfel va fi NU.
Ex: Fie n=5 şi A=(8,10,2,11,4) , se va afişa NU, iar pentru A=(3,8,7,112,47) se va afișa DA.
51. Se citește un vector cu n elemente, numere naturale. Să se afișeze elementele din vectori
care sunt multipli ai ultimului element, separate printr-un spațiu.
Ex: Fie n=5 și A=(17, 4, 9, 6, 2), se va afișa 4 6 2
#include <iostream>
using namespace std;
int a[1001], n, i;
int main()
{
cin>>n;
for (i=1; i<=n; i++)
cin>>a[i];
for (i=1; i<=n; i++)
if (a[i]%a[n]==0) cout<<a[i]<<' ';
return 0; }
19
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
52. Se citește un vector cu n elemente, numere naturale. Să se afișeze elementele cu indici pari
în ordinea crescătoare a indicilor, iar elementele cu indici impari în ordinea descrescătoare
a indicilor.
Ex. Dacă n=5 și A=(7 9 2 6 8), se va afișa:
96
827
#include <iostream>
using namespace std;
int a[1001], n, i;
int main()
{ cin>>n;
for (i=1; i<=n; i++)
cin>>a[i];
for (i=1; i<=n; i++)
if (i%2==0) cout<<a[i]<<' ';
cout<<'\n';
for (i=n; i>=1; i--)
if (i%2==1) cout<<a[i]<<' ';
return 0;}
53. Se citește un vector cu n elemente, numere naturale. Să se determine câte elemente ale
vectorului sunt egale cu diferența dintre cea mai mare și cea mai mică valoare din vector.
Ex. Dacă n=5 și A=(7 7 9 2 4), se va afișa 2 (Diferența dintre cea mai mare și cea mai mică
valoare din vector este 9 - 2 = 7. Valoarea 7 apare în vector de 2 ori.
#include <iostream>
using namespace std;
int a[1000],i,n,Max,Min,C,d,k;
int main()
{ cin>>n;
Min=1000;
Max=0;
for(i=1;i<=n;i++) cin>>a[i];
for(i=1;i<=n;i++)
if(a[i]<Min) Min=a[i];
else if (a[i]>Max) Max=a[i];
d=Max-Min;
C=0;
for(i=1;i<=n;i++)
if(a[i]==d) C++;
cout<<C<<" ";
return 0;}
20
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
{ cin>>n;
c=0;
cin>>a[1];
if(n==1)
{
cout<<a[1];
return 0;
}
amax=amin=a[1];
t=u=1;
for(i=2;i<=n;i++)
{
cin>>a[i];
if(a[i]>amax)
{
t=i;
amax=a[i];
}
if(a[i]<amin)
{
u=i;
amin=a[i];
}
}
if(u<t)
{
a[0]=u;
u=t;
t=a[0];
}
for(i=t;i<=u;i++)
{
cout<<a[i]<<" ";
}
return 0;}
55. Se dă un şir cu n elemente, numere naturale. Să se verifice dacă în şir există elemente
impare. Programul afișează pe ecran mesajul DA, dacă şirul conţine elemente impare,
respectiv NU în caz contrar. Ex. Pentru n=5 și A=(2 8 6 10 8), se va afișa NU.
#include <iostream>
using namespace std;
int n, a[1001], ok, i;
int main()
{ cin>>n;
ok=0;
for(i=1; i<=n; i++)
{
cin>>a[i];
if(a[i]%2==1) ok=1;
}
if(ok==1) cout<<"DA";
else cout<<"NU";
return 0;}
56. Se dă un şir cu n elemente, numere naturale. Să se verifice dacă toate elementele şirului au
număr par de cifre. Programul afișează pe ecran mesajul DA, dacă toate elementele şirului
21
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
au număr par de cifre, respectiv NU în caz contrar. Ex. Pentru n=5 și A=(2820 82 65 1026 84),
se va afișa DA.
#include <iostream>
using namespace std;
int n, i, C, a, k, x[1001];
int main()
{ cin>>n;
C=0;
for (i=1; i<=n; i++)
{
cin>>x[i];
a=x[i];
k=0;
while (a)
{
k++;
a/=10;
}
if (k%2==0) C++;
}
if (C==n) cout<<"DA";
else cout<<"NU";
return 0;}
57. Se dă un şir cu n elemente, numere naturale. Să se verifice dacă toate elementele şirului au
toate cifrele distincte. Programul afișează pe ecran mesajul DA, dacă toate elementele
şirului au toate cifrele distincte, respectiv NU în caz contrar. Ex. Dacă n=5 și A=(84 60 102
24 6), se va afișa DA.
#include <iostream>
using namespace std;
long long a[101], n, i, OK, x, c;
int main()
{ cin >>n;
for (i=1; i<=n; i++)
cin >>a[i];
OK=1;
for (i=1; i<=n; i++)
{
while (a[i])
{
x=a[i];
c=x%10;
x/=10;
while (x)
{
if (x%10==c) OK=0;
x/=10;
}
a[i]/=10;
}
}
if (OK==1) cout <<"DA";
else cout <<"NU";
return 0;}
22
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
58. Să se scrie un program care citeşte cel mult 1000000 de numere naturale din intervalul
închis [0, 9] şi determină cel mai mare număr prim citit şi numărul său de apariţii. Fişierul
de intrare ciffrecv.in conţine cel mult 1000000 numere naturale din intervalul închis [0,9],
dispuse pe mai multe linii şi separate prin spaţii (fişierul de intrare va conţine cel puţin un
num). Fişierul de ieşire ciffrecv.out va conţine pe prima linie două numere naturale MAX şi
NR_AP, cu semnificaţia din enunţ.
ciffrecv.in ciffrecv.out
1 1 2 2 5 2
5 8 9 1 9 5
#include <fstream>
using namespace std;
ifstream f("ciffrecv.in");
ofstream g("ciffrecv.out");
long n, a, ap[10];
int main()
{
while (f>>a)
{
if (a==7) ap[7]++;
if (a==5) ap[5]++;
if (a==3) ap[3]++;
if (a==2) ap[2]++;
}
if (ap[7]!=0) g<<7<<' '<<ap[7];
else if (ap[5]!=0) g<<5<<' '<<ap[5];
else if (ap[3]!=0) g<<3<<' '<<ap[3];
else if (ap[2]!=0) g<<2<<' '<<ap[2];
return 0;}
59. Se dau mai multe numere naturale, fiecare cu cel mult 9 cifre. Să se afişeze, în ordine
descrescătoare, toate cifrele care apar în numerele date. Fişierul de intrare cifreord1.in
conţine cel mult 10.000 numere naturale, dispuse pe mai multe linii. Fişierul de ieşire
cifreord1.out va conţine cifrele determinate, ordonate descrescător, câte 20 pe o linie,
valorile de pe fiecare linie fiind separate prin spaţii. Ultima linie a fişierului poate conţine
mai puţin de 20 de cifre.
cifreord1.in cifreord1.out
301941 81912 83392 9 9 9 9 9 8 8 7 7 6 6 6 4 4 4 4 3 3 3 3
776996 431446 2 2 1 1 1 1 1 0
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cifreord1.in");
ofstream g("cifreord1.out");
int x, ap[10], i, j, q;
int main()
{
23
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
while (f>>x)
{
if (x==0) ap[0]++;
else while (x)
{
ap[x%10]++;
x/=10;
}
}
for (i=9; i>=0; i--)
{
for (j=1; j<=ap[i]; j++)
{
g<<i<<' ';
q++;
if (q%20==0) g<<endl;
}
}
return 0;}
60. Fișierul de intrare nrlipsa1.in conține cel puțin 3 și cel mult 1 000 000 de numere naturale.
Se cere să se afișeze în fișierul de ieșire nrlipsa1.out, separate printr-un spaţiu, două
numere distincte, anume cel mai mic număr par cu două cifre și cel mai mare număr par cu
două cifre care NU fac parte din şir. Dacă nu există două astfel de valori, pe ecran se
afişează mesajul nu exista.
nrlipsa1.in nrlipsa1.out
7 2 40 5 10 15 11 12 18 350 14 98
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("nrlipsa1.in");
ofstream g("nrlipsa1.out");
long long x[100],a,p,q,i;
int main()
{
while(f>>a)
if(a>=10 && a<=99)
x[a]=1;
p=0;
for(i=10;i<=98&&!p;i+=2)
if(!x[i]) p=i;
q=0;
for(i=98;i>=10&&!q;i-=2)
if(!x[i]) q=i;
if(p==q) g<<"nu exista";
else g<<p<<" "<<q;
return 0;}
24
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Să presupunem că avem o tablă de şah şi vrem să identificăm poziţia pe care o ocupă două
piese X şi Y pe tabla de şah de mai jos:
1 2 3 4 5 6 7 8
2 X
5 Y
Figura 1:
După cum se ştie o tablă de şah are 64 de căsuţe şi cum se observă din figura 1, prima piesă X
se găseşte în căsuţa aflată la intersecţia liniei 2 cu coloana 3, iar a doua piesă Y se găseşte în căsuţa
aflată la intersecţia liniei 5 cu coloana 6. Deci, putem spunem că piesele de şah găsesc la intersecţia
unei linii cu o coloană.
Vom da tuturor pieselor de şah de pe tablă un nume comun fie acesta a şi cu ajutorul a doi
indici, unul de linie şi unul de coloană, identificăm poziţia pe care o ocupă o piesă pe tabla de şah.
Deci:
25
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Tabla de şah poate fi privită ca un tabel în care piesele de şah sunt elementele tabelului,
poziţionate pe linii şi coloane; datorită acestei aşezări a elementelor în tabel spunem că avem de-a
face cu un tablou bidimensional;
Se numeşte tablou bidimensional deoarece are două dimensiuni, acestea fiind date de linii şi
coloane, iar poziţia unui element din tablou este dată de indicele de linie şi indicele de coloană.
a[ i ][ j ]
tip_dată nume_tablou[nr_elemente1][nr_elemente2] ;
unde:
OBSERVAŢII:
1. Tablurile bidimensionale se mai numesc şi matrici, iar atunci când numărul de linii într-o
matrice este egal cu numărul de coloane spunem că avem de- a face cu o matrice pătratică;
Fie matricea a, cu n linii şi n coloane :
26
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
a[0][0]a[0][1]..............................a[0][ n 2]a[0][n 1]
a[1][0]a[1][1]................................a[1][n 2]a[1][n 1]
a[ 2][0]a[ 2][1]..............................a[ 2][ n 2]a[ 2][ n 1]
..................................................................................
a[ n 1][0]a[ n 1][1]..........a[ n 1][ n 2]a[ n 1][n 1]
Atenţie:
a) .....................
Explicaţii:
int a[100][100];
-s-a declarat o variabilă a de tip matrice care poate avea 100
…………………….
de linii şi 100 coloane, iar tipul elementelor matricei este int;
b)
Explicaţii:
........................
float a[50][100]; -s-a declarat o variabilă a de tip matrice care poate avea 50
de linii şi 100 coloane, iar tipul elementelor matricei este
………………………
real ;
Explicaţii:
c) ..................
int a[2][4]={1,2,3,4}; -s-a declarat o matrice cu valori inițiale
sau
int a[2][4]={{1,2},{3,4}} a=
27
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
3. Tipul datelor din tablou, adică tip_dată, trebuie să fie standard sau definit de utilizator
inainte de a fi folosit.
Exemplu: …………………..
typedef int intreg;
intreg a[10][10];
……………………
4. Deorece adresa matricei este și adresa primului element, iar indicii reprezintă deplasarea
elementului față de adresa matricei, numerotarea indicilor se face de la 0, iar 0<=i<n și
0<=j<m, unde n reprezintă numărul de linii și m numărul de coloane ale matricei.
Observaţie:
cout<<”[“<<i<<”,”<<j<<”]=”;
#include <iostream>
using namespace std;
Comentarii:
int a[101][101],i,j,n,m;
- în secţiuneade declarare a variabilelor s-a declarat
int main() tabloul bidimensional ( matrice) cu 101 de linii şi
{ 101 de coloane;
linia
cout<<"n=";cin>>n; coloana
- citim mai întâi în variabilele n şi m, numărul
cout<<"m=";cin>>m;
efectiv de linii şi coloane folosite în aplicaţie;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++) - pentru a realiza citirea, parcurgem cu ajutorul
{ cout<<"a["<<i<<","<<j<<"]="; primului ciclu for liniile tabloului bidimensional,
cin>>a[i][j]; iar variabila de ciclare ,,i” va lua pe rând valorile 1,
} 2,....,n şi pentru fiecare linie ,,i” în parte,
for(i=1;i<=n;i++) parcurgem în al doilea ciclu for cu ajutorul
{for(j=1;j<=m;j++)
variabilei de ciclare ,,j” coloanele 1,2,...,m şi citim
cout<<a[i][j]<<" ";
cout<<endl; elementul corespunzător linie i şi coloanei j, în
} variabila a[i,j];
return 0; - pentru afişarea matricei se procedează astfel:
} - parcurgem în primul ciclu for cu ajutorul
variabilei de ciclare ,,i”, liniile 1,2,….,n, iar pentru
fiecare linie i, afişăm pe un rând toate elmentele
ei cu ajutorul celui de-al doilea ciclu for;
- cu ajutorul lui cout<<endl; trecem la linia
următoare, pentru a continua afişarea
elementelor următoarei linii pe un rând nou;
- afişarea se termină atunci când au fost parcurse
toate liniile şi afişate toate elementele.
28
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Rezolvarea problemei 3
Comentarii:
#include <iostream>
using namespace std; - are loc citirea matricei a, cu n linii şi coloane;
int a[101][101],i,j,n;
int main() - parcurgem într-un ciclu for, liniile matricei
{
cout<<"n=";cin>>n; i=1,2,....,n, iar pentru fiecare linie în parte, cu
for(i=1;i<=n;i++) ajutorul celui de-al doilea ciclu for parcurgem
for(j=1;j<=n;j++) coloanele j=1,2,.....,n, corespunzătoare liniei ,,i” din
{ cout<<"a["<<i<<","<<j<<"]=";
cin>>a[i][j]; matrice şi verificăm dacă elementul curent a[i,j],
} aflat pe linii pare (i % 2==0) şi coloane impare (j
for(i=1;i<=n;i++) %2!=0) este pozitiv:
for(j=1;j<=n;j++)
if(a[i][j]>0&&i%2==0&&j%2!=0)
cout<<a[i][j]<<" "; - dacă da, are loc afişarea elementului
return 0; respectiv;
} - dacă nu, se trece la verificarea următoarelor
elemente;
- programul se termină atunci când au fost parcurse
toate elementele matricei şi s-a verificat dacă
îndeplinesc condiţiile problemei.
29
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Rezolvarea problemei 4:
#include <iostream> Comentarii:
using namespace std;
int a[101][101],i,j,n; - are loc citirea şi afişarea matricei a, cu n linii şi coloane;
int main()
{ - pentru a înţelege mai uşor problema considerăm
cout<<"n=";cin>>n; următoarea matrice pătratică, pentru n=4;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) a[1,1] a[1,2] a[1,3] a[1,4]
{
cout<<"a["<<i<<","<<j<<"]="; a[2,1] a[2,2] a[2,3] a[2,4]
cin>>a[i][j];
} a[3,1] a[3,2] a[3,3] a[3,4]
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++) a[4,1] a[4,2] a[4,3] a[4,4]
cout<<a[i][j]<<" ";
return 0; - pentru a afişa elementele de deasupra diagonalei
} principale se observă că trebuie să parcurgem numai
liniile care le conţin şi anume i=1,2,...,n-1, iar pentru
fiecare linie i, vom parcurge numai coloanele j ale liniei i
în care se află elementele, j=i+1,..., n;
30
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
2 2 4
Ex: Fie matricea A= 2
2 6 2 cu n =3, s=4+26=30;
3 2 17
Comentarii:
Rezolvarea problemei 7:
#include <iostream> - are loc citirea şi afişarea matricei a, cu n linii şi n
using namespace std; coloane;
int a[101][101],i,j,n,s; - pentru a înţelege mai uşor problema considerăm
int main()
{ următoarea matrice pătratică, pentru n=4;
cout<<"n=";cin>>n; a[1,1] a[1,2] a[1,3] a[1,4]
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) a[2,1] a[2,2] a[2,3] a[2,4]
{
cout<<"a["<<i<<","<<j<<"]=";
a[3,1] a[3,2] a[3,3] a[3,4]
cin>>a[i][j];
}
s=0;j=n; a[4,1] a[4,2] a[4,3] a[4,4]
for(i=1;i<=n;i++)
{if(a[i][j]%2==0) - pentru a calcula suma elementelor pare de pe
s=s+a[i][j]; diagonala secundară vom proceda astfel:
j--;}
cout<<"s="<<s; - se iniţializează variabila s cu zero şi variabila j cu
return 0;
} ajutorul căreia vom parcurge coloanele cu n;
- parcurgem liniile care conţin aceste elemente,
cu ajutorul unui ciclu for, i=1,2,....,n, iar pentru
fiecare linie i, vom lua elementul de pe coloana
j care se află pe diagonala secundară şi
verificăm dacă este par, dacă da variabila s îşi
va schimba valoarea, s:=s+a[i,j];
- în final are loc afişarea sumei s.
31
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
32
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
2 4 5
Ex: Fie matricea A= cu n =3, se va afişa: media=42/9;
1 5 1
9 7 8
Rezolvarea problemei 12
Comentarii:
#include <iostream>
using namespace std;
- are loc citirea şi afişarea matricei a, cu n
int a[101][101],i,j,n,s;
double med; linii şi n coloane;
int main()
{ - se iniţializează variabila s cu zero;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++) - se parcurge matricea şi se calculează în
for(j=1;j<=n;j++) variabila s, suma tuturor elementelor
{ cout<<"a["<<i<<","<<j<<"]=";
cin>>a[i][j]; din matrice;
} - variabila med care reţine media
s=0; aritmetică a tuturor elementelor din
for(i=1;i<=n;i++) matrice, va fi egală cu suma/numărul de
for(j=1;j<=n;j++)
s=s+a[i][j]; elemente al matricei;
med=1.0*s/(n*n);
cout<<"media="<<med; - numărul de elemente al unei matrici
return 0; pătratice este n*n;
Indicaţie:
-pentru a calcula media aritmetică a elementelor, dintr-o matrice, care verifică o
condiţie, calculăm mai întâi suma elementelor care verifică acea condiţie şi numărul lor;
33
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
34
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
2 9 8
Ex: Fie matricea A= 2 0 7 cu n =3 se va afişa:NU
2 9 0
Comentarii:
#include <iostream>
#include<iomanip>
- are loc citirea matricei a, cu n linii şi n
using namespace std;
int a[101][101],i,j,n,min1; coloane şi afişarea ei pe ecran;
double med; - atunci când dorim să verificăm dacă există
int main() în matrice un element care îndeplineşte o
{ condiţie se poate proceda astfel:
cout<<"n=";cin>>n; - presupunem că nu există nici un
for(i=1;i<=n;i++)
element al matricei situat deasupra
for(j=1;j<=n;j++)
{ diagonalei secundare care să
cout<<"a["<<i<<","<<j<<"]="; îndeplinescă condiţia, iar pentru
cin>>a[i][j]; aceasta folosim o variabilă notată în
} program cu q, care se va iniţializa cu
q=0; valoarea 0 (false);
for(i=1;i<=n;i++)
for(j=1;j<=n-i;j++) - după care parcurgem elementele de
if(a[i][j]==0) deasupra diagonalei secundare din
q=1; matrice cu ajutorul celor două cicluri
if(q==1) for şi verificăm dacă există în matrice
cout<<"DA";
else cel puţin un element aflat pe linia i şi
cout<<"NU"; coloana j, a[i,j], care îndeplineşte
cout<<endl; condiţia, dacă da, atunci variabila q va
return 0;
} primi valoarea 1 (true);
- dacă variabila q va avea la final valoarea 1
(true) atunci, vom afişa mesajul “DA” (există
cel puţin un element nul în matrice), în caz
contrar se va afişa mesajul “NU”.
35
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Rezolvarea problemei 22
#include <iostream>
#include<iomanip>
Comentarii:
using namespace std;
int a[101][101],i,j,n,l1; - are loc citirea şi afişarea matricei a, cu n
int main() linii şi n coloane şi citirea liniei l1 care
{ urmează a fi eliminată;
cout<<"n=";cin>>n; - în acest caz, vom lăsa nemodificate
for(i=1;i<=n;i++)
elementele de pe liniile 1,2,....,l1;
for(j=1;j<=n;j++)
{ cout<<"a["<<i<<","<<j<<"]="; - iar liniile l1,....,n-1 se modifică astfel:
cin>>a[i][j]; - linia l1 va reţine elementele liniei l1+1;
} - linia l1+1 va reţine elementele liniei
cout<<"l1=";cin>>l1; l1+2;
for(i=l1;i<=n-1;i++) - procedeul continuă până când linia n-1
for(j=1;j<=n;j++)
va reţine elementele liniei n;
a[i][j]=a[i+1][j];
- în final are loc afişarea matricei
for(i=1;i<=n-1;i++) modificate, în care numărul de linii a
{for(j=1;j<=n;j++) scăzut cu 1.
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
36
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
25. Se dă o matrice A, cu n linii şi n coloane, cu elemente numere întregi şi două linii L1 şi L2. Să
se realizeze un program care verifică dacă o matrice are linia L1 identică cu linia L2, afişând
un mesaj corespunzător.
4 4 4
Ex: Fie matricea A= 4 4 4 cu n =3, Ll=1 şi L2=2, se va afişa:DA;
9 7 8
37
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Rezolvarea problemei 28
#include <iostream>
#include<iomanip> Comentarii:
using namespace std;
int a[101][101],i,j,n,l1,l2,x; - are loc citirea şi afişarea matricei a, cu
int main() n linii şi n coloane şi citirea liniilor l1 şi
{
l2;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++) - se observă că interschimbarea a două
for(j=1;j<=n;j++) linii l1 şi l2 se reduce de fapt la
{ cout<<"a["<<i<<","<<j<<"]="; interschimbarea elementelor aflate pe
cin>>a[i][j]; linia l1 şi coloana j cu elementele aflate
} pe linia l2 şi coloana j, unde j=1,2,...,n;
cout<<"l1=";cin>>l1;
- interschimbarea valorilor a două
cout<<"l2=";cin>>l2;
for(j=1;j<=n;j++) variabile se poate realiza, după cum se
{x=a[l1][j]; ştie cu ajutorul unei variabile auxiliare
a[l1][j]=a[l2][j]; x;
a[l2][j]=x;} - în final are loc afişarea matricei
for(i=1;i<=n;i++) modificate.
{for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
29. Scrieţi un program care citeşte de la tastatură două numere naturale nenule n şi m şi care
construieşte în memorie şi apoi afişează o matrice A cu n linii (numerotate de la 1 la n) şi m
coloane (numerotate de la 1 la m) cu proprietatea că fiecare element Aij memorează cea mai
38
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
mică dintre valorile indicilor i şi j ( 1≤i≤n, 1≤j≤m ). Ex. pentru n=4 și m=5, se va afișa
matricea
11111
12222
12333
12344
#include <iostream>
using namespace std;
int n, m, i, j, a[21][21];
int main()
{ cin>>n>>m;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
if (i<=j) a[i][j]=i;
else a[i][j]=j;
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++) cout<<a[i][j]<<' ';
cout<<endl;
}
return 0;}
30. Scrieţi un program care citeşte de la tastatură un număr natural n şi construieşte în memorie
o matrice cu n linii şi n coloane ale cărei elemente vor primi valori după cum urmează:
39
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
if(i!=j) a[i][j]=t;
t--;}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
cout<<a[i][j]<<' ';
cout<<'\n';
}
return 0;}
31. Scrieţi un program care citeşte de la tastatură două numere naturale nenule n şi m şi
construieşte în memorie o matrice cu n linii şi m coloane astfel încât, parcurgând tabloul
linie cu linie de sus în jos şi fiecare linie de la stânga la dreapta, să se obţină şirul primelor
n*m pătrate perfecte impare , ordonat strict crescător. Ex.n=2 și m=3 se va afișa:
1 9 25
49 81 121
#include <iostream>
using namespace std;
int n, i, j, a[101][101], k, m;
int main()
{ cin>>n>>m;
k=1;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
{
a[i][j]=k*k;
k+=2;
}
for(i=1; i<=n; i++)
{for(j=1; j<=m; j++)
cout<<a[i][j]<<" ";
cout<<'\n';}
return 0;}
32. Scrieţi un program care citeşte de la tastatură un număr natural n şi construieşte în memorie
o matrice cu n linii şi n coloane ale cărei elemente vor primi valori după cum urmează:
elementul din linia i şi coloana j primeşte ca valoare ultima cifră a produsului i*j (1≤i≤n şi
1≤j≤n). Ex. pentru n=4 se va afișa matricea:
1 2 3 4
2 4 6 8
3 6 9 2
4 8 2 6
#include <iostream>
using namespace std;
int i, j, n, a[25][25];
int main()
{
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=(i*j)%10;
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
40
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
cout<<a[i][j]<<" ";
cout<<"\n";
}
return 0;}
33. Scrieţi un program care citeşte de la tastatură un număr natural nenul n cu cel mult 9 cifre şi
construieşte un tablou bidimensional pătratic cu dimensiunea egală cu numărul de cifre ale
lui n, completată cu cifrele lui n.
Elementele de pe prima coloană vor fi egale cu cifra unităţilor lui n, elementele de pe a doua
coloană vor fi egale cu cifra sutelor, etc. De exemplu, dacă se citește valoarea 1359, pentru
n, se va afișa matricea:
9 5 3 1
9 5 3 1
9 5 3 1
9 5 3 1
#include <iostream>
using namespace std;
int n,nr,k,i,j,c,a[101][101];
int main()
{ cin>>n;
k=0;
nr=n;
while (nr)
{
k++;
nr/=10;
}
for (j=1; j<=k; j++)
{
c=n%10;
for (i=1; i<=k; i++)
a[i][j]=c;
n/=10;
}
for (i=1; i<=k; i++)
{
for (j=1; j<=k; j++)
cout<<a[i][j]<<' ';
cout <<'\n';
}
return 0;}
34. Scrieţi un program care citeşte de la tastatură un număr natural n cu exact 5 cifre şi
construieşte în memorie o matrice cu 6 linii şi 6 coloane ale cărei elemente vor primi valori
după cum urmează:
41
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
35. Scrieţi un program care citeşte de la tastatură un număr natural n şi construieşte în memorie
o matrice cu n linii şi n coloane în care elementele de pe cele două diagonale sunt egale cu
0, elementele care se află deasupra ambelor diagonale sunt egale cu 1, elementele care se
află sub ambele diagonale sunt egale cu 2, iar restul elementelor sunt egale cu 3. Ex. pentru
n=5 se va afișa matricea:
0 1 1 1 0
3 0 1 0 3
3 3 0 3 3
3 0 2 0 3
0 2 2 2 0
#include <iostream>
using namespace std;
int i,j,n,a[25][25];
int main()
42
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
{
cin>>n;
for(i=1;i<=n;i++)
a[i][i]=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][n-i+1]=0;
for(i=1;i<=n/2;i++)
for(j=i+1;j<n-i+1;j++)
a[i][j]=1;
for(j=1;j<=n/2;j++)
for(i=j+1;i<n-j+1;i++)
a[i][j]=3;
for(i=n;i>=1;i--)
for(j=i-1;j>=n-i+2;j--)
a[i][j]=2;
for(j=n;j>=1;j--)
for(i=j-1;i>=n-j+2;i--)
a[i][j]=3;
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;}
return 0;}
36. Scrieţi un program care citeşte de la tastatură un număr natural n şi construieşte în memorie
o matrice cu n linii şi n coloane, numerotate de la 1 la n, în care elementele de pe liniile cu
indice impar sunt egale cu indicele de linie, iar elementele situate pe linii cu indice par sunt
egale cu indicele de coloană. Ex. pentru n=5 se v afișa matricea:
1 1 1 1 1
1 2 3 4 5
3 3 3 3 3
1 2 3 4 5
5 5 5 5 5
#include <iostream>
using namespace std;
int n,a[25][25],i,j;
int main()
{
cin>>n;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
if (i%2!=0) a[i][j]=i;
else a[i][j]=j;
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
cout<<a[i][j]<<' ';
cout<<endl;
}
return 0;}
37. Scrieţi un program care citeşte de la tastatură un număr natural n şi construieşte în memorie
o matrice cu n linii şi n coloane, numerotate de la 1 la n, în care fiecare element aflat pe
chenarul exterior al matricei este egal cu suma dintre indicele liniei şi indicele coloanei pe
43
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
care se află, iar fiecare dintre celelalte elemente este egal cu suma celor trei “vecini” situaţi
în matrice pe linia anterioară. Ex. pentru n=5 se va afișa matricea:
2 3 4 5 6
3 9 12 15 7
4 24 36 34 8
5 64 94 78 9
6 7 8 9 10
#include <iostream>
using namespace std;
int n, i, j, a[16][16];
int main()
{
cin>>n;
for (j=1; j<=n; j++) a[1][j]=j+1;
for (i=2; i<=n; i++) a[i][1]=i+1;
for (j=2; j<=n; j++) a[n][j]=a[n][j-1]+1;
for (i=2; i<=n; i++) a[i][n]=a[i-1][n]+1;
for (i=2; i<n; i++)
for (j=2; j<n; j++) a[i][j]=a[i-1][j-1]+a[i-1][j]+a[i-1][j+1];
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++) cout<<a[i][j]<<' ';
cout<<endl;
}
return 0;}
38. Scrieţi un program care citeşte de la tastatură două numere naturale nenule n şi m şi care
construieşte în memorie şi apoi afişează o matrice A cu n linii şi m coloane astfel încât prin
parcurgerea acesteia linie cu linie de sus în jos şi fiecare linie de la stânga la dreapta, se
obţin în ordine descrescătoare toate numerele naturale de la 1 la m*n. Ex. n=4 și m=3, se va
afișa:
12 11 10
9 8 7
6 5 4
3 2 1
#include <iostream>
using namespace std;
int n, m, i, j, x, a[25][25];
int main()
{ cin>>n>>m;
x=n*m;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
{
a[i][j]=x;
x--;
}
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++) cout<<a[i][j]<<' ';
cout<<endl;
}
return 0;}
44
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
#include <iostream>
using namespace std;
int n,i,j,x,a[51][51];
int main()
{ cin>>n;
x=0;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
{
x+=2;
if (x%3==0)
while(x%3==0) x+=2;
a[i][j]=x;
}
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++) cout<<a[i][j]<<' ';
cout<<'\n';
}
return 0;}
40. Scrieţi un program care citeşte de la tastatură doua numere naturale n şi k şi construieşte în
memorie o matrice cu n linii şi n coloane formată numai din valori 1, 2, 3 şi 4 astfel încât:
elementele aflate la intersecţia primelor k linii cu primele k coloane sunt egale cu 1,
elementele aflate la intersecţia primelor k linii cu ultimele n-k coloane sunt egale cu 2,
elementele aflate la intersecţia ultimelor n-k linii cu primele k coloane sunt egale cu 3,
elementele aflate la intersecţia ultimelor n-k linii cu ultimele n-k coloane sunt egale cu 4. De
exemplu, pentru n=5 și k=3 se va afișa matricea:
1 1 1 2 2
1 1 1 2 2
1 1 1 2 2
3 3 3 4 4
3 3 3 4 4
#include <iostream>
using namespace std;
int n, k, i, j, a[25][25];
int main()
{ cin>>n>>k;
for (i=1; i<=k; i++)
for (j=1; j<=k; j++) a[i][j]=1;
for (i=1; i<=k; i++)
for (j=k+1; j<=n; j++) a[i][j]=2;
for (i=k+1; i<=n; i++)
45
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
41. Scrieţi un program care citeşte de la tastatură trei numere naturale n, a, b şi construieşte în
memorie o matrice cu n linii şi n coloane formată numai din valori 0, 1, 2, 3 şi 4 astfel încât:
elementele aflate pe linia a sau coloana b sunt egale cu 0, cele aflate deasupra liniei a şi la
stânga coloanei b sunt egale cu 1, cele aflate deasupra liniei a şi la dreapta coloanei b sunt
egale cu 2, cele aflate sub linia a şi la stânga coloanei b sunt egale cu 3, iar elementele aflate
sub linia a şi la dreapta coloanei b sunt egale cu 4. Ex. pentru n=5, a=4 și b=3, se va afișa
matricea:
1 1 0 2 2
1 1 0 2 2
1 1 0 2 2
0 0 0 0 0
3 3 0 4 4
#include <iostream>
using namespace std;
int n, i, j, a, b, x[25][25];
int main()
{ cin>>n>>a>>b;
for (i=1; i<a; i++)
for (j=1; j<b; j++) x[i][j]=1;
for (i=1; i<a; i++)
for (j=b+1; j<=n; j++) x[i][j]=2;
for (i=a+1; i<=n; i++)
for (j=1; j<b; j++) x[i][j]=3;
for (i=a+1; i<=n; i++)
for (j=b+1; j<=n; j++) x[i][j]=4;
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++) cout<<x[i][j]<<' ';
cout<<endl;
}
return 0;}
42. Scrieţi un program care citeşte de la tastatură un număr natural n şi construieşte în memorie
o matrice cu n linii şi n coloane în care ultima linie conţine, în ordine, numerele 1, 2, 3,.., n,
elementele situate deasupra diagonalei principale sunt nule şi oricare alt element este
obţinut prin însumarea elementelor vecine cu el, aflate pe linia imediat următoare, pe
aceeaşi coloană cu el sau pe una din coloanele alăturate. Ex. pentru n=4, se va afișa
matricea:
27 0 0 0
9 18 0 0
3 6 9 0
46
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
1 2 3 4
#include <iostream>
using namespace std;
int i,j,n,k,a[16][16];
int main()
{
cin>>n;
for(i=1;i<=n;i++)
a[n][i]=++k;
for(i=n-1;i>=1;i--)
for(j=1;j<=i;j++)
a[i][j]=a[i+1][j-1]+a[i+1][j]+a[i+1][j+1];
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
cout<<a[i][j]<<' ';
cout<<'\n';}
return 0;}
43. Scrieţi un program care citeşte de la tastatură două numere naturale n şi m şi construieşte în
memorie o matrice cu n linii şi m coloane care conţine numerele naturale de la 1 la m*n,
dispuse astfel:
prima linie conţine numerele de la 1 la m, ordonate crescător;
a doua linie conţine numerele de la m+1 la 2*m, ordonate descrescător;
a treia linie conţine numerele de la 2*m+1 la 3*m, ordonate crescător;
a patra linie conţine numerele de la 3*m+1 la 4*m, ordonate descrescător;
etc.
44. Scrieţi un program care citeşte de la tastatură un număr natural n şi construieşte în memorie o
matrice cu n linii şi n coloane în care:
toate elementele de pe prima coloană au valoarea 1;
ultima linie conţine, în ordine strict crescătoare, numerele naturale din intervalul [1, n];
47
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
oricare alt element este obţinut prin însumarea celor două elemente vecine cu el,
aflate pe linia imediat următoare şi pe aceeaşi coloană cu el, respectiv pe aceeaşi linie
cu el şi pe coloana anterioară.
45. Scrieţi un program care citeşte de la tastatură un număr natural n şi construieşte în memorie
o matrice cu n linii şi n coloane ale cărei elemente sunt numere naturale, fiecare
reprezentând ultima cifră a câte unui termen al şirului lui Fibonacci, începând de la termenul
de indice 1 şi până la termenul de indice n2 . (Se consideră şirul lui Fibonacci, definit astfel:
f1=1 , f2=1 , fn=fn-1+fn-2 , dacă n>2.) Ex. pentru n=4, se va afișa matricea:
1 1 2 3
5 8 3 1
4 5 9 4
3 7 0 7
#include <iostream>
using namespace std;
int n, i, j, a, b, x[25][25];
int main()
{
cin>>n;
a=b=1;
x[1][1]=x[1][2]=1;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
{
if (!(i==1&&j==1 || i==1&&j==2))
{x[i][j]=(a+b)%10;
a=b;
b=x[i][j];}
}
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++) cout<<x[i][j]<<' ';
48
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
cout<<endl;
}
return 0;}
46. Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Calculaţi cel mai mare
divizor comun al sumei elemente de deasupra diagonalei principale și al sumei elementelor
de sub diagonala principală. Ex. n=4 și matricea
8 3 5 6
5 5 6 5
3 8 6 5
8 4 8 8 se va afișa: 6
#include <iostream>
using namespace std;
int a[201][201],n,i,j,s1,s2, t;
int main()
{ cin>>n;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cin>>a[i][j];
if(i>j) s1+=a[i][j];
if(i<j) s2+=a[i][j];
}
}
t=s1%s2;
while(t)
{
s1=s2;
s2=t;
t=s1%s2;
}
cout<<s2;
return 0;}
49
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
}
}
cout<<s;
return 0;}
49. Se dă o matrice cu m linii şi n coloane şi elemente numere naturale cu cel mult 4 cifre fiecare.
Să se determine coloanele matricei care au toate elementele egale cu aceeași valoare. Ex.
pentru datele de intrare:
4 5
2 3 7 5 7
3 3 7 4 7
7 3 7 1 7
8 3 7 6 7 se va afișa: 3 7 7
#include <iostream>
using namespace std;
int a[51][51],i,j,m,n,Ok,C;
int main()
{ cin>>m>>n;
for (i=1; i<=m; i++)
for (j=1; j<=n; j++) cin>>a[i][j];
C=0;
for (j=1; j<=n; j++)
{
Ok=1;
for (i=2; i<=m; i++) if (a[i-1][j]!=a[i][j]) Ok=0;
50
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
if (Ok==1)
{
cout<<a[i-1][j]<<' ';
C++;
}
}
if (C==0) cout<<"nu exista";
return 0;}
#include <fstream>
using namespace std;
ifstream f("rotire.in");
ofstream g("rotire.out");
long n, m, i, j, a[12][12], b[12][12];
int main()
{
f>>m>>n;
for (i=1; i<=m; i++)
for (j=1; j<=n; j++) f>>a[i][j];
for (i=1; i<=m; i++)
for (j=1; j<=n; j++) b[n+1-j][i]=a[i][j];
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++) g<<b[i][j]<<' ';
g<<endl;
}
return 0;
}
51
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Tipul fişier
Noţiunea de fişier
Un fişier este o colecţie de date de acelaşi tip, stocate pe disc. Atât programele C++, texte scrise
într-un limbaj de programare cât şi documente Word sau desene realizate în Paint precum şi
programele executabile sau colecţii de date sunt exemple de fişiere. Un fişier fizic, existent pe disc,
este identificat printr-un nume. Fișierul are două nume:
-numele extern sau numele fizic (este numele cu care este înregistrat pe director);
-numele intern sau numele logic (este numele sub care este cunoscut în cadrul programului)
În limbajul C++ sunt implementate două tipuri de fișiere:
-fișire text conțin numai caractere reprezentate în codul ASCII(se numeşte aşa deoarece
cuprinde, de obicei, caractere de orice tip: litere, cifre, spaţii, caractere speciale) structurate pe linii;
-fișiere binare conțin o secvență de octeți, fără o structură predefinită (vor fi studiate mai
târziu).
Fişiere text.
Un alt exemplu care ar trebui să ne convingă de necesitatea lucrului cu fişiere este acela că
unele rezultate trebuie listate la imprimantă. Evident că pentru aceasta trebuie să fie reţinute (şi
cum, dacă nu într-un fişier?).
Fişierele ce reţin date de intrare/ieşire sunt fişiere text. Componenetele acestora sunt caractere
structurate pe linii de lungimi variabile. Fiecare linie este terminată cu un marcaj de sfârşit de linie
(caracterele CR - #13- Carriage Return - caracterul de pe poziţia 13 în codul ASCII- şi LF – #10- Line
Feed- caracterul de pe poziţia 10 în codul ASCII). Fişierul este terminat cu caracterul ^Z( Ctrl+Z).
52
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Pentru ca un program C++ să lucreze cu un fişier text, este necesară utilizarea fișierului antet
fstream.h.
Exemplu: #include<fstream.h>
Exemplu:
-fișier de intrare ifstream f(“date.in”);
-fișier de ieșire ofstream g(“date.out”);
Crearea unui fișier cu date ”date.in”ce urmează a fi citite prin program și afișarea numerelor
într-un fișier de ieșire ”date.out” se realizează astfel:
53
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Se alege Yes, după care se introduce în căsuța de la File name numele fișierului date.in în care vor fi
datele care urmează a fi prelucrate prin program și Save.
Se alege Ok. După care se introduce pe prima linie numărul de numere ce urmează a fi citite din
fișierul date.in, iar pe linia a doua numerele.
54
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
După executarea programului se crează fișierul date.out care pentru a fi văzut procedăm astfel:
FILE-OPEN
55
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Citirea datelor de la tastatură și Citirea datelor din fișierul date.in și afișarea lor fișierul
afișarea lor pe ecran. date.out.
#include <iostream> #include <fstream>
using namespace std; using namespace std;
int n,x,i; ifstream f("date.in");
int main() ofstream g("date.out");
{cin>>n; int n,x,i;
for(i=1;i<=n;i++) int main()
{ cin>>x; {f>>n;
cout<<x<<" ";} for(i=1;i<=n;i++)
return 0; { f>>x; //citim în x cele n numere din fișier
} g<<x<<" ";}//scriem cele n numere în fișier
f.close(); g.close();
return 0;}
56
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
1. Se citeşte din fisierul date.in un şir de numere întregi de pe prima linie, separate printr-un
spaţiu. Să se afişeze toate numerele pozitive din fișierul date.in în fişierul date.out, unul
sub altul.
Rezolvarea problemei 1
2. Din fişierul f1.in se citesc n numere naturale astfel: de pe prima linie valoarea lui n, iar de
pe celelalte n linii numerele naturale. Să se descompună în factori primi numerele şi să
afişeze în f1.out, fiecare descompunere pe câte un rând, factorii primi separaţi printr-un
spaţiu.
Rezolvarea problemei 2
#include <fstream>
using namespace std; f1.in
ifstream f("f1.in");
3
ofstream g("f1.out");
int n,i,x,d;
120
int main()
{f>>n; 12
for(i=1;i<=n;i++)
{f>>x; 75
d=2;
while(x!=1)
{ if(x%d==0) f1.out
{x=x/d;
g<<d<<" "; } 22235
else
d++; } 223
g<<'\n';}
f.close();g.close(); 355
return 0;}
57
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
4. Din fişierul date.in se citesc mai multe numerere întregi cuprinse între 0 si 255. Să se scrie
în fişierul date.out numerele convertite în baza 2, unul sub altul.
Rezolvarea problemei 4
#include <fstream>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n,p,x,nr;
int main()
{
while(f>>x)
{p=1;nr=0;
while(x!=0)
{nr=nr+p*(x%2);
x=x/2;
p=p*10;
}
g<<nr<<endl;}
f.close();g.close();
return 0;}
6. În fişierul date.in se gǎsesc mai multe numere naturale, scrise pe primul rând al fişierului.
Sǎ se scrie în fişierul date.out acele dintre ele care sunt palindroame.
Rezolvarea problemei 6
#include <fstream> date.in
using namespace std;
int x,y,nr,inv; 123 12321 111 1001 100
ifstream f("date.in");
ofstream g("date.out");
int main()
{ while(f>>x)
{y=x;
inv=0; date.out
while(y!=0)
12321 111 1001
{inv=inv*10+y%10;
y=y/10; }
if(inv==x)
g<<x<<" ";}
f.close(); g.close();
return 0;}
7. Din fişierul date.in se citeşte de pe primul rând un numǎr natural, iar de pe urmǎtorul rând
n numere naturale, separate printr-un spaţiu. Sǎ se scrie pe prima linie numerele citite în
ordine crescǎtoare, în fişierul date.out.
Rezolvarea problemei 7
59
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
8. Se citeşte din date.in o matrice nXn: de pe prima linie se citeşte dimensiunea n a matricii,
iar de pe următoarele n linii elementele matricii. Sǎ se calculeze suma elementelor de pe
diagonala principalǎ şi secundarǎ şi să se scrie ca în exemplu în fişierul date.out.
Rezolvarea problemei 8
9. Fișierul text date.in conține, pe o singura linie, cel mult 1000 de numere naturale nenule,
numerele fiind separate prin câte un spațiu. Scrieți un program C/C++ care citește de la
tastatură un număr natural nenul n și numerele din fișierul date.in și care afișează pe ecran,
separate prin câte un spațiu, toate numerele din fișier care sunt divizibile cu n. Dacă fișierul
nu conține niciun astfel de număr, atunci se va afișa pe ecran mesajul NU EXISTA.
Ex: și n=10 date.in se va afișa: 500 10 40
3 500 2 10 7 40
10. Scrieţi un program C/C++ care citeşte din fişierul text date.in cel mult 100 de numere
naturale nenule aflate pe o singura linie, formate din cel mult 4 cifre fiecare, separate prin
spații și scrie în fişierul date.out numerele, în ordinea inversă față de cea în care au fost
citite, pe o singură linie separate prin spații.
Ex: se va afișa:
date.in date.out
3 5 2 10 7 40 40 7 1 0 2 5 3
60
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
HTML
Noțiuni de bază
HTML este prescurtarea de la Hyper Text Markup Language și este codul care stă la baza
paginilor web. Fișierele HTML au extensia .html sau .htm.
Putem scrie astfel de fișiere cu Notepad sau cu orice alt editor de text. Trebuie să fim atenție ca,
atunci când salvăm un fișier, extensia acestuia trebuie să fie .htm sau .html.
Un document html este format din elemente, marcate printr-o succesiune de tag-uri. Tag-
urile sunt simbolurile care marcheaza inceputul și sfârșitul unui element. În marea lor majoritate,
acestea apar în pereche, una de deschidere <etichetă> și una de închidere </etichetă>.
Componența unui document HTML este:
1. versiunea HTML a documentului
2. zona head cu etichetele <head></head>
3. zona body cu etichetele <body></body>
Toate paginile HTML încep cu eticheta <html> și se termină cu eticheta </html>.
În interiorul acestor etichete găsim perechea <head></head> și perechea <body></body>.
Zona head conține titlul paginii între etichetele <title> și </title>, stiluri pentru formatarea textului,
scripturi și linkuri către fișiere externe (de exemplu scripturi Javascript, fișiere de tip CSS, etc).
Conținutul etichetei title este afișat de browser pe cea mai de sus linie (banda albastră de sus).
Zona body găzduiește practic toate etichetele afișate de browser pe ecran.
Exemplu: o pagina HTML cu titlul Exemplu, iar conținutul Continut pagina
<html>
<head>
<title>Titlu</title>
</head>
<body>
Continut pagina
</body>
</html>
Comentariul in HTML, care bineînțeles nu va fi afișat de browser, poate fi introdus astfel:
<!-- Acesta este un comentariu in HTML -->
Formatare text
În HTML trecerea la un rând nou se face doar prin introducerea etichetei <br>, iar pentru paragraf
nou cu eticheta <p>.
61
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Exemplu
HTML Afisare
Spre exemplu fonturilor li se poate modifica: mărimea, culoarea, forma (normal, bold, italic),
familia (Arial, Verdana, etc.), textul poate fi aliniat pe orizontală sau verticală iar titlurile (header),
de la 1 la 6, sunt diferite ca mărime (1 cel mai mare iar 6 cel mai mic).
Etichetele <div> si </div> sunt similare etichetelor <span> si </span>, cu diferența că formatează
mai multe elemente și introduc un rând nou inainte și după sfârșitul zonei formatate.
Unul din atributele blocului div este align care poate lua valorile:
Dacă dorim ca textul să fie afișat exact așa cum a fost introdus (text preformatat) în fișierul sursă
vom folosi pereche de etichete <pre> și </pre>.
Exemplu
HTML Afisare
62
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
<cite>Citat</cite> Citat
<em>evidentiat</em> evidentiat
<big>mare</big> mare
<small>mic</small> mic
<h6>Titlu 6</h6>
Titlu 6
63
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Legenda:
br = line break/ sfârșit de rând
p = paragraph
hr = horizontal rule
Liste
Listele sunt un mod simplu de organizare a informației și pot fi neordonate, ordonate și de definiții.
Liste neordonate
Aceste liste sunt delimitate de etichetele <ul> si </ul>, iar elementele de <li> si </li>.
Exemplu
HTML Afisare
Exemple de culori:
Exemple de culori:
<ul>
<li>rosu</li>
rosu
<li>verde</li>
verde
<li>albastru</li> albastru
</ul>
Elementele listei pot fi particularizate folosind atributul type care poate lua valorile square, circle și
disc (observați afișarea)
Exemplu
HTML Afisare
Exemple de fructe:
Exemple de fructe:
<ul>
<li type="square">mere</li>
mere
<li type="circle">pere</li>
o pere
<li type="disc">prune</li> prune
</ul>
Liste ordonate
Aceste liste sunt delimitate de etichetele <ol> și </ol>, iar elementele de <li> și </li>.
Exemplu
64
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
HTML Afisare
Exemple de combustibili:
Exemple de combustibili:
<ol>
<li>benzina</li>
1. benzina
<li>motorina</li>
2. motorina
<li>gaz lichefiat</li> 3. gaz lichefiat
</ol>
Elementele listei pot fi particularizate folosind atributul type care poate lua valorile A (litere mari), a
(litere mici), I (cifre romane mari), i (cifre romane mici), 1 (opțiunea default):
Exemplu
HTML Afisare
Medii de stocare:
Medii de stocare:
<ol>
<li type="I">HDD-ul</li>
I. HDD-ul
<li type="I">discheta</li>
II. discheta
<li type="I">CD-ROM-ul</li> III. CD-ROM-ul
</ol>
Liste de definiții
Aceste liste sunt delimitate de etichetele <dl> si </dl>. Termenii listei sunt delimitați de etichetele
<dt> și </dt>, iar definițiile termenilor de <dd> și </dd>.
Exemplu
HTML Afisare
Legenda: Legenda:
<dl> HTML
<dt>HTML</dt>
<dd>Hyper Text Mark-ul Language</dd> Hyper Text Mark-ul Language
<dt>IP</dt>
<dd>Internet Protocol</dd> IP
</dl> Internet Protocol
65
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Listele pot fi imbricate, adică în interior pot conține una sau mai multe liste.
Exemplu
HTML Afisare
<ol> 1. Monitoare
<li>Monitoare o CRT
<ul> o LCD
2. Imprimante
<li>CRT</li>
o cu jet de cerneala
<li>LCD</li> o laser
</ul>
</li>
<li>Imprimante
<ul>
<li>cu jet de cerneala</li>
<li>laser</li>
</ul>
</li>
</ol>
Legenda:
ul = listă neordonată dt = termen al unei liste
ol = listă ordonată dd = derscrierea unui termen al listei
66
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Legături
Legatura (link-ul) este o etichetă foarte importantă în HTML deoarece dă posibilitate utilizatorului
să navigheze de la o pagina la alta. De obicei link-ul este subliniat iar atunci când suntem deasupra
lui cursorul își schimbă forma.
<a href="fisier.html">
<a href="folder/fisier.html">
<a href="http://www.proba.ro/fisier.html">
HTML Afisare
<a href="https://infopascupas.wordpress.com/">Site
Site de pregătire
de pregatire</a>
67
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
HTML Afisare
<a href="https://infopascupas.wordpress.com/"
Site de pregătire
target="_blank">Site de pregatire</a>
Putem insera un link către o adresa de e-mail putând asocia și un subiect prestabilit
HTML Afisare
Culoarea linkurilor
Poate fi modificata introducand in eticheta body urmatoarele atribute:
Exemplu:
<html>
<head>
<title>Exemplul 3_3</title>
</head>
<body link="green" vlink="black" alink="yellow">
<a href="link.html">Link</a>
</body>
</html>
Ancore
Se pot adăuga puncte de reper (ancore) pentru o deplasare mai ușoară în cazul unor pagini HTML
lungi sau către un loc anume aflat într-o altă pagină.
Ancora se definește tot între etichetele <a> și </a>, dar cu atributul name. Pentru a face trimitere
către ancoră se introduce un link cu atributul href având ca valoare denumirea ancorei.
Exemplu:
68
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
HTML Afisare
Imagini
Folosind imagini, pagină capătă un plus de atractivitate.
Câteva din formatele de imagini utilizate în paginile web sunt: JPEG (*.jpg sau *.jpeg), GIF (*.gif),
BMP (*.bmp), PNG (*.png).
Eticheta folosită pentru inserarea unei imagini in pagina este <img> și are urmatoarele atribute:
src = sursa, locul unde se află imaginea
width = lățimea imaginii
height = înălțimea imaginii
alt = numele care înlocuiește imaginea până aceasta se încarcă sau când nu a fost găsită
border = chenar (0 = lipsa bordura)
Recomandare:
69
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
- alt, existența valorii acestui atribut este utilă din punct de vedere SEO (Search Engine
Optimization)
Exemplu: o imagine cu lățime 100px, înălțime 75px, alt=poza și border=0 și încă o dată cu border=1
HTML Afisare
Exemplu: acceasi imagine care contine atributele alt si title (verificati cu Internet Explorer si Firefox)
HTML Afisare
Dacă doriți ca textul să încadreze imaginea, adăugați etichetei img atributul align
HTML Afisare
70
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Tabele
Aceste etichete au o mare utilizare deoarece tabele constituie structura care stă la baza organizării
marii majorități a paginilor web.
Tabelul este format din linii și coloane împărțind zona în celule. Fiecare celulă păstrează informația
care va fi afișată. Pentru o afișare corectă a tabelului, fiecare rând va avea același număr de celule.
Dacă dorim ca o celulă să fie goală vom introduce un spațiu gol (space).
Pentru inserarea unui tabel este folosită perechea de etichete <table> și </table>, pentru un rând
<tr> și </tr> iar pentru o celulă <td> și </td>.
Tabele pot fi imbricate, adică în interior pot conține unul sau mai multe tabele.
Exemplu: tabel cu 2 coloane și 2 randuri, border 1, coloana 1 lățime 80px, coloana 2 lățime 160px,
fiecare celulă are o altă culoare de fond (bgcolor).
HTML Afisare
<table border="1">
<tr><td width="80" bgcolor="red">rosu</td><td width="160" rosu galben
bgcolor="yellow">galben</td></tr><tr><td
bgcolor="white">alb</td><td bgcolor="green">verde</td></tr> alb verde
</table>
71
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Dacă dorim să evidențiem conținutul primului rând (capul de tabel) putem folosi perechea de
etichete <th> și </th> în locul etichetelor <td> si </td>. Astfel conținutul celulei va fi afișat îngroșat
și aliniat pe mijloc.
Exemplu: un tabel cu 3 randuri și 2 coloane folosind pe primul rând etichetele <th> si </th>
HTML Afisare
Titlul Titlul
<table border="1"> 1 2
<tr><th width="120">Titlul 1</th><th width="120">Titlul
2</th></tr><tr><td>1</td><td>2</td></tr><tr><td>3</td><td>4</td></tr> 1 2
</table>
3 4
Eticheta caption va adaugă o linie text deasupra tabelului, centrată pe mijloc, de obicei folosită ca
fiind un titlu al tabelului. Caption se plasează obligatoriu imediat după tag-ul table, dar înainte de
prima etichetă tr.
Exempl
HTML Afisare
<table border="1">
Necesar componente
<caption>Necesar componente</caption><tr><th
width="120">Produse</th><th Produse Cantitate
width="120">Cantitate</th></tr><tr><td>Procesoare</td><td>1
buc.</td></tr><tr><td>Placi de baza</td><td>1
buc.</td></tr><tr><td>Memorii</td><td>2 buc.</td></tr>
Procesoare 1 buc.
</table>
72
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
Placi de
1 buc.
baza
Memorii 2 buc.
Legenda:
tr = Definește un rând într-o tabelă
td = Definește o celulă într-un tabel
th = Definește o celulă de tip antet de tabel
73
Magia programării – Caiet de informatică și TIC pentru clasa a VI-a
BIBLIOGRAFIE
1. SANDA POPESCU Primii pași în programare, Informatică pentru clasele V-IX, 2005
OANA DABELEA Limbajul Pascal
ISBN 978-973-0-19038-0
74