Documente Academic
Documente Profesional
Documente Cultură
REPUBLICII MOLDOVA
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
Aria suprafetei la fiecare sfera, volumul la fiecare sfera si volumul sumar al sferelor:..................................22
Lista sferelor confectionate din metal, denumirea caruia sete selectata dintr-o lista ascunsa:.....................22
Sarcina suplimentara......................................................................................................................................23
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ă.
--------------------------------------------------------------------------------------------------------------------------
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];
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 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;
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;}
17
Meniul programului:
Excludre din fişierele de intrare liniile ce corespund codului figurii, introdus de latastatură:
Afişează pe ecran atributele figurilor, de culoarea indicată de la tastatură, în ordinea crescătoare a ariilor
suprafeţelor acestora:
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
Fig 3.2
Fig 3.1
19
Fig 3.5
Fig 3.4
Fig 3.3
Fig 3.6
Aria suprafetei la fiecare sfera, volumul la fiecare sfera si volumul sumar al sferelor:
Fig 3.7
Fig 3.8
Numarul sferelor de fiecare material:
Fig 3.9
20
Volumul maxim per culoare si volumul minim per material:
Fig 3.10
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
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.
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ă;
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
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
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");
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");
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();
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]++;
}
}
}
}
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();
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();
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();
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];
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
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.
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