Sunteți pe pagina 1din 33

MINISTERUL EDUCAŢIEI, CULTURII ȘI CERCETĂRII AL

REPUBLICII MOLDOVA

Centrul de Excelenţă în Informatică şi Tehnologii Informaţionale

RAPORT
LA PRACTICA DE INIŢIERE ÎN SPECIALITATE
SPECIALITATEA "Administrarea Aplicațiilor Web"

TEMA : "Hotel"

A elaborat elevul:
Botnari Sergiu
Grupa W-2112

Conducătorul practicii
Frunza Olga

Chişinău *2022*
Cuprins

Cuprins........................................................................................................................................................2

Introducere.................................................................................................................................................3

Sarcinile de lucru........................................................................................................................................4

Listingul Programului:.................................................................................................................................5

Testarea programului:...............................................................................................................................18

Registrul de calcul tabelar:........................................................................................................................21

Inserarea pentru fiecare tabel titlul și denumirile câmpurilor respective:.....................................................21

Adaugarea lista prdefinita pentru Culoare, Material si Codul sferei:.............................................................21

Adaugarea o coloana in care introducem cate o imagine petru fiecare sfera:...............................................21

Aria suprafetei la fiecare sfera, volumul la fiecare sfera si volumul sumar al sferelor:..................................22

Numarul de sfere cu volumul mai mare de cat mediu:..................................................................................22

Numarul sferelor de fiecare material:............................................................................................................22

Volumul maxim per culoare si volumul minim per material:.........................................................................22

Reprezentarea grafica a numarului de sfere per culoare si material:.............................................................22

Lista sferelor confectionate din metal, denumirea caruia sete selectata dintr-o lista ascunsa:.....................22

Sarcina suplimentara......................................................................................................................................23

Listingul programului suplimentar :................................................................................................................25

Concluzie........................................................................................................................................................35

Bibliografie:....................................................................................................................................................36

2
Introducere
Conform obiectivelor generale, practica de inițiere în specialitate se va realiza sub genericul
„Elaborarea algoritmilor destinați rezolvării problemelor de structură complexă mixtă”. În rezultatul
reprezentării unor asemenea algoritmi prin mijloacele unui limbaj de programare de nivel înalt se obțin, de
regulă, modele computerizate mari, care se bazează pe utilizarea largă a diverselor tipuri structurate de date:
tablouri, șiruri de caractere, fișiere etc.
În cadrul lecțiilor de programare și de procesare tabelară elevii se familiarizează cu programarea și
calculul tabelar, de regulă, în baza elaborării algoritmilor de rezolvare a unor probleme concrete simple.
Astfel, este posibilă examinarea doar a principiilor generale de elaborare a programelor/registrelor de calcul
și anumitor aspecte ale rezolvării problemelor. Însă, rezolvarea problemelor reale presupune elaborarea unor
produse computerizate mari, constituită dintr-o gamă întreagă de etape: proiectarea sistemului, elaborarea
părților componente ale algoritmului, reunirea diverselor fragmente ale proiectului într-un produs final, 5 /
13 documentarea etc.
În acest context, practica de inițiere în specialitate preconizează imitarea întregului proces de elaborare a
unui produs program/registru de calcul mare, permite elevilor să evolueze în rolul de elaborator și
organizator al proiectului. Lucrul pe parcursul practicii de inițiere se programează în așa mod, încât să se
obțină un produs funcțional și corect.Practica tehnologică se va desfășura în cadrul instituției de învățământ.
Instituția îi va asigura fiecărui elev loc dotat cu calculator personal pentru realizarea sarcinilor înaintate.
Locul de practică va fi amenajat ținând cont de cerințele și condițiile de muncă ergonomice. De asemenea
instituția își va asuma obligații de a asigura securitatea vieții și sănătății elevului, prevenirea riscurilor
profesionale, accesul elevilor și al conducătorului de practică la locul de desfășurare a stagiului de practică.
Iar înainte de începerea stagiului de practică, elevul va fi instruit referitor la respectarea normelor de
securitate și sănătate în muncă, a disciplinei de muncă și a normelor legislative în vigoare din instituția dată.

3
Sarcinile de lucru
11. Sfere. Informaţiile despre un set de sfere sunt înregistrate în următoarele 2 fişiere textuale: -
fişierul Figuri.txt, fiecare linie a cărui corespunde unei singure sfere şi reciproc. O linie din fişier conţine
următoarele date, separate prin spaţiu: CodSf (Codul sferei); Culoarea (roşie, galbenă, verde, albastră),
Material ( Materialul din care e confecţionată: argilă, lemn, metal, plastic).
-fişierul Dimens.txt, fiecare linie a cărui corespunde unei singure sfere şi reciproc. O linie din fişier
conţine următoarele date, separate prin spaţiu: CodSf (Codul sferei); cele 3 dimensiuni: Xc (Abscisa
centrului sferei), Yc (Ordonata centrului sferei), R (Raza sferei);
⮚ Să se elaboreze un program care, folosind meniuri şi subprograme, să realizeze, la solicitarea utilizatorului,
următoarele prescripţii:
1) Înregistrează o nouă sferă;
2) Exclude din fişierele de intrare liniile ce corespund codului figurii, introdus de la tastatură;
3) ) Determină volumul sumar ale tuturor sferelor;
4) Afişează pe ecran atributele figurilor, de culoarea indicată de la tastatură, în ordinea crescătoare a
ariilor suprafeţelor acestora;
5) Afişează pe ecran atributele figurilor de volume identice;
6) Determină figura de volum minim şi, respectiv, cea de volum maxim, confecţionate din materialul cu
denumirea introdusă de la tastatură;
7) Enumără figurile confecţionate din metal, ariile suprafeţelor căror nu depăşeşte valoarea introdusă de
la tastatură;
8) Creează fişierul textual Galben.txt în care se vor copia acele linii ale fişierului de intrare, care
corespund figurilor de culoare galbenă.
--------------------------------------------------------------------------------------------------------------------------

⮚ Realizaţi următoarele sarcini în aplicaţia MSExcel:

1) De creat registrul Sfere. Importați datele din fișierele Figuri.txt, Dimens.txt în foi separate;
denumirea foii să coincidă cu numele fișierului respectiv.
2) Inserați pentru fiecare tabel titlul și denumirile câmpurilor respective.
3) Formatați tabelul: stabiliți chenarul, proprietățile textului etc.
4) Valorile pentru câmpurile Culoare, Material din foaia Figuri şi câmpul Codul sferei din foaia
Dimens vor fi selectate dintr-o listă de valori predefinite.
5) În foaia Figuri adăugați un câmp nou și inserați în celule pentru fiecare CodF imaginea sferei
respectiv.
6) De calculat aria suprafeței laterale a fiecărei sfere în cm 2, volumul pentru fiecare sferă, volumul
sumar ale tuturor sferelor per material, volumul sumar ale tuturor sferelor.
7) Calculați: numărul sferelor a căror volum este mai mare decât volumul mediu, numărul sferelor de
fiecare material, volumul maxim per culoare, volumul minim per material. Rezultatele calculelor vor
fi afișate într-o foaie nouă cu numele Statistica.
8) Reprezentați grafic numărul de sferelor per culoare şi material.
9) Afișați lista sferelor confecționate din material, denumirea căruia este selectată dintr-o listă ascunsă
(ComboBox).

Design-ul tabelelor din foile de calcul vă aparține. Tabelele să fie realitate respectând criteriile de formatare a
documentelor.

4
Listingul Programului:
Main.cpp:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstring>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "unit.h"
using namespace std;
void display(int n){
for(int i=1;i<=n;i++){
s>>e[i].nume;
s>>e[i].pnume;
s>>e[i].nr_cam;
s>>e[i].ziua;
s>>e[i].luna;
s>>e[i].an_caz;
s>>e[i].nr_nopti;
f>>e[i].nrcam;
f>>e[i].pret;
f>>e[i].prpnt;
f>>e[i].nrloc;
f>>e[i].tcam;
cout<<" "<<i<<" | "<<e[i].nume<<" "<<e[i].pnume<<" |";
cout<<" "<<e[i].nr_cam<<" | ";
cout<<e[i].ziua<<"."<<e[i].luna<<"."<<e[i].an_caz;
cout<<" |"<<e[i].nr_nopti<<"| \n";
for(int j=1;j<=50;j++){
if(e[j].nrcam==e[i].nr_cam)
cout<<"\tCamera: "<<e[j].nrcam<<" "<<e[j].pret<<e[j].prpnt<<" "<<e[j].nrloc<<"
"<<e[j].tcam<<"\n";}}
}
void menu(int n){
cout<<"\t\t\t ___________ \n _ __ _____ _____________ ____________ ";
cout<<"\n\t\t\t |Nr optiunii:| \n\t\t\t |1- Inregistreaza un turist|\n";
cout<<"\t\t\t|2- Inregistreaza o camera|\n\t\t\t |3- Stergerea datelor unui turist|\n\t\t\t|4- Stergerea
datelor unei camere|";
cout<<"\n\t\t\t |5- Actualizarea numelui/prenumelui unui turist| \n\t\t\t|6- Actualizarea unei camere|
\n\t\t\t |7- Lista camerelor libere| \n";
cout<<"\t\t\t|8- Durata medie de cazare|\n\t\t\t |9- Cea mai scumpa si cea mai ieftina camera|\n\t\t\t|
10-Check out|\n\t\t - ";
cin>>u;
while((u>10)||(u<1)){
cout<<"Optiunea nu exista\n Introduceti alta optiune:\n";
cin>>u;}
switch(u){

5
case 1: intr(u); switch(u){
case 1: cout<<"\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t";cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}
while(u!=0){
menu(u);
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n \t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}}
break;}
break;
case 2: intrcam(); switch(u){
case 2: cout<<"\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t";cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}
while(u!=0){
menu(u);
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}}
break;}
break;
case 3: del(); switch(u){
case 3: cout<<"\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}
while(u!=0){
menu(u);
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}}
break;}
break;
case 4: delcam(u); switch(u){
case 4: cout<<"\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}
while(u!=0){
menu(u);
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}}
break;}
break;
case 5: actr(u); switch(u){
6
case 5: cout<<"\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}
while(u!=0){
menu(u);
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}}
break;}
break;
case 6: actrcam(); switch(u){
case 6: cout<<"\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}
while(u!=0){
menu(u);
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}}
break;}
break;
case 7: list(); switch(u){
case 7: cout<<"\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}
while(u!=0){
menu(u);
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}}
break;}
break;
case 8: med(); switch(u){
case 8: cout<<"\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}
while(u!=0){
menu(u);
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}}
break;}
break;
case 9: con(); switch(u){
case 9: cout<<"\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;
7
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}
while(u!=0){
menu(u);
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}}
break;}
break;
case 10: check(); switch(u){
case 10: cout<<"\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}
while(u!=0){
menu(u);
while((u>1)||(u<0)){
cout<<"\t\t\t\t\t\t\t\t\t !Nu exista optiunea!\n\t\t\t\t\t\t\t\t\t Meniu-1 Iesire-0 \n";
cout<<"\t\t\t\t\t\t\t\t\t\t";cin>>u;}}
break;}
break;}
}
int main(){
int n,k,j; char m[50]; char b[50]; string line;string h;
cout<<"\t\t\t\t
^*^*^*^*^*^^*^*^*^^*^*^*^^*^*^*^^*^*^*^^*^*^*^^*^*^*^^*^*^*^*^^*^*^^*^*^*^*^*^*^*^^
*^*^\n";
cout<<"\t\t\t\t ^*^ Introduceti in fisierul Turist.txt datele despre turistii cazati: ^*^\n";
cout<<"\t\t\t\t ^*^ _______________ _____________ _________________________
___________________ ^*^\n";
cout<<"\t\t\t\t ^*^|Nume Prenume |Nr camerei | Ziua.Luna.Anul cazarii |Nr noptilor cazate |
^*^\n";
cout<<"\t\t\t\t ^*^|_______________|_____________|________ ________ _______|
___________________| ^*^\n";
cout<<"\t\t\t\t ^*^ ^*^\n";
cout<<"\t\t\t\t ^*^ Introduceti in fisierul Room.txt datele camerelor hotelului: ^*^\n";
cout<<"\t\t\t\t ^*^ _______________ _________________ ______________ ______________
^*^\n";
cout<<"\t\t\t\t ^*^|Nr camerei |Pret per noapte |Nr de locuri |Tipul camerei | ^*^\n";
cout<<"\t\t\t\t ^*^|_______________|_________________|______________|______________|
^*^\n";
cout<<"\t\t\t\t ^*^ ^*^\n";
cout<<"\t\t\t\t
^*^^*^*^*^^*^*^*^^*^*^*^^*^*^*^^*^*^*^^*^*^*^^*^*^*^^*^*^*^^*^*^*^^*^*^*^^*^*^*^^*^
*^*^\n\n";
cout<<" ==============================\n";
cout<<" In hotel sunt ";num(); cout<<" de turisti.\n";
8
cout<<" ==============================\n";
cout<<" Introduceti nr turistilor: \t\t\t\t\t"; cin>>n;cout<<endl;display(n);
menu(n);
}

unit.h:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstring>
#include <stdio.h>
#include <string.h>
using namespace std;
ifstream s("Turist.txt");
ifstream f("Room.txt");
int u;
struct date{
char nume [50];
char pnume [50];
float nr_cam ;
float ziua;
float luna;
float an_caz ;
float nr_nopti;
float nrcam ;
float pret;
char prpnt [50];
float nrloc ;
char tcam[50] ;
}e[1000];

void actr(int n){


char m[50]; char b[50]; int h;
s.close();
cout<<"\tNr camerei: ";
cin>>h;
while(h>50 || h<1){
if((h>50)||(h<1)) cout<<"\t!Camera inexistenta!\n\t Introduceti nr camerei (pana la 50): ";cin>>h;
}
ifstream g("Turist.txt");
ofstream fgh;
fgh.open("rename.txt",ofstream::out);
for(int i=1;i<=50;i++){
g>>e[i].nume;
g>>e[i].pnume;
g>>e[i].nr_cam;
g>>e[i].ziua;
g>>e[i].luna;
g>>e[i].an_caz;
9
g>>e[i].nr_nopti;
}
for(int i=1;i<h;i++){
fgh<<e[i].nume<<" "<<e[i].pnume<<" "<<e[i].nr_cam<<" "<<e[i].ziua<<" ";
fgh<<e[i].luna<<" "<<e[i].an_caz<<" "<<e[i].nr_nopti<<"\n";
}
cin.get();
cout<<"\t Numele: ";
cin.get(m,49);
cin.get();
cout<<"\t Prenumele: ";
cin.get(b,49);
fgh<<m<<" "<<b;fgh<<"\t"<<e[h].nr_cam<<"\t";
fgh<<e[h].ziua<<" "<<e[h].luna<<" "<<e[h].an_caz;
fgh<<"\t"<<e[h].nr_nopti<<" ";
for(int i=++h;i<=50;i++){
fgh<<"\n"<<e[i].nume<<" "<<e[i].pnume<<" "<<e[i].nr_cam<<" "<<e[i].ziua<<" ";
fgh<<e[i].luna<<" "<<e[i].an_caz<<" "<<e[i].nr_nopti<<" ";}
g.close();
fgh.close();
remove("Turist.txt");
rename("rename.txt", "Turist.txt");
}
void intr(int n){
ifstream g("Turist.txt");
ofstream fgh;
fgh.open("rename.txt",ofstream::out);
char o[50],m[50],b[50],y[50],nr[50];int t,i; cout<<"\tNr camerei turistului: "; cin>>t;
while(t>50 || t<1){
if((t>50)||(t<1)) cout<<"\t!Camera inexistenta!\n\t Introduceti nr camerei (pana la 50): ";cin>>t;
}
cout<<"\t\t\t\t\t\t\t\t\t====================\n";
cout<<"\t\t\t\t\t\t\t\t\t Datele turistului:\n";
cout<<"\t\t\t\t\t\t\t\t\t====================\n";
for( i=1;i<=50;i++){
g>>e[i].nume;
g>>e[i].pnume;
g>>e[i].nr_cam;
g>>e[i].ziua;
g>>e[i].luna;
g>>e[i].an_caz;
g>>e[i].nr_nopti;
}

for( i=1;i<t;i++){
fgh<<e[i].nume<<" "<<e[i].pnume<<" "<<e[i].nr_cam<<" "<<e[i].ziua<<" ";
fgh<<e[i].luna<<" "<<e[i].an_caz<<" "<<e[i].nr_nopti<<"\n";
}

10
cin.get();
cout<<"\t Numele: ";
cin.get(m,49);
cin.get();
cout<<"\t Prenumele: ";
cin.get(b,49);
cin.get();
cout<<"\t Ziua.Luna.Anul: ";
cin.get(y,49);
cin.get();
cout<<"\t Nr de nopti: ";
cin.get(nr,49);
fgh<<m<<" "<<b<<" "<<t<<" "<<y<<" "<<nr<<"\n";
for( i=t;i<=50;i++){
fgh<<e[i].nume<<" "<<e[i].pnume<<" "<<e[i].nr_cam<<" "<<e[i].ziua<<" ";
fgh<<e[i].luna<<" "<<e[i].an_caz<<" "<<e[i].nr_nopti<<"\n";}
g.close();
fgh.close();
remove("Turist.txt");
rename("rename.txt", "Turist.txt");
cout<<"\t\t\t\t\t\t\t\t ____________________________\n";
cout<<"\t\t\t\t\t\t\t\t |Datele au fost inregistrate.|\n";
}
void intrcam(){
f.close();
s.close();
ifstream g("Room.txt");
ofstream fgh;
fgh.open("rename.txt",ofstream::out);
char o[100],w[50],nr[50],p[10],l[10]; int n,i;
cout<<"\tNr camerei: "; cin>>n;
while(n>50 || n<1){
if((n>50)||(n<1)) cout<<"\t!Camera inexistenta!\n\t Introduceti nr camerei (pana la 50): ";cin>>n;
}
for( i=1;i<=50;i++){
g>>e[i].nrcam;
g>>e[i].pret;
g>>e[i].prpnt;
g>>e[i].nrloc;
g>>e[i].tcam;}
for(i=1;i<n;i++){
fgh<<e[i].nrcam<<" "<<e[i].pret<<" "<<e[i].prpnt<<" "<<e[i].nrloc<<" "<<e[i].tcam<<"\n";
}
cin.get();
cout<<"\t Pretul: ";
cin.get(l,9);
cin.get();
cout<<"\t Valuta: ";
cin.get(w,49);
11
cin.get();
cout<<"\t Nr de locuri: ";
cin.get(nr,49);
cin.get();
cout<<"\t Tipul camerei: ";
cin.get(p,9);
fgh<<n<<" "<<l<<" "<<w<<" "<<nr<<" "<<p<<"\n";
for( i=n;i<=50;i++){
fgh<<e[i].nrcam<<" "<<e[i].pret<<" "<<e[i].prpnt<<" "<<e[i].nrloc<<" "<<e[i].tcam<<"\n";
}
g.close();
fgh.close();
remove("Room.txt");
rename("rename.txt", "Room.txt");
cout<<"\t\t\t\t\t\t\t\t ____________________________\n";
cout<<"\t\t\t\t\t\t\t\t |Datele au fost inregistrate.|\n";
}

void del(){
string line, name,surname;
cout << "\tIntroduceti numele persoane pe care sa o stergeti: ";
cin >> name>>surname;
ifstream myfile;
myfile.open("Turist.txt");
ofstream temp;
temp.open("temp.txt");
while (getline(myfile, line))
{
if (line.substr(0, name.size()) != name && line.substr(0, name.size()) != surname)
temp<<line<<endl;
}
cout << "\t Linia cu numele " << name<<" "<<surname << " a fost stearsa." << endl;
myfile.close();
temp.close();
remove("Turist.txt");
rename("temp.txt", "Turist.txt");}

void delcam(int i){


int name;
cout << "\tIntroduceti nr camerei: ";
cin >> name;
while(name>50 || name<1){
if((name>50)||(name<1)) cout<<"\t!Camera inexistenta!\n\t Introduceti nr camerei (pana la 50):
";cin>>name;
}
ifstream myfile;
myfile.open("Room.txt");
ofstream temp;
temp.open("temp.txt");
12
for(int y=1;y<50;y++){
if(name!=y) temp<<e[y].nrcam<<" "<<e[y].pret<<" "<<e[y].prpnt<<" "<<e[y].nrloc<<"
"<<e[y].tcam<<"\n";
}
cout << "\t Camera cu numarul " << name << " a fost eliberata." << endl;
myfile.close();
temp.close();
remove("Room.txt");
rename("temp.txt", "Room.txt");
}

void actrcam(){
f.close();
s.close();
ifstream g("Room.txt");
ofstream fgh;
fgh.open("rename.txt",ofstream::out);
char o[100],w[50],nr[50],p[10],l[10]; int n,i;
cout<<"\tNr camerei: "; cin>>n;
while(n>50 || n<1){
if((n>50)||(n<1)) cout<<"\t!Camera inexistenta!\n\t Introduceti nr camerei (pana la 50): ";cin>>n;
}
for( i=1;i<=50;i++){
g>>e[i].nrcam;
g>>e[i].pret;
g>>e[i].prpnt;
g>>e[i].nrloc;
g>>e[i].tcam;}
for(i=1;i<n;i++){
fgh<<e[i].nrcam<<" "<<e[i].pret<<" "<<e[i].prpnt<<" "<<e[i].nrloc<<" "<<e[i].tcam<<"\n";
}
cin.get();
cout<<"\t Pretul: ";
cin.get(l,9);
cin.get();
cout<<"\t Valuta: ";
cin.get(w,49);
cin.get();
cout<<"\t Nr de locuri: ";
cin.get(nr,49);
cin.get();
cout<<"\t Tipul camerei: ";
cin.get(p,9);
fgh<<n<<" "<<l<<" "<<w<<" "<<nr<<" "<<p<<"\n";
for( i=++n;i<=50;i++){
fgh<<e[i].nrcam<<" "<<e[i].pret<<" "<<e[i].prpnt<<" "<<e[i].nrloc<<" "<<e[i].tcam<<"\n";
}
g.close();
fgh.close();
13
remove("Room.txt");
rename("rename.txt", "Room.txt");
cout<<"\t\t\t\t\t\t\t\t ____________________________\n";
cout<<"\t\t\t\t\t\t\t\t |Datele au fost inregistrate.|\n";
}
void list(){
s.close();
f.close();
ifstream g("Turist.txt");
ifstream p("Room.txt");
ofstream fgh;
fgh.open("tmep.txt", ofstream::out);

for(int i=1;i<=50;i++){
g>>e[i].nume;
g>>e[i].pnume;
g>>e[i].nr_cam;
p>>e[i].nrcam;
p>>e[i].pret;
p>>e[i].prpnt;
p>>e[i].nrloc;
p>>e[i].tcam;
}
int lol;

for(int i=1;i<=50;i++)
for(int j=++i;j<=50;j++){
if(e[j].nr_cam>=e[i].nrcam) lol=e[j].nr_cam;}
for(int i=++lol;i<=50;i++)
{fgh<<e[i].nrcam<<"\t"<<e[i].pret<<"\t"<<e[i].prpnt<<"\t"<<e[i].nrloc<<"\t"<<e[i].tcam<<"\n";}
g.close();
p.close();
fgh.close();
struct em
{ float nrcam;
float pret;
string prpnt;
float nrloc;
string tcam;
}ef[999];
ifstream gh("tmep.txt");
float loc,nr,pr;string pret, tip;
for(int i=1;i<=50-lol+1;i++){
gh>>ef[i].nrcam;
gh>>ef[i].pret;
gh>>ef[i].prpnt;
gh>>ef[i].nrloc;
gh>>ef[i].tcam;}
for(int i=1;i<=50-lol+1;i++)

14
for(int j=i;j<=50-lol+1;j++){
if(ef[i].nrloc<=ef[j].nrloc){
nr=ef[i].nrcam;
pr=ef[i].pret;
pret=ef[i].prpnt;
loc=ef[i].nrloc;
tip=ef[i].tcam;
ef[i].nrcam=ef[j].nrcam;
ef[i].pret=ef[j].pret;
ef[i].prpnt=ef[j].prpnt;
ef[i].nrloc=ef[j].nrloc;
ef[i].tcam=ef[j].tcam;
ef[j].nrcam=nr;
ef[j].pret=pr;
ef[j].prpnt=pret;
ef[j].nrloc=loc;
ef[j].tcam=tip;
}
}

for(int i=1;i<=50-lol+1;i++)
{cout<<ef[i].nrcam<<"\t"<<ef[i].pret<<ef[i].prpnt<<"\t "<<ef[i].nrloc<<"\t"<<ef[i].tcam<<"\n";}
gh.close();
remove("tmep.txt");
}
void med(){
s.close();
ifstream g("Turist.txt");
int sum=0,l=0,i;
for(i=1;i<=50;i++){
g>>e[i].nume;
g>>e[i].pnume;
g>>e[i].nr_cam;
g>>e[i].ziua;
g>>e[i].luna;
g>>e[i].an_caz;
g>>e[i].nr_nopti;}
for(i=1;i<=50;i++){
sum=sum+e[i].nr_nopti;l++;}
cout<<"\t Durata medie de cazare - "<<sum/l<<" nopti.";
g.close();
}

void con(){
ifstream g("Room.txt");
ofstream fgh;
fgh.open("rename.txt",ofstream::out);
int ax,i,ay,ol,oi;
for( i=1;i<=50;i++){
15
g>>e[i].nrcam;
g>>e[i].pret;
g>>e[i].prpnt;
g>>e[i].nrloc;
g>>e[i].tcam;}
ax=e[1].pret;
for( i=1;i<=50;i++){
if(e[i].pret>=ax) ax=e[i].pret,ol=i;}cout<<"\tCamera "<<ol<<" costa "<<ax<<" Euro. (cea mai
scumpa)\n";
ay=e[1].pret;
for( i=1;i<=50;i++){
if(e[i].pret<=ay) ay=e[i].pret,oi=i;}cout<<"\t Camera "<<oi<<" costa "<<ay<<" Euro. (cea mai
ieftina)\n";
for( i=1;i<=50;i++){
fgh<<e[i].nrcam<<" "<<e[i].pret<<" "<<e[i].prpnt<<" "<<e[i].nrloc<<" "<<e[i].tcam<<"\n";}
g.close();
fgh.close();
remove("Room.txt");
rename("rename.txt", "Room.txt");
}

void check(){

ifstream g("Room.txt");
ifstream h("Turist.txt");
ofstream fgh;
fgh.open("Check.txt",ofstream::out);
int f,i,j,y=0;
struct data
{
int zz;
int mm;
int yy;
}dt;
int v,o=0,p,q;
h.open("Turist.txt");
cout<<"\tIntroduceti data cazarii"<<endl;
cout<<"\t Anul: ";cin>>dt.yy;
while(dt.yy<=0){
cout<<"\t!An inexistent!"<<endl;
cout<<"\t Introduceti anul: ";
cin>>dt.yy;}
if (dt.yy%4==0) q=1; else q=0;

cout<<"\t Luna: ";cin>>dt.mm;


while((dt.mm<=0)||(dt.mm>12)){
cout<<"\t!Luna inexistenta!"<<endl;
cout<<"\t Introduceti luna: ";
cin>>dt.mm;}

16
cout<<"\t Ziua: ";cin>>dt.zz;
if ((dt.mm!=2)&&(dt.mm%2==0)) while ((dt.zz<=0)||(dt.zz>30)){
cout<<"\t!Zi inexistenta!"<<endl;
cout<<"\t Introduceti ziua: ";
cin>>dt.zz;}

if (dt.mm%2==1) while ((dt.zz<=0)||(dt.zz>31)){


cout<<"\t!Zi inexistenta!"<<endl;
cout<<"\t Introduceti ziua: ";
cin>>dt.zz;}
if ((dt.mm==2)&&(q==1)) while ((dt.zz<=0)||(dt.zz>29)){cout<<"\t!Zi inexistenta!"<<endl;
cout<<"\t Introduceti ziua: ";
cin>>dt.zz;}
if ((dt.mm==2)&&(q==0)) while ((dt.zz<=0)||(dt.zz>28)){cout<<"\t!Zi inexistenta!"<<endl;
cout<<"\t Introduceti ziua: ";
cin>>dt.zz;}
for(i=1;i<=50;i++)
for(j=1;j<=50;j++){
g>>e[j].nrcam;
g>>e[j].pret;
h>>e[i].nume;
h>>e[i].pnume;
h>>e[i].nr_cam;
h>>e[i].ziua;
h>>e[i].luna;
h>>e[i].an_caz;
h>>e[i].nr_nopti;}
for(i=1;i<=50;i++){
if((dt.zz==e[i].ziua) &&(dt.mm==e[i].luna)&&(dt.yy==e[i].an_caz)) y=e[i].nr_cam,
fgh<<e[i].nume<<" "<<e[i].pnume<<" "<<e[i].nr_nopti*e[y].pret<<" Euro.\n";}
if(y==0) cout<<"\n\t\t\t\t\t\t\
t=====================================================\n\t\t\t\t\t\t\t Nu se gasesc
persoane inregistrate pe aceasta data.\n\t\t\t\t\t\t\
t=====================================================\n";
else cout<<"\n\t\t\t\t\t\t\t\t\t====================\n\t\t\t\t\t\t\t\t\t Verifica Check.txt\n\t\t\t\t\
t\t\t\t\t====================\n";
}
void num(){
ifstream g("Turist.txt");
char a;
int k=0;
while(g.get(a)){
if(a == '\n')
k++;}
cout<<k;
g.close();
}
Testarea programului

17
Meniul programului:

Înregistrea a o nouă sferă:

Excludre din fişierele de intrare liniile ce corespund codului figurii, introdus de latastatură:

Determinarea volumului sumar ale tuturor sferelor:

Afişează pe ecran atributele figurilor, de culoarea indicată de la tastatură, în ordinea crescătoare a ariilor
suprafeţelor acestora:

Afişează pe ecran atributele figurilor de volume identice:

Determină figura de volum minim şi, respectiv, cea de volum maxim, confecţionate din materialul cu
denumirea introdusă de la tastatură:

Enumără figurile confecţionate din metal, ariile suprafeţelor căror nu depăşeşte valoarea introdusă de
la tastatură:

Fig 1.11
Creează fişierul textual Galben.txt în care se vor copia acele linii ale fişierului de intrare,care
corespund figurilor de culoare galbenă:

Fig 1.12

Fig 1.13

18
Functii suplimentare
Functia de afisare a listei:

Fig 2.1

Registrul de calcul tabelar:

Inserarea pentru fiecare tabel titlul și denumirile câmpurilor respective:

Fig 3.2

Fig 3.1

Adaugarea lista prdefinita pentru Culoare, Material si Codul sferei:

19
Fig 3.5
Fig 3.4

Fig 3.3

Adaugarea o coloana in care introducem cate o imagine petru fiecare sfera:

Fig 3.6
Aria suprafetei la fiecare sfera, volumul la fiecare sfera si volumul sumar al sferelor:

Fig 3.7

Numarul de sfere cu volumul mai mare de cat mediu:

Fig 3.8
Numarul sferelor de fiecare material:

Fig 3.9

20
Volumul maxim per culoare si volumul minim per material:

Fig 3.10

Reprezentarea grafica a numarului de sfere per culoare si material:

Fig 3.11 Fig 3.12

Lista sferelor confectionate din metal, denumirea caruia sete selectata dintr-o lista ascunsa:

Fig 3.13

Sarcina suplimentara

4. Bila. Se consideră o tablă de dimensiunea n×m (n, m ≤ 50), împărţită în zone pătrate de lungimea 1 (vezi
figura 1). Fiecare zonă a tablei are o anumită înălţime şi culoare.

1 2 3 … j …m

2
21

i Zona [i, j]

… n

Fig. 1. Planul tablei

Informaţiile necesare despre zonele tablei considerate sunt înregistrate în următoarele două fişiere:
. fişierul text Tabla.in conţine pe prima linie numerele naturale n şi m, separate prin spaţiu.
Următoarele n linii ale acestui fişier conţin câte m numere reale, separate prin câte un spaţiu, fiecare din
aceste valori reprezentând înălţimea zonei respective [i, j];

. fişierul text Culoare.in, fiecare din cele n linii ale căruia conţine câte m denumiri de culori (alb,
negru, verde, rosu, cafeniu, albastru etc.), separate prin câte un spaţiu, reprezentând culorile zonelor
respective [i, j], 1 ≤ i ≤ n, 1 ≤ j ≤ m.

Să se elaboreze o aplicație care, folosind meniuri şi subprograme, să realizeze, la solicitarea


utilizatorului, următoarele prescripţii:

1) Înterschimbă în fişierele de intrare prima cu ultima linii;

2) Exclude din planul terenului un rând / o coloană; alternativa aleasă şi numărul respectiv al
rândului / coloanei de exclus se va preciza de la tastatură;

3) Determină coordonatele (numărul rândului şi numărul coloanei) zonelor de minim absolut al


înălţimilor zonelor de pe întreaga tablă;

4) Determină înălţimile medii ale zonelor din fiecare linie pară a tablei;

5) Afişează pe ecran lista culorilor distincte, asociate zonelor tablei, în ordinea descendentă a
numerelor totale de zone ce reprezintă culoarea respectivă; sortarea datelor se va realiza prin metoda
numărării.
6) Creează fişierul text ZonCol.txt, în care se vor copia acele linii ale fişierului de intrare

Culoare.in, care corespund doar zonelor de înălţimi mai mari ca 10;

7) Determină în reţeaua planului tablei un dreptunghi de arie maximală, ce conţine pe perimetru său (pe
margine) doar zone de anumită culoare DenCol; laturile dreptunghiului vor coincide cu laturile zonelor din
plan. Denumirea culorii DenCol se va citi de la tastatură; la ecran se va afişa aria S şi coordonatele
colţurilor stânga –jos şi dreapta –sus ale dreptunghiului găsit;

22
8) Rezolvă problema: În unul din pătrăţelele tablei
Poziţia
P p se plasează o bilă. Bila se poate deplasa din poziţia
in,
iniţială
curentă în unul din pătrăţelele vecine, pe una din cele
maxim 8 direcţii posibile, numai dacă acesta are o
înălţime strict mai mică decât cea a pătrăţelului pe care

Fig.2. se află bila. Pentru eventualele deplasări pe direcţii


diagonale sunt prevăzute găuri de cădere de tipul celor
din colţurile mesei de biliard.
Fiind dată poziţia iniţială P a bilei, prin
coordonatele [xp, yp] ale zonei respective, să se afle
traseul cel mai scurt, suficient pentru a părăsi tabla.
Date de intrare. Numerele naturale xp şi yp

Una din se citesc de la tastatură, iar informaţiile necesare


Zone vizitate
ieşiri
despre teren –din fişierul text Tabla.in, descris
anterior.
Date de ieşire. Se va afişa pe ecran drumul găsit prin coordonatele zonelor respective.
De exemplu, pentru ilustrarea din figura 2, drumul parcurs se va afişa astfel: [2, 2]–[3, 2]–[4, 3]– [5, 2]–
[6, 3]–[6, 4]–[5, 5]– [6, 6]–[7, 7].

Listingul programului suplimentar :


#include<iostream>
#include<fstream>
#include<string.h>

using namespace std;

void interschimba_1_m()
{
23
fstream f("Tabla.in");
int n,m; f>>n>>m; float a[n]
[m];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
f>>a[i][ii];
}
}

f.close();

remove("Tabla.in"); ofstream
f1("Tabla.in"); f1<<n<<" "<<m<<endl;
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
if(i==1)f1<<a[n][ii]<<" ";
else if(i==n)f1<<a[1][ii]<<" "; else
f1<<a[i][ii]<<" "; }f1<<endl;
} f1.close();
}
void delet_rand()
{
cout<<"Introduceti linia : ";
int l; cin>>l;

fstream f("Tabla.in");
int n,m; f>>n>>m; float a[n]
[m];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
f>>a[i][ii];
}
}

f.close();

remove("Tabla.in");

ofstream f1("Tabla.in"); f1<<n-1<<"


"<<m<<endl;
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
if(i!=l)f1<<a[i][ii]<<" ";
}if(i!=l)f1<<endl;
}
f1.close();

24
fstream g("Culoar.in"); char
culori[n][m][20];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
g>>culori[i][ii];
}
}
g.close();

remove("Culoar.in");

ofstream g1("Culoar.in");
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
if(i!=l)g1<<culori[i][ii]<<" ";
}if(i!=l)g1<<endl;
}
g1.close();
}
void delet_coloana()
{
cout<<"Introduceti coloana : ";
int c;
cin>>c;

fstream f("Tabla.in");
int n,m; f>>n>>m; float a[n]
[m];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
f>>a[i][ii];
}
}
f.close();

remove("Tabla.in");

ofstream f1("Tabla.in"); f1<<n<<"


"<<m-1<<endl;
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
if(ii!=c)f1<<a[i][ii]<<" ";
}f1<<endl;
}
f1.close();

fstream g("Culoar.in"); char


culori[n][m][20];
for(int i=1;i<=n;i++)
25
{
for(int ii=1;ii<=m;ii++)
{
g>>culori[i][ii];
}
}
g.close();

remove("Culoar.in");

ofstream g1("Culoar.in");
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
if(ii!=c)g1<<culori[i][ii]<<" ";
}g1<<endl;
}
g1.close();
}
void minimul_absolut()
{ fstream f("Tabla.in"); int n,m;
f>>n>>m; float a[n][m];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
f>>a[i][ii];
}
}
f.close(); float

min=a[1][1];

for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
if(a[i][ii]<min)min=a[i][ii];
}
}

for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
if(a[i][ii]==min)cout<<i<<":"<<ii<<endl;
}
}
}
void inaltimile_medii_pe_liniile_pare()
{
fstream f("Tabla.in");
int n,m; f>>n>>m; float a[n]
[m];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
26
{
f>>a[i][ii];
}
}
f.close();

for(int i=2;i<=n;i+=2) {float


med=0;
for(int ii=1;ii<=m;ii++)
{
med+=a[i][ii];
}
cout<<i<<") "<<med/m<<endl;
}
} void lista_culorilor_distincte()
{
fstream f("Tabla.in");
int n,m; f>>n>>m;
float a[n][m];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
f>>a[i][ii];
}
}
f.close(); fstream
g("Culoar.in"); char
culori[n][m][20]; for(int
i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
g>>culori[i][ii];
}
}
g.close();

char clr[n][20]; int


x=1;
strcpy(clr[1],culori[1][1]);
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{int ok=0;
for(int iii=1;iii<=x;iii++)
if(strcmp(culori[i][ii],clr[iii])==0)
{
ok=1;
}
if(ok==0)
{
x++;
strcpy(clr[x],culori[i][ii]);
}
}

27
}

int clri[x];

for(int iii=1;iii<=x;iii++)
{clri[iii]=0; for(int i=1;i<=n;i+
+)
{
for(int ii=1;ii<=m;ii++)
{
if(strcmp(culori[i][ii],clr[iii])==0)
{
clri[iii]++;
}

}
}
}

int b[x];char c[x][20];


for(int i=1;i<=x;i++)
{
strcpy(c[i],clr[i]);
}
for(int i=1;i<=x;i++)
{b[i]=0;
for(int ii=1;ii<=x;ii++)
{
if(clri[i]<clri[ii])b[i]++;
}
}

for(int i=1;i<=x;i++)
{
strcpy(clr[b[i]+1],c[i]);
}

for(int i=1;i<=x;i++)
{
cout<<clr[i]<<endl;
}
}
void zone_mai_mari_ca_10()
{
fstream f("Tabla.in");
int n,m; f>>n>>m;
int a[n][m],c[n][m];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
f>>a[i][ii];
}
}
f.close();

fstream g("Culoar.in"); char


culori[n][m][20];
28
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
g>>culori[i][ii];
}
}
g.close();

ofstream x("ZonCol.txt");
for(int i=1;i<=n;i++)//nu lucreaza ceva
{int ok=0;
for(int ii=1;ii<=m;ii++)
{
if(a[i][ii]<10)ok=1;
}
if(ok==0)
{
for(int ii=1;ii<=m;ii++)
{
x<<culori[i][ii]<<" ";
}x<<endl;
}
}
x.close();
}
void aria_max()
{ fstream f("Tabla.in"); int n,m;
f>>n>>m; int a[n][m],c[n]
[m];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
f>>a[i][ii];
}
}
f.close(); fstream
g("Culoar.in");
char culori[n][m][20];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
g>>culori[i][ii];
}
}
g.close();

cout<<"Introduceti culoarea :";


char culoare[20];
cin>>culoare;
int x[n][m];
for(int i=0;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
29
x[i][ii]=0;
}
}
int r=1;
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
if(strcmp(culoare,culori[i][ii])==0 && x[i-1][ii]!=0)
{
x[i][ii]=x[i-1][ii];
}
else if(strcmp(culoare,culori[i][ii])==0 && x[i][ii-
1]!=0)
{
x[i][ii]=x[i][ii-1];
}
else if(strcmp(culoare,culori[i][ii])==0)
{
x[i][ii]=r;
r++;
}
}
}
int x2[r];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
x2[i*ii]=0;
}

for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
x2[x[i][ii]]++;
}
} int max=0; x2[max]=-1;
for(int i=1;i<r;i++)
{
if(x2[i]>x2[max])
{
max=i;
}
}
cout<<max<<endl; int
px,py,px1,py1,b=0;
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
if(x[i][ii]==max && b==0)
{
b++;
px=ii;
py=i;
}
30
else if(x[i][ii]==max)
{
px1=ii;
py1=i;
}
}
}
cout<<py<<":"<<px1<<endl<<py1<<":"<<px<<endl; cout<<"Aria
: "<<(py1-py+1)*(px1-px+1)<<endl;
} void joc()
{
fstream f("Tabla.in");
int n,m; f>>n>>m; float a[n]
[m];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
f>>a[i][ii];
}
}
f.close();

fstream g("Culoar.in"); char


culori[n][m][20];
for(int i=1;i<=n;i++)
{
for(int ii=1;ii<=m;ii++)
{
g>>culori[i][ii];
}
}
g.close(); int

dir=8; int dx[]={-

1,-1,-1,0,1,1,1,0};

int dy[]={-

1,0,1,1,1,0,-1,-1};

int px[n*m],py[n*m];

int r=0,r2;int x,y; cout<<"Introduceti


x : "; cin>>x;
cout<<"Introduceti y : "; cin>>y;
while(r!=-1)
{
for(int i=0;i<dir;i++)
{

if(a[x][y]>a[x+dx[i]][y+dy[i]])
{r++;r2=r;
x+=dx[i]; y+=dy[i];
px[r]=x;
py[r]=y;
}
if(x==1 || y==1 || x==n || y==m)
31
{ r++;
px[r]=x; py[r]=y;
r=-1;i=dir+1;
}
}
}
for(int i=1;i<r2+1;i++)
cout<<px[i]<<" "<<py[i]<<endl;
} int main() {
cout<<”Pentru a interschimba primul cu ultimul rand tastati : 1”<<endl;
cout<<”Pentru a strege un rand : 2”<<endl; cout<<”Pentru a strege o coloana :
3”<<endl; cout<<”Pentru a afla minimul absolut : 4”<<endl;
cout<<”Pentru a afla inaltimile medii aale linilor pare : 5”<<endl;
cout<<”Pentru a afla lista culorilor distincte : 6”<<endl; cout<<”Pentru a
afla lista liniilor mai mari ca 10 : 7”<<endl; cout<<”Pentru a afla aria maxima si
pozitia sa : 8”<<endl; cout<<”Pentu a vedea rezolvarea problemei : 9”<<endl;

while(1) {int x;
cout<<"-"; cin>>x;
switch(x)
{
case 1 : interschimba_1_m();break; case
2 : delet_rand();break; case 3 : delet_coloana();break;
case 4 : minimul_absolut();break; case 5 :
inaltimile_medii_pe_liniile_pare();break; case 6 :
lista_culorilor_distincte();break; case 7 :
zone_mai_mari_ca_10();break; case 8 : aria_max();break;
case 9 : joc();break;
}
}
return 0;
}

Concluzie

Dupa trecerea practicii de initiere in specialitate am aplicat cunostintele accumulate pe parcursul


anului de studii. Nu au aparut dificultai pe parcursul acestor saptamani, de aceea nu am avut nevoie de a
apela la literature suplimentara.

In perioada practicii am reusit sa recapitulez tehnicile de programare sis a imi reamintesc siretlicuri
din semestrul 1. La fel miam dezvoltat competente de lucru cu fisiere si crearea programelor de dimensiuni
mai mari.

Am aprofundat cunostintele in utilizarea tipurilor de date structurate si de date ca tabolurile, matrice,


fisiere, citirea datelor din fisier , inscrierea ,excluderea si inlocuitea datelor din fisier. Am creat un meniu
destul de clar si simplu pentru ca programul sa poata fi folosit de utilizatorii simplii.Am creat si niste functii
pentru ca utilizatorul sa fie mai atras de programul dat, pentru este mai “viu”. Eu cred ca aceste programe

32
facut de noi inca sunt prea simple pentru a ceea interes utilizatorilor simplii, deoarece pe oameni ii atrag mai
mult interfata de cat functionalitatea.Se poate de spus ca aceasta trebuie sa fie prima incercare “serioasa”
pentru mine.
Consider ca pentru un programator este mai importanta practica de cat teoriea, deoarece fara sa stim
cum lucreaza o functie, fara sa vedem mai multe erori nu o vom intelege pe deplin.

Bibliografie:

Tutoriale pe Internet :

1. http://www.programming.com;

2. http://www.cplusplus.com;

3. http://www.infoarena.ro

33

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