Documente Academic
Documente Profesional
Documente Cultură
RAPORT
LA PRACTICA DE SPECIALITATE
SPECIALITATEA: Informatica
TEMA: 17.Pdure
Chiinu 2016
Cuprins :
1. INTRODUCERE.......................................................................................3
2. Obiectivele practicii:..................................................................................4
2.1 Obiectivele generale ale practicii instructive:.........................................4
2.2 Compentenele profesionale:...................................................................4
2.3 Competenele specifice:..........................................................................4
3. Enunul sarcinii individuale......................................................................5
3. Descrierea modului de elaborare a aplicaiei..........................................7
4. Listing-ul programului............................................................................11
5. Estimarea complexitii algoritmilor aplicaiei.....................................18
6. Rezultatele testri subprogramelor........................................................19
6.1 Date de intrare.......................................................................................19
6.2 Date de ieire.........................................................................................19
7. Concluzie...................................................................................................22
8. Bibliografie...............................................................................................23
1. INTRODUCERE
Stagiu de practic reprezint activitatea desfurat de noi studenii, n
conformitate cu planul de nvmnt, care are drept scop verificarea cunotinelor
teoretice nsuite de acetia n cadrul programului de instruire i nafara acestuia.
Instruirea practic a elevilor este o parte component a procesului educaional i are
ca scop aprofundarea cunotinelor teoretice i a formrii deprinderilor practice n
pregtirea de specialitate, realizate la leciile practice lucrri de laborator, stagii de
practic.
ns, rezolvarea problemelor reale presupune elaborarea unor complexe programate
mari, care includ o gam ntreag de probleme: proiectarea sistemului, elaborarea
prilor componente ale algoritmului, reunirea diverselor fragmente ale programului
ntr-un produs final, documentarea.
Practica de instruire constituie o prim lucrare complex de sine stttoare a
studenilor i va contribui la formarea i dezvoltarea calitilor stric necesare nu numai
viitorilor programatori, dar i fiecrui om cult care, la sigur, va tri i va activa ntr-un
mediu bazat pe cele mai moderne tehnologii informaionale.
Practica s-a desfurat pe baza unei programe analitice i a unei sarcini de lucru,
ntocmite de instituia de nvmnt n care studiem. Durata practicii, formele de
evaluare, i creditele acordate pentru activitatea de practic sunt cele cuprinse n planul
de nvmnt.
2. Obiectivele practicii:
Pdurarului 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 acelai tip de copaci el nu pltete
nimic.
Cum diamantele sunt resursa cea mai important n regat, prinul vrea s tie numrul
minim de diamante pe care trebuie s-l plteasc pentru a ajunge la castel.
Elaborai un subprogram, care, cunoscnd planul pdurii, adresa curent [pl, pc] a
prinului i adresa [cl, cc] a castelului, l va ajuta pe Algorel s se descurce n situaia sa
dificil.
Date de intrare. Pe prima linie a
fiierului Padure.in se afla 6
numere naturale n, m, pl, pc, cl,cc,
separate prin spaii, cu semnificaia
de mai sus. Urmtoarele n linii
conin cate m numere naturale
separate prin spatii, reprezentnd
tipul copacilor care acoper fiecare
zon din Pdurea Magic.
Exemplu:
Padure.in
651154
00056
77111
11131
11221
00900
00009
Padure.out
2
Restricii: 1 n, m 1000
1 pl, cl n i
m
1 pc, cc
Este foarte important ca fiierul s fie salvat corect. Acesta poate fi de tipul: C/C++
files sau All files i este recomandat s adugm extensia cpp. Lipsa extensiei cpp va
conduce la erori n etapele urmtoare.
2. Dup ce ncepem s scriem codul surs, salvm fiierul ( File -> Save file sau
scurttura Ctrl+S).
3. Scriem codul surs i salvm. La final va trebui s avem urmtorul fiier, afi at i mai
sus, n acest articol:
4. Acest pas este foarte simplu, dar foarte important. Urmeaz compilarea i, dac
aceasta reuete, urmeaz crearea executabilului i lansarea lui. Code::Blocks ofer mai
multe opiuni pentru aceste operaii; dintre ele eu am folosit opiunea de Build ->
Build and run, cu scurttura F9, care include toate aceste operaii.
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. Pn a ajunge la
acesta, am trecut prin cteva compilri care erau inexecutabile din cauza unor erori..
10
4. Listing-ul programului
#include <iostream>
#include <conio.h>
11
#include <stdlib.h>
#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;
12
cout<<endl;
for (j=1; j<=m; j++)
{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;
13
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";
14
}}
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: ";
15
cin>>copac;
for (int i=1; i<=n; i++)
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
cout<<endl;
cout<<"\n 1: Citirea datelor din fisier:";
cout<<"\n 2: Operatia de afisare";
cout<<"\n 3: Operatia de interschimbare a 2 linii";
cout<<"\n 4: Excluderea unei coloane";
16
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;
case 7:afisare(); cota();
break;
case 8:Inscriere();
break;
17
getch();
system("cls");
goto q;
getch();
exit:
return 0;
}
Padure.in
19
651154
00056
77111
11131
11221
00900
00009
Padure.out
2
Meniul:
20
Sarcina 3: Determin
lungimea celui mai lung
subir nedescresctor al
irului elementelor coloanei
(matricei A) cu indicele
precizat de la tastatur;
21
22
7. Concluzie
Cu ajutorul acestei practici am putut nelege mai bine cum lucreaz programul cu
fiiere. Am neles cum e mai bine s fac programul ca s fie mai eficient i ct mai mic
n volum. n perioada practicii instructive am reuit s recapitulez tehnicile de
pogramare i instruciunile de programare.
Am aprofundat cunotinele n utilizarea tipurilor structurate i de date aa ca:
tablourile bidimensionale, fiierele, citirea datelor din fiier, nscrierea i opererea
datelor din acestea. Practica de iniiere reprezint o parte component a procesului
educativ care este o perioad important pentru noi, deoarece anume in timpul petrecerii
practicii ne aprofundm cunostinele acumulate timp de doi ani, de asemenea ne permite
s aplicm in practic i cunostinele teoretice la obiectul Programarea
Calculatorului.
La rndul su, practica de iniiere imit ntregul proces de elaborare a unui
complex programat mare, care mi permite s evoluez n rolul de elaborator i
organizator al proiectului. Pot spune c nu a fost foarte simpl efectuarea acestei lucrri,
ns puin informare de pe paginile WEB, ajutorul colegilor, cunotinele personale,
ideile, aptitudinile i munca asidu mi-au fost de mare ajutor.
Consider c pe parcursul acestor trei sptmni i a ntregii practici de
specialitate am reuit s-mi ating obiectivele profesionale formate de la nceput i
anume:
dezvoltarea abilitilor muncii de sine stttoare ;
lucrul n echip;
formarea deprinderilor de cercettor;
nsuirea tehnologiei de elaborare a programelor mari;
utilizarea metodelor i tehnicilor eficiente de programare;
i desigur proiectarea algoritmilor i codificarea lui ntr-un limbaj de
programare.
23
8. Bibliografie
1. I. Bolun, I. Covalenco.
24