Sunteți pe pagina 1din 28

1.

Cuprins

1.Cuprins.............................................................................................................................................2
2.Introducere.......................................................................................................................................3
3. Enunţul sarcinii individuale..........................................................................................................5
4.Descrierea modului de elaborare a aplicaţiei................................................................................6
5. Listing-ul programului...................................................................................................................6
6. Estimarea complexităţii algoritmilor aplicaţi............................................................................24
7. Rezultatele testării subprogramelor:..........................................................................................24
7.1. Datele de intrare........................................................................................................................28
7.2. Datele de ieşire (corespunzătoare datelor de intrare)............................................................28
7.3. Funcţionalitatea aplicaţiei grafice de interacţiune cu utilizatorul........................................28
8. Bibliografie....................................................................................................................................28
10.Anexe............................................................................................................................................29
2.Introducere
Obiectivele generale ale practicii de specialitate I :
- consolidarea cunoştinţelor teoretice, obţinute de studenţi pe parcursul studierii
limbajului de programare C++ şi mediului de programare CBuilder (sau C#, Visual
C+);
- însuşirea tehnologiei de elaborare a programelor mari;
- dezvoltarea abilităţilor muncii de sine stătătoare şi lucrul în echipă;
- formarea deprinderilor de cercetător.

COMPETENŢE TRANSVERSALE:

1. Competenţe de învăţare de a învăţa să înveţi.


2. Competenţe de comunicare în limba maternă / limba de stat.
3. Competenţe de comunicare într-o limbă străină.
4. Competenţe acţiona-strategice.
5. Competenţe de autocunoaştere şi autorealizare.
6. Competenţe interpersonale, civice, morale.
7. Competenţe de bază în matematică, ştiinţe şi tehnologie.
8. Competenţe digitale, în domeniul tehnologiei informaţiei şi comunicaţiilor
(TIC).
9. Competenţe culturale, interculturale (de a recepta şi a crea valori).
10. Competenţe antreprenoriale, spirit de iniţiativă şi antreprenoriat.
Notă. În procesul practicii de specialitate I, specialitatea 1851 -„Informatică”, se
dezvoltă, cu preponderenţă, următoarele competenţe transversale:
 Competenţe de comunicare în limba maternă / limba de stat.
 Competenţe de bază în matematică, ştiinţe şi tehnologie.
 Competenţe digitale, în domeniul tehnologiei informaţiei şi comunicaţiilor
(TIC).

COMPETENŢE PROFESIONALE
(La specialitate):
1. Respectarea dreptului de autor asupra resurselor digitale, a normelor de etică şi
securitate informaţională.

2
2. Identificarea principiilor de funcţionare, clasificare şi proiectare a conexiunii între
echipamentele reţelelor de calculatoare.
3. Proiectarea algoritmilor şi codificarea lui într-un limbaj de programare.
4. Utilizarea metodelor şi tehnicilor eficiente de programare.

5. Elaborarea aplicaţiilor, utilizând elementele programării orientate pe obiecte.


6. Conceperea produselor multimedia.
7. Utilizarea tehnologiilor şi instrumentelor de proiectare, elaborare şi programare a
aplicaţiilor WEB.
8. Modelarea, proiectarea şi implementarea sistemelor informatice.
9. Aplicarea fundamentelor teoretice ale ştiinţelor juridice, sociale şi economice în
activitatea profesională.

3. Enunţul sarcinii individuale

2. Merii. Planul unei livezi de formă dreptunghiulară cu dimensiunea nm (n, m ≤ 50) este
format din
zone pătrate cu latura 1 (vezi figura 1). În fiecare zonă reală
Ariciul a livezii creşte câte un măr. Din fiecare copac pot cădea
câteva
mere.
Informaţii mai detaliate despre zonele livezii
considerate sunt înregistrate în următoarele
două fişiere:
. fişierul text Apples.in conţine pe prima linie
numerele naturale n şi m, separate prin spaţiu.
Următoarele n linii ale acestui fişier conţine câte m
numere naturale, separate prin spaţiu, fiecare din aceste
valori reprezentând numărul de mere căzute de pe copacul
din zona respectivă [i, j];
. fişierul text Virsta.in, cele n linii ale căruia conţin
câte m numere naturale, separate prin spaţiu, fiecare din
aceste numere reprezentând vârsta (în ani împliniţi )
copacului din zona
respectivă [i, j], 1 ≤ i ≤ n, 1 ≤ j ≤ m.
Să se creeze o aplicație care să realizeze, la solicitarea utilizatorului, următoarele prescripţii:
(Design-ul aplicației vă aparține).
1) Actualizează, prin substituire în fişierele de intrare, conţinutul rândului/coloanei din planul
livezii; alternativa aleasă şi numărul respectiv al rândului/coloanei de actualizat se va indica de la
tastatură;
2) Exclude din planul livezii un rând (marginal) / o coloană (marginală); poziţia rândului
(nord/sud) / coloanei (vest/est) de exclus se va preciza de la tastatură;
3) Determină coordonatele (numărul rândului şi al coloanei) copacilor de vârstă maximală;
4) Determină vârstele medii ale copacilor pentru fiecare din coloanele impare ale livezii;

3
5) Afişează pe ecran lista numerelor de ordine ale rândurilor de copaci din livadă în ordinea
descendentă a cantităţilor totale de mere căzute pe rândurile respective; sortarea datelor se va
realiza prin metoda selecţiei.
6) Creează fişierul textual Tineri.txt, în care se vor copia acele linii ale fişierului de intrare
Apples.in, care conţin doar copaci de vârsta ce nu depăşeşte 3 ani;
7) Găseşte în reţeaua planului livezii un pătrat ce conţine în cele 4 vârfuri ale sale un număr
sumar maximal Smax de mere căzute; laturile pătratului vor coincide cu laturile zonelor din plan.
Pe ecran se va afişa numărul Smax, coordonatele colţurilor stânga-sus şi lungimea laturii pătratului
găsit;
8) Rezolvă problema: În zona din colţul stânga-sus al livezii se află un arici. Instinctiv ariciul
tinde să ajungă la vizuina sa situată în zona din colţul dreaptă-jos al livezii. În livadă există
restricţii de deplasare: ariciul se poate mişca din zona curentă în zona învecinată din dreapta sau de
jos.

Elaboraţi un subprogram, care determină numărul maxim Nmax de


mere pe care le poate strânge ariciul deplasându-se la zona dorită, şi un
drum care asigură această valoare.
Date de intrare. Informaţiile necesare despre dimensiunea livezii şi
merele căzute din copaci se conţin în fişierul text
Apples.in,descris anterior.
Date de ieşire. Se va afişa pe ecran numărul Nmax şi drumul găsit,
☻ descris prin coordonatele zonelor respective.
Fig.2. Zone vizitate De exemplu, pentru ilustrarea din figura 2, drumul parcurs se va afişa
astfel: [1, 1]–[2, 1]–[2, 2]–[3, 2]–[4, 2]–[4, 3]–[4, 4]–[5, 4]–[6, 4]–[6, 5]
–[6, 6]–
[6, 7]– [6, 8] –[7, 8]

4.Descrierea modului de elaborare a aplicaţiei

1. Analiza structurală a problemei în studiu.


2. Proiectarea descendentă a algoritmilor.
3. Aplicarea principiilor programării structurate, programării procedurale şi
programării orientate pe obiecte în scrierea algoritmilor şi elaborarea aplicaţiei.
4. Utilizarea tipurilor structurate de date (tablou, şir de caractere, mulţime, articol, fişier
etc.) adecvate pentru organizarea şi prelucrarea datelor.
5. Utilizarea principiilor Programării Orientate spre Obiecte la elaborarea programelor.
6. Utilizarea tehnicilor eficiente la elaborarea algoritmilor şi programelor respective.
7. Aplicarea tehnicilor de testare şi depanare a programelor elaborate.
8. Elaborarea unei aplicaţii cu interfaţă grafică de interacţiune cu utilizatorul;
9. Gestionarea informaţiei utilizând resursele Internet.

5. Listing-ul programului
//---------------------------------------------------------------------------
4
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("uPraktika3.cpp", Form1);
USEFORM("uMax.cpp", Form2);
USEFORM("uSredUroj.cpp", Form3);
USEFORM("uRabotnik.cpp", Form4);
USEFORM("uDelRow.cpp", Form5);
USEFORM("uDelCol.cpp", Form6);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);
Application->CreateForm(__classid(TForm3), &Form3);
Application->CreateForm(__classid(TForm4), &Form4);
Application->CreateForm(__classid(TForm5), &Form5);
Application->CreateForm(__classid(TForm6), &Form6);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "uDelCol.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm6 *Form6;
//---------------------------------------------------------------------------
__fastcall TForm6::TForm6(TComponent* Owner)
5
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm6::Button1Click(TObject *Sender)
{
int cn = StrToInt(Edit1->Text);

if ( cn > 0 && cn <= FormRef->MColumns)


{
if ( cn < FormRef->MColumns )
for(int j=cn; j<FormRef->MColumns; j++)
for(int i=1; i<=FormRef->NRows; i++)
{
FormRef->StringGrid1->Cells[j][i] = FormRef->StringGrid1->Cells[j+1][i];
FormRef->StringGrid2->Cells[j][i] = FormRef->StringGrid2->Cells[j+1][i];
}

if ( cn <= FormRef->MColumns )
{
FormRef->MColumns --;
FormRef->StringGrid1->ColCount --;
FormRef->StringGrid2->ColCount --;
}

FormRef->Button1->Visible = true;
FormRef->Button2->Visible = true;

FormRef->Tab1Sizes();
FormRef->Tab2Sizes();
}
Edit1->Text="";
Form6->Close();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "uDelRow.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm5 *Form5;
//---------------------------------------------------------------------------
__fastcall TForm5::TForm5(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm5::Button1Click(TObject *Sender)
6
{
int rn = StrToInt(Edit1->Text);
if ( rn > 0 && rn <= FormRef->NRows)
{
if ( rn < FormRef->NRows )
for(int i=rn; i<FormRef->NRows; i++)
for(int j=1; j<=FormRef->MColumns; j++)
{
FormRef->StringGrid1->Cells[j][i] = FormRef->StringGrid1->Cells[j][i+1];
FormRef->StringGrid2->Cells[j][i] = FormRef->StringGrid2->Cells[j][i+1];
}
if ( rn <= FormRef->NRows )
{
FormRef->NRows --;
FormRef->StringGrid1->RowCount --;
FormRef->StringGrid2->RowCount --;
}
FormRef->Button1->Visible = true;
FormRef->Button2->Visible = true;
FormRef->Tab1Sizes();
FormRef->Tab2Sizes();
}
Edit1->Text="";
Form5->Close();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "uMax.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
int max = 0;
int i1,j1;
for(int i=1; i<=FormRef->NRows; i++)
for(int j=1; j<=FormRef->MColumns; j++)
if (StrToInt(FormRef->StringGrid2->Cells[j][i])> max )
{
max = StrToInt( FormRef->StringGrid2->Cells[j][i]);
7
i1=i; j1=j;
}
Label2->Caption = "Virsta maximala: " + IntToStr( max )
+"\nCoordonate:"+IntToStr(j1)+","+IntToStr(i1);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
Label2->Caption="";
Close();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "uPraktika3.h"
#include "uMax.h"
#include "uSredUroj.h"
#include "uRabotnik.h"
#include "uDelRow.h"
#include "uDelCol.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
const int nmax = 20;
AnsiString FileName1, FileName2;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{

}
//---------------------------------------------------------------------------
int GetData (int f, AnsiString *st) //читает строку до пробела
{
unsigned char buf[256];
unsigned char *p = buf;
int n;
int len = 0;
do
n = FileRead(f, p, 1);
while ((n != 0)&&(*p == ' '));

while ((n != 0)&&(*p != ' ')){


if (*p == '\r'){
n = FileRead(f, p, 1);
break;
}
len++;
8
p++;
n = FileRead(f, p, 1);
}
*p = '\0';
if (len != 0)
st->printf("%s", buf);
return len;
}
//---------------------------------------------------------------------------
void GetRC(int f, int &n1, int &m)
{
unsigned char buf[256];
unsigned char *p = buf;

int n,i=0,j=0;
do
{
n = FileRead(f, p, 1);

if (n != 0)
{
if (*p == '\n') i++;
if ((*p == '\n') || (*p == ' ')) j++;
}
}
while (n != 0);
n1=i;
m=j/n1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Tab1Sizes()
{

StringGrid1->Width = (StringGrid1->ColCount * (StringGrid1->DefaultColWidth+2))-1;


StringGrid1->Height = (StringGrid1->RowCount * (StringGrid1->DefaultRowHeight+2))-2;
StringGrid1->ScrollBars = ssNone;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Tab2Sizes()
{

StringGrid2->Width = (StringGrid2->ColCount * (StringGrid2->DefaultColWidth+2))-1;


StringGrid2->Height = (StringGrid2->RowCount * (StringGrid2->DefaultRowHeight+2))-2;
StringGrid2->ScrollBars = ssNone;
}

//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
Label1->Visible = true;
Edit1->Visible = true;

9
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N3Click(TObject *Sender)


{
Label2->Visible = true;
Edit2->Visible = true;

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)


{

if (Key==VK_BACK) return;

if (Key==VK_RETURN)
{
Button4->SetFocus();
return;
}
if ( (Edit1->Text).Length() != 0 ) Button4->Visible = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)


{
if (Key==VK_BACK) return;

if (Key==VK_RETURN)
{
Button3->SetFocus();
return;
}

if ( (Edit2->Text).Length() != 0 ) Button3->Visible = true;


}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)


{
StringGrid2->Visible = true;

int f;
int ls;

AnsiString st;

if (Edit2->Text.Length() ==0 ) ShowMessage("Введите имя файла");

10
else
{
FileName2=Edit2->Text;

if ( FileExists(FileName2) )
f = FileOpen(FileName2,fmOpenRead);

else {
ShowMessage("Такого файла нет!");
return;
}

if ( f != -1 )
{
GetRC(f,NRows,MColumns);
StringGrid2->Visible = true;
StringGrid2->RowCount = NRows + 1;
StringGrid2->ColCount = MColumns + 1;
FileClose(f);
}

else
{
ShowMessage("ошибка доступа к файлу");
Edit2->Text = "";
Edit2->SetFocus();
}

if ( FileExists(FileName2) )
f = FileOpen(FileName2,fmOpenRead);

else ShowMessage("Такого файла нет!!");//f = FileCreate(FileName);

if ( f != -1 )
{
for(int i=0; i<NRows; i++)
for(int j=0; j<MColumns; j++)
{
ls=GetData(f,&st);

if(ls) StringGrid2->Cells[j+1][i+1]=StrToInt(st);
}

for(int i=0; i<NRows; i++)


StringGrid2->Cells[0][i+1] = i+1;

for(int j=0; j<MColumns; j++)


StringGrid2->Cells[j+1][0] = j+1;

FileClose(f);
}
11
else
{
ShowMessage("ошибка доступа к файлу");
Edit2->Text = "";
Edit2->SetFocus();
}
// подгон размеров таблицы по значениям

Tab2Sizes();
}

if (StringGrid1->Visible == true && StringGrid2->Visible == true)


{
N4->Enabled = true;
N9->Enabled = true;
N12->Enabled = true;
N15->Enabled = true;
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)


{
StringGrid1->Visible = true;

int f;
int ls;
AnsiString st;

if (Edit1->Text.Length() ==0 ) ShowMessage("Введите имя файла");


else
{

FileName1=Edit1->Text;

if ( FileExists(FileName1) )
f = FileOpen(FileName1,fmOpenRead);
else
{
ShowMessage("Такого файла нет!");//f = FileCreate(FileName);
return;
}
if ( f != -1 )
{
GetRC(f,NRows,MColumns);
StringGrid1->Visible = true;
StringGrid1->RowCount = NRows + 1;
StringGrid1->ColCount = MColumns + 1;
FileClose(f);
}
12
else
{
ShowMessage("ошибка доступа к файлу");
Edit1->Text = "";
Edit1->SetFocus();
}

if ( FileExists(FileName1) )
f = FileOpen(FileName1,fmOpenRead);
else ShowMessage("Такого файла нет!!");//f = FileCreate(FileName);

if ( f != -1 )
{
for(int i=0; i<NRows; i++)
for(int j=0; j<MColumns; j++)
{
ls=GetData(f,&st);
if(ls) StringGrid1->Cells[j+1][i+1]=st;
}

for(int i=0; i<NRows; i++)


StringGrid1->Cells[0][i+1] = i+1;

for(int j=0; j<MColumns; j++)


StringGrid1->Cells[j+1][0] = j+1;

FileClose(f);
}
else
{
ShowMessage("ошибка доступа к файлу");
Edit1->Text = "";
Edit1->SetFocus();
}
// подгон размеров таблицы по значениям

Tab1Sizes();

}
if (StringGrid1->Visible == true && StringGrid2->Visible == true)
{
N4->Enabled = true;
N9->Enabled = true;
N12->Enabled = true;
N15->Enabled = true;
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N10Click(TObject *Sender)


{
Form2->FormRef = Form1;
13
Form2->Show();

}
//---------------------------------------------------------------------------

void __fastcall TForm1::N11Click(TObject *Sender)


{
Form3->FormRef = Form1;
Form3->Show();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N17Click(TObject *Sender)


{
Form4->FormRef = Form1;
Form4->Show();

}
//---------------------------------------------------------------------------

void __fastcall TForm1::N13Click(TObject *Sender)


{
int x[50][50] ;
int aux,i1,aux1;
AnsiString spisok="";

for(int i=1; i<=NRows; i++)


for(int j=1; j<=MColumns; j++)
{ x[j][i]=StrToInt(StringGrid1->Cells[j][i]); }

for(int i=1; i<= NRows; i++)


{ x[MColumns+2][i]=0;
for(int j=1; j<= MColumns; j++)
{ x[MColumns+2][i]+=x[j][i];
x[MColumns+1][i]=i; } }

for(int i=1; i<=NRows; i++)


for(int j=1; j<=MColumns+2; j++)
{ aux=x[j][i];
aux1=x[MColumns+2][i];
i1=i-1;
while (aux1>x[MColumns+2][i1] && i1>0)
{ x[j][i1+1]=x[j][i1];
i1=i1-1;
}
x[j][i1+1]=aux;
}

spisok="";
for(int i=1; i<=NRows; i++)
{ for(int j=1; j<=MColumns+2; j++)
{ if ((j== MColumns+2)||(j== MColumns+1)) spisok=spisok+" ["+IntToStr(x[j][i])+"]";
14
else spisok=spisok+IntToStr(x[j][i])+" "; }
spisok=spisok+"\n";}
ShowMessage(spisok);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N7Click(TObject *Sender)


{
NRows --;
StringGrid1->RowCount --;
StringGrid2->RowCount --;

Button1->Visible = true;
Button2->Visible = true;

Tab1Sizes();
Tab2Sizes();

}
//---------------------------------------------------------------------------
void __fastcall TForm1::File1Rewrite(int f)
{
AnsiString str_ln="\x0D\x0A";
AnsiString str_sp=" ";
ShowMessage(NRows);
for(int i=1; i<=NRows; i++)

for(int j=1; j<=MColumns; j++)


{
FileWrite(f,(StringGrid1->Cells[j][i]).c_str(),(StringGrid1->Cells[j][i]).Length());
if (j == MColumns )
FileWrite(f,str_ln.c_str(),str_ln.Length());
else FileWrite(f,str_sp.c_str(),str_sp.Length());
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::File2Rewrite(int f)
{
AnsiString str_ln="\x0D\x0A";
AnsiString str_sp=" ";

for(int i=1; i<=NRows; i++)

for(int j=1; j<=MColumns; j++)


{
FileWrite(f,(StringGrid2->Cells[j][i]).c_str(),(StringGrid2->Cells[j][i]).Length());
if (j == MColumns )
FileWrite(f,str_ln.c_str(),str_ln.Length());
else FileWrite(f,str_sp.c_str(),str_sp.Length());
}
}
15
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)


{
int f1;

if(FileExists(FileName1)) DeleteFile(FileName1);

f1 = FileCreate (FileName1);

if (f1!=-1)
{
File1Rewrite(f1);
FileClose(f1);
Button1->Visible = false;
}
else
ShowMessage("Ошибка доступа к файлу: ни открыть, ни создате не получилось!");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)


{
int f2;

if(FileExists(FileName2)) DeleteFile(FileName2);

f2 = FileCreate (FileName2);

if (f2!=-1)
{
File2Rewrite(f2);
FileClose(f2);
Button2->Visible = false;
}
else
ShowMessage("Ошибка доступа к файлу: ни открыть, ни создате не получилось!");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N18Click(TObject *Sender)


{
for(int i=1; i<NRows; i++)
for(int j=1; j<=MColumns; j++)
{
StringGrid1->Cells[j][i] = StringGrid1->Cells[j][i+1];
StringGrid2->Cells[j][i] = StringGrid2->Cells[j][i+1];
}

NRows --;
16
StringGrid1->RowCount --;
StringGrid2->RowCount --;

Button1->Visible = true;
Button2->Visible = true;

Tab1Sizes();
Tab2Sizes();

}
//---------------------------------------------------------------------------

void __fastcall TForm1::N8Click(TObject *Sender)


{
MColumns --;
StringGrid1->ColCount --;
StringGrid2->ColCount --;

Button1->Visible = true;
Button2->Visible = true;

Tab1Sizes();
Tab2Sizes();

}
//---------------------------------------------------------------------------

void __fastcall TForm1::N19Click(TObject *Sender)


{
for(int j=1; j<MColumns; j++)
for(int i=1; i<=NRows; i++)
{
StringGrid1->Cells[j][i] = StringGrid1->Cells[j+1][i];
StringGrid2->Cells[j][i] = StringGrid2->Cells[j+1][i];
}

MColumns --;
StringGrid1->ColCount --;
StringGrid2->ColCount --;

Button1->Visible = true;
Button2->Visible = true;

Tab1Sizes();
Tab2Sizes();

}
//---------------------------------------------------------------------------

void __fastcall TForm1::N5Click(TObject *Sender)


{
17
Form5->FormRef = Form1;
Form5->Show();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N6Click(TObject *Sender)


{
Form6->FormRef = Form1;
Form6->Show();
}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1Click(TObject *Sender)


{
/*Edit1->Text=""; */
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit2Click(TObject *Sender)


{
/* Edit2->Text=""; */
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N14Click(TObject *Sender)


{
AnsiString st;
int f, flag;

if ( FileExists("meteo.txt") )
f = FileOpen("Tineri.txt",fmOpenWrite);
else
f = FileCreate("Tineri.txt");
if ( f != -1 )
{
for(int i=1; i<=NRows; i++)
{
flag = 0;
for(int j=1; j<=MColumns; j++)
if(StrToInt(StringGrid2->Cells[j][i])<=3) flag++;
//ShowMessage(IntToStr(flag));
if (flag == MColumns)
{
for(int j=1; j<=MColumns; j++)
{ st=" " + StringGrid1->Cells[j][i];
FileWrite(f,st.c_str(),st.Length());

st="\x0D\x0A";
FileWrite(f,st.c_str(),st.Length());
18
}
}

ShowMessage("Fisierul a fost creat cu succes !");


FileClose(f);
}
else
{

ShowMessage("?????? ??????? ? ?????: ?? ???????,"


"?? ??????? ?? ??????????");
}

}
//---------------------------------------------------------------------------

void __fastcall TForm1::N16Click(TObject *Sender)


{
int mlat;
int x[50][50];
int cout=0;
int s=0;
int si=0;
int sj=0;
int smax=0;
AnsiString spisok="";
for(int i=1; i<=NRows; i++)
for(int j=1; j<=MColumns; j++)
{ x[j][i]=StrToInt(StringGrid1->Cells[j][i]); }
if (NRows<MColumns) mlat=NRows;
else mlat=MColumns;
do
{
for(int i=1; i<=(NRows-mlat+1); i++)
for(int j=1; j<=(MColumns-mlat+1); j++)
{
if ((x[j][i]+x[mlat+j-1][i]+x[mlat+j-1][mlat+i-1]+x[j][mlat+i-1])>smax)
{
smax=x[j][i]+x[mlat+j-1][i]+x[mlat+j-1][mlat+i-1]+x[j][mlat+i-1];
s=mlat;
si=i;
sj=j;
}
cout=0;
}
mlat--;
} while (mlat!=1);
spisok="Suma maxima ="+IntToStr(smax)+" Cordonatele ="+" ["+IntToStr(si)+","+IntToStr(sj)
+"]"+" Latura ="+IntToStr(s);
ShowMessage(spisok);
}
19
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "uRabotnik.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm4 *Form4;
//---------------------------------------------------------------------------
__fastcall TForm4::TForm4(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

void __fastcall TForm4::Button1Click(TObject *Sender)


{
int x[50][50] ;
int x3[50][50] ;
int a[100];
int count = 0;
AnsiString spisok="";
/*StringGrid3->Visible = true;
StringGrid3->RowCount=NRows;
StringGrid3->ColCount = MColumns;
StringGrid3->Width = (StringGrid3->ColCount * (StringGrid3->DefaultColWidth+2))-1;
StringGrid3->Height = (StringGrid3->RowCount * (StringGrid3->DefaultRowHeight+2))-2;
StringGrid3->ScrollBars = ssNone;*/

for(int i=1; i<=FormRef->NRows; i++)


for(int j=1; j<=FormRef->MColumns; j++)
{ x[j][i]=StrToInt(FormRef->StringGrid1->Cells[j][i]); }

x3[1][1]=x[1][1];

for(int i=2; i<=FormRef->NRows; i++)


x3[1][i]=x[1][i]+x3[1][i-1];

for(int j=2; j<=FormRef->MColumns; j++)


x3[j][1]=x[j][1]+x3[j-1][1];

for(int i=2; i<=FormRef->NRows; i++)


for(int j=2; j<6; j++)
if (x3[j-1][i]>x3[j][i-1])
x3[j][i]=x[j][i]+x3[j-1][i];
20
else x3[j][i]=x[j][i]+x3[j][i-1];
int j=FormRef->MColumns; int i=FormRef->NRows;
spisok=spisok+"\n"+"Mere in total:"+IntToStr(x3[j][i]);
while ( (j>0)&&(i>0) )
{
if ( x3[j-1][i]>x3[j][i-1])
{
count ++;
a[count]=x3[j-1][i];
spisok="["+IntToStr(i)+","+IntToStr(j)/*+","+IntToStr(x3[j][i])*/+"]"+spisok;
j=j-1;}
else { count ++;
a[count]=x3[j][i-1];
spisok="["+IntToStr(i)+","+IntToStr(j)/*+","+IntToStr(x3[j][i])*/+"]"+spisok;
i=i-1; }
}
ShowMessage(spisok);
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Button2Click(TObject *Sender)
{
Form4->Close();
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "uSredUroj.h"
#include <Math.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Button1Click(TObject *Sender)
{
int k = 0;
float sr =0;
for(int i=1; i<=FormRef->NRows; i++)
for(int j=1; j<=FormRef->MColumns; j++)
if ( (j % 2)!=0)
{
sr += StrToFloat(FormRef->StringGrid2->Cells[j][i]);
k++;
}
if ( k > 0 )
{
21
sr/=k;
Label2->Caption ="Virsta medie = " + FloatToStr(RoundTo(sr, -2));
}
else Label2->Caption = "ERROR " ;
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Button2Click(TObject *Sender)
{
Form3->Close();
}
//---------------------------------------------------------------------------

6. Estimarea complexităţii algoritmilor aplicaţi


Conform variantelor propuse, datele de intrare (vectori, matrice, şiruri de caractere etc.) vor
fi alocate în fişiere text, iar printre subprogramele incluse în produsul program ar putea fi:
1. Procedură de citire într-un tablou numeric a datelor din fişier.
2. Procedură de scriere în fişier a elementelor unui tablou numeric.
3. Procedură de inserare în componenţa unei matrice a unui nou rând (marginal) /a unei
noi coloane (marginale), fiind dată poziţia rândului (nord/sud) / coloanei (vest/est) de
inserat.
4. Procedură de excludere din componenţa unei matrice a unui rând / a unei coloane,
fiind dat numărul de ordine al rândului / coloanei de exclus.
5. Procedură pentru actualizarea, prin substituire în fişierul text existent, a conţinutul
rândului (sau coloanei) indicate dintr-o matrice.
6. Funcţie de căutare în tablou a elementelor cu proprietatea prescrisă.
7. Procedură pentru ordonarea elementelor unui tablou liniar.
8. Procedură/funcţie pentru rezolvarea problemei labirintului.
9. Procedură pentru rezolvarea problemei “Lupta maritimă”.
10. Procedură pentru determinarea ariei intersecţiei şi ariei reuniunii a n dreptunghiuri
care au laturile paralele cu axele, iar vârfurile sunt puncte din plan cu coordonate numere
întregi.
11. Funcţie care determină, dacă 4 puncte din plan, definite prin coordonatele lor:
(X1;Y1), (X2;Y2), (X3,Y3), (X4,Y4), pot fi vârfurile unui dreptunghi.
12. Se dau trei perechi de numere reale (X1;Y1), (X2;Y2), (X3,Y3), reprezentând
coordonatele carteziene ale vârfurilor unui triunghi, precum şi coordonatele unui punct
(X,Y). Să se scrie o funcţie care determina aparţine ori nu acest punct triunghiului.
22
7. Rezultatele testării subprogramelor:

Fereastra ce apare in urma deschiderii programului.


Imaginea 1.

23
Ferestra dupa accesarea comenzilor de deschidere .
Imaginea 2.

Fereastra dupa accesarea butoanelor deschide .


Imaginea 3.

24
Rezultatul dupa comandarea acestor 4 comenzi de editare.
Imaginea 4.

Rezultatul accesarii comenzii Virsta Rezultatul accesarii comenzii Virsta


maxima shi tastarea butonului Calculeaza . medie shi tastarea butonului Calculeaza .
Imaginea 5. Imaginea 6. Imaginea 7.

25
Fereastra ce apare in urma accesarii Fisierul Tineri.txt dupa creare .
comenzii de creare a fisierului Tineri.txt .
Imaginea 8. Imaginea 9.

Fereastra de confirmare in urma accesarii problemei ariciului .


Imaginea 10. Imaginea 11.

7.1. Datele de intrare

Img.1. Img.2.
Imaginea cu fisierul Apples.txt Imaginea cu fisierul Virsta.txt

7.2. Datele de ieşire (corespunzătoare datelor de intrare)

Img.1 Img.2
26
Fisierul dupa comanda CreazaCreaza Tineri.txt Rezultatul problemei Diagonala

Lista copacilor în ordine descendenta dupa nr. Rezultatul problemei Ariciul


De mere cazute pe linie si nr.a liniei
Img.3. Img.4.

8. Bibliografie
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. Braicov. Turbo Pascal. Culegere de probleme, Chişinău, Editura "Prut Internaţional",
2007.
4. S.Corlat, L.Ivanov, V.Bîrsan. Informatica, Ghid de implementare a curriculumului
modernizat, pentru treapta liceală, Chişinău, "Cartier", 2010.
5. G. Damian-Timoşenco, E. Ionaşcu-Cuciuc, Ghid de elaborare a curriculumului
profesional, Chişinău, 2011.
6. A. Gremalschi, Iu. Mocanu, I. Spinei.INFORMATICA. Limbajul Pascal.Chişinău ,
Editura Î.E.P. Ştiinţa, 2003.
7. A. Gremalschi, Iu. Mocanu, I. Spinei. Informatică, Manual pentru clasa a 9-a, Chişinău:
Editura "Ştiinţa", 2006.
8. A. Gremalschi, Iu. Mocanu, L. Gremalschi . INFORMATICĂ, Manual pentru clasa a
10-a, Chişinău , Editura "Ştiinţa", 2007.
9. A. Gremalschi, INFORMATICĂ, Manual pentru clasa a 11-a, Chişinău, Editura
"Ştiinţa", 2014.
10. Doina Logofătu. Bazele programării în C. Aplicaţii. Editura POLIROM, Iaşi, 2006.
11. Vasile Petrovici, Florin Goicea. Programarea în limbajul C. București, Editura Tehnica,
1993.
12. Cornelica Ivaşc, L.M. Condurache, Mona Carme Prună, D. Hrinciuc-Logofătu. Manual
de informatică C++ (cl. XI). Bucureşti, editura „Petrion Impex”, 2002.
13. D. Logofătu. C++. Probleme rezolvate şi algoritmi. Editura POLIROM, 2001.
14. Mickey Williams, Visual C++. București, editura TEORA, 1996.
15. Mariana Miloşescu. Manual de informatică C++ (cl. XI). Bucureşti, Editura Didactică
şi Pedagogică, R.A., 2006.
16. T. Ionescu, Fl. Munteanu, Gh. Musca, D. Saru, S.M. Dascalu. Programarea
calculatoarelor. Manual pentru licee de informatică, cl. X-XII. Bucureşti. Editura
Didactică şi Pedagogică, R.A., 1996.
17. A. Braicov, S. Gîncu. Borland C++Builder. Ghid de iniţiere. „Tipografia centrală”,
2009.

27
18. S. Berzan, R. Berzan. Programarea calculatoarelor. Instrucţiuni metodice, probleme
rezolvate, lucrări de laborator. Editura ASEM, 2005.
19. H. Schildt. C++. Manual complet. Bucureşti. Teora. 2002.
20. Marin Popa, Mariana Popa. Programare procedurală (aplicaţii C şi C++ în structuri
de date şi grafică). Editura fundaţiei Romănia de mîine, Bucureşti, 2006.

10.Anexe

Anexe 1. Anexe 2.Anexe 3.

28

S-ar putea să vă placă și