Documente Academic
Documente Profesional
Documente Cultură
1. INTRODUCERE.......................................................................................3
2. Obiectivele practicii:..................................................................................4
2.1 Obiectivele generale ale practicii instructive:.........................................4
2.2 Compentențele profesionale:...................................................................4
2.3 Competențele specifice:..........................................................................4
3. Enunțul sarcinii individuale......................................................................5
3. Descrierea modului de elaborare a aplicației..........................................7
4. Listing-ul programului............................................................................11
5. Estimarea complexității algoritmilor aplicației....................................18
6. Rezultatele testări subprogramelor........................................................19
6.1 Date de intrare.......................................................................................19
6.2 Date de ieșire.........................................................................................19
7. Concluzie...................................................................................................22
8. Bibliografie...............................................................................................23
Chișinău 2016
1. INTRODUCERE
Practica s-a desfășurat pe baza unei programe analitice și a unei sarcini de lucru,
întocmite de instituţia de învăţământ în care studiem. Durata practicii, formele de
evaluare, şi creditele acordate pentru activitatea de practică sunt cele cuprinse în planul
de învăţământ.
2
2. Obiectivele practicii:
8) Rezolvă problema. Prinţul Algorel se află pierdut undeva prin Pădurea Magică şi
căută cu disperare drumul înapoi spre castelul său. El se poate deplasa în cele patru
direcţii: Nord, Sud, Est şi Vest, dar nu poate să iasă din pădure fiindcă dincolo de
4
pădure e tărâmul Spânului cel Râu. In drumul său către castel, prinţul trebuie să
plătească Pădurarului Magician un diamant pentru fiecare trecere dintr-o zonă în alta în
care se schimbă tipul copacilor (adică dacă cele două zone sunt acoperite cu tipuri
diferite de copaci). Pentru trecerile între zonele acoperite de acelaşi tip de copaci el nu
plăteşte nimic.
Cum diamantele sunt resursa cea mai importantă în regat, prinţul vrea să ştie numărul
minim de diamante pe care trebuie să-l plătească pentru a ajunge la castel.
Elaboraţi un subprogram, care, cunoscând planul pădurii, adresa curentă [pl, pc] a
prinţului şi adresa [cl, cc] a castelului, îl va ajuta pe Algorel să se descurce în situaţia sa
dificilă.
5
3. Descrierea modului de elaborare a aplicației
6
Este foarte important ca fișierul să fie salvat corect. Acesta poate fi de tipul: C/C++
files sau All files și este recomandat să adăugăm extensia cpp. Lipsa extensiei cpp va
conduce la erori în etapele următoare.
2. După ce începem să scriem codul sursă, salvăm fișierul (File -> Save file sau
scurtătura Ctrl+S).
7
3. Scriem codul sursă și salvăm. La final va trebui să avem următorul fișier, afișat și mai
sus, în acest articol:
4. Acest pas este foarte simplu, dar foarte important. Urmează compilarea și, dacă
aceasta reușește, urmează crearea executabilului și lansarea lui. Code :: Blocks oferă
mai multe opțiuni pentru aceste operații; dintre ele eu am folosit opțiunea de Build ->
Build and run, cu scurtătura F9, care include toate aceste operații.
8
5. Rularea programului va avea următorul efect:
Erori la compilare:
Cazul descris mai sus este cel final; programul scris este corect, se compilează și îl
putem executa. Din nefericire, acest caz nu a fost așa de la început. Pînă a ajunge la
acesta, am trecut prin câteva compilări care erau inexecutabile din cauza unor erori..
9
La scrierea programelor greșim. Aceasta este realitatea, și nu trebuie să ne sperie.
Este important să descoperim erorile și să le corectăm. Aici intervine etapa de
compilare, care semnalează o categorie largă de erori, erorile de sintaxă. Acestea țin de
nerespectarea regulilor de scriere a programelor în C++, reguli care se învață în timp.
Imaginea de mai jos ne arată ce se întâmplă dacă omitem să scriem linia
1.using namespace std;
Observăm că în partea de jos a ferestrei se afișează o listă cu erori, pentru fiecare eroare
precizându-se linia unde s-a găsit și un scurt mesaj explicativ.
4. Listing-ul programului
#include <iostream>
#include <conio.h>
#include <stdlib.h>
10
#include <fstream>
#include <iomanip>
int l1,l2,i,j,m,n,v[20][20], temp,pl,pc,cl,cc;
int B[100];
void citire()
{ ifstream f("Padure.in");
f>>n; f>>m;
f>>pl;f>>pc;
f>>cl; f>>cc;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
{f>>v[i][j];}
f.close();}
//-------------------------------------------------
void afisare()
{for (i=1; i<=n; i++)
{for (j=1; j<=m; j++)
{cout<<v[i][j]<<" ";}
cout<<"\n";}}
void interschimbare()
{cout<<"\n Dati cele doua linii";
cout<<endl;
cin>>l1>>l2;
cout<<endl;
for (j=1; j<=m; j++)
11
{temp=v[l1][j];
v[l1][j]=v[l2][j];
v[l2][j]=temp;}
for (i=1; i<=n; i++)
{for (j=1; j<=m; j++)
{cout<<v[i][j]<<" ";}
cout<<"\n";} }
void coloana()
{int m;
cout<<"Excludeti coloana :";
cin>>m;
cout<<"Matricea fara coloana "<<m<<" este:";
cout<<endl;
for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++)
if(j!=m)
cout<<v[i][j]<<" ";
cout<<endl;}
}
void lungimea()
{int aux[n],i=0,j=0;
for (int i=0;i<=n;i++)
aux[i]=0;
cout<<"\nDati coloana: ";
int col;
12
cin>>col;
for (int i=1; i<n; i++)
{ r1:
if (v[i][col]<=v[i+1][col])
aux[j]++;
else {j++;
i++;
goto r1; }}
cout<<endl;
int maxi=aux[0];
for (int i=1; i<=j; i++)
if (aux[i]>maxi)
maxi=aux[i];
cout<<"\nLungimea celui mai lung subsir al coloanei "<<col<<" este: "<<maxi+1;}
void tablou()
{ cout<<"\nDati intervalul liniilor: ";
int lin1,lin2;
cin>>lin1;
cin>>lin2;
int x=0;
for (int i=lin1; i<=lin2; i++)
for (int j=1; j<=m; j++)
{B[x]=v[i][j];
x++;
}
cout<<"\nAfisare tabloul B nesortat: \n";
for (int i=0; i<x; i++)
cout<<B[i]<<' ';
13
cout<<endl;
//sortare tabloul B
x--;
int i,j, flag=1;
int temp;
for(i = 0; (i<=x) && flag; i++)
{flag = 0;
for (j=0;j<(x -1);j++)
{ if (B[j+1]> B[j])
{temp=B[j];
B[j]=B[j+1];
B[j+1]=temp;
flag=1; }
}}
cout<<"\nAfisare tabloul B SORTAT: ";
cout<<endl;
for (int i=0; i<x; i++)
cout<<B[i]<<' ';
cout<<endl; }
void cota()
{int copac=0;
float procente=0;
cout<<"Dati copacul: ";
cin>>copac;
for (int i=1; i<=n; i++)
14
for (int j=1; j<=m; j++)
if (v[i][j]==copac)
procente+=1;
cout<<"\n Procente= "<<(procente/(n*m))*100<<setprecision(3)<<" %";}
void Inscriere()
{ ofstream g("ParCool.txt");
for (int j=1; j<=m; j++)
if (j%2==0)
{for (int i=1;i<=n;i++)
g<<v[i][j]<<' ';
g<<endl;}
g.close(); }
int main()
{ int men;
citire();
q: cout<<"\n --------------------------MENIU--------------------------------------";
cout<<"\n ALEGE OPTIUNEA DORITA";
cout<<endl;
switch (men)
{
case 1:citire();
break;
case 2:afisare();
break;
case 3:afisare(); interschimbare();
break;
case 4:afisare(); coloana();
break;
case 5:afisare(); lungimea();
break;
case 6:afisare(); tablou();
break;
Padure.in
6. Rezultatele testări subprogramelor 651154
00056
77111
11131
18
11221
00900
00009
6.1 Date de intrare
Padure.out
6.2 Date de ieșire 2
Meniul:
19
Sarcina 1: Interschimbă în matricea A două linii ; indicii liniilor de interschimb
se vor introduce de la tastatură;
Sarcina 3: Determină
lungimea celui mai lung
subșir nedescrescător al
șirului elementelor coloanei
(matricei A) cu indicele
precizat de la tastatură;
20
Sarcina 4: Înscrie în tabloul liniar B[1..n] în ordinea descendentă valorile Ai , n
(1≤i≤n) ; datele se vor sorta prin metoda interclasării;
7. Concluzie
21
Cu ajutorul acestei practici am putut înţelege mai bine cum lucrează programul cu
fişiere. Am înţeles cum e mai bine să fac programul ca să fie mai eficient şi cît mai mic
în volum. În perioada practicii instructive am reuşit să recapitulez tehnicile de
pogramare şi instrucţiunile de programare.
8. Bibliografie
22
1. I. Bolun, I. Covalenco. “Bazele informaticii aplicate”, ediţia a III-a. Chişinău,
Editura ASEM, 2005.
2. Gh. Bostan. “Culegere de probleme de informatică”. Chişinău , Editura "Lumina”
3. A. Gremalschi, Iu. Mocanu, I. Spinei. ”INFORMATICA. Limbajul Pascal”.
Chişinău , Editura Î.E.P. Ştiinţa, 2003
4. S.Corlat, L.Ivanov, V.Bîrsan. “Informatica, Ghid de implementare a
curriculumului modernizat, pentru treapta liceală”. Chişinău, "Cartier", 2010.
5. UNIVERSITATEA DE STAT TIRASPOL COLEGIUL FINANCIAR - BANCAR
Silviu GÎNCU. “Metodologia rezolvării problemelor de informatică în stilul
orientat pe obiecte”.
6. http://www.infoarena.ro/problema/scmax
7. https://walkinthroughlife.wordpress.com/2010/11/15/programare-dinamica-subsir-
maximal-crescator/
8. https://alexmoldovan1.wikispaces.com/interschimbare+linii+matrice
9. http://algoritmifundamentali.blogspot.md/2012/10/stergere-coloaa.html
10.http://tys.ro/programare/cpp/matrici.html
11.http://www.codeblocks.org/
12.http://totuldesprecalculatoare.weebly.com/tutorial-c.html
13.http://www.pbinfo.ro/?pagina=intrebari-afisare&id=27
23