Sunteți pe pagina 1din 5

Fisa de lucru

1. Se citesc dintr-un fisier de intrare informatii despre salile de clasa ale unei unitati scolare.
Fiecare linie a fisierului contine urmatoarele informatii: id-ul salii( numar natural de 2 cifre:
prima cifra reprezinta etajul si a doua indicele salii ), numarul de locuri disponibile si informatia
cu privire la existenta unui proiector in sala respectiva.
Cerinte:
(a) Sa se modeleze comportamentul salilor de clasa
(b) Sa se citeasca si sa se afiseze informatiile salilor de clasa din fisierul sali.txt al carui
continut este:
11 45 0
33 50 1
23 20 0
13 34 1
16 97 1
19 28 1
(c) Sa se citeasca de la tastatura numarul maxim de elevi al unei grupe si sa se afiseze pentru
salile ce au proiector numarul maxim de grupe ce pot paticipa simultan la un orele de curs in
aceiasi sala
Sala.h
#pragma once
#include<iostream>
#include<fstream>

struct sala
{
int id_sala;
int nr_loc;
bool proiector;

void citire_sala(sala&m, std::ifstream&in);


void afisare_sala();
};

void grupa(sala v[100], int n);


void citire_vector(sala v[10], int&n);
void afisare(sala v[10], int n);

Sala.cpp
#include "sala.h"

void sala::citire_sala(sala&m, std::ifstream&in)


{
in >> this->id_sala;
in >> this->nr_loc;
in >> this->proiector;
}

void sala::afisare_sala()
{
std::cout << this->id_sala << " ";
std::cout << this->nr_loc << " ";
std::cout << this->proiector << " ";
std::cout << std::endl;
}
void citire_vector(sala v[10], int&n)
{
std::ifstream in("sali.txt");
in >> n;
for (int i = 0; i < n; i++)
{
sala s;
/*in >> s.id_sala;
in >> s.nr_loc;
in >> s.proiector;*/
s.citire_sala(s, in);
v[i] = s;
}
}

void afisare(sala v[10], int n)


{
for (int i = 0; i < n; i++)
{
v[i].afisare_sala();
/*std::cout << v[i].id_sala << " ";
std::cout << v[i].nr_loc << " ";
std::cout << v[i].proiector << std::endl;*/
}
}

void grupa(sala v[100], int n)


{
int nr_studenti;
std::cout << "\n nr de studenti=";
std::cin >> nr_studenti;
for (int i = 0; i < n; i++)
{
if (v[i].proiector == true)
{
int nr_grupe = v[i].nr_loc / nr_studenti;
std::cout <<"in sala "<< v[i].id_sala << " pot invata simultan " <<
nr_grupe <<" grupe \n";
}
}
}

main.cpp

#include"sala.h"

int main()
{
sala sali[50];
int n;

citire_vector(sali, n);
afisare(sali, n);
grupa(sali, n);

system("pause");
return 0;
}
2. Sa se dezvolte o aplicatie de gestiune a sarcinilor pe care le au de indeplinit angajatii unei
companii. Pentru fiecare task se cunosc urmatoarele elemente: id-ul si prioritatea taskului(un
nunar natural de o cifra) si numarul de zile asociat taskului, iar pentru fiecare angajat se
cunoaste un id, lista de taskuri asociate acestuia si task-ul la care lucreaza acesta in prezent.
Cerinte:
(a) Sa se modeleze comportamentul unui task, incluzand functii de citire si afisare al acestuia.
(b) Sa se modeleze comportamentul unui angajat, incluzand functii de citire si afisare al
acestuia, dar si de atribuire, adaugare si stergere de task-uri.
(c) Sa se creeze un meniu cu ajutorul caruia managerul de atribuie si verifica sarcinile
angajatilor.
(d) Indicatii:
1. Se va crea un vector de n angajati(n citit de la tastatura) care nu vor avea task-uri
asociate.
2. Se va citi id-ul unui angajat si unui informatiile unui task, iar task-ul citit va fi atribuit
angajatului cu id-ul citit. Se va folosi functia de citire definita la punctul anterior.
3. Se vor afisa informatiile tuturor angajatilor folosind functiile de afisare definite la
punctul anterior.
Task.h

#pragma once
#include<iostream>
struct task
{
int id_task;
int prioritate;
int nr_zile;

void citire_task();
void afisare_task();
};

Task.cpp

#include "Task.h"

void task::citire_task()
{
std::cout << "Id task=";
std::cin >> this->id_task;
std::cout << "Prioritate= ";
std::cin >> this->prioritate;
std::cout << "Numar zile= ";
std::cin >> this->nr_zile;
}
void task::afisare_task()
{
std::cout << "Id=" << this->id_task;
std::cout << " Prioritate= " << this->prioritate;
std::cout << " Numar zile= " << this->nr_zile << std::endl;
}
Angajat.h

#pragma once
#include "Task.h"

struct angajat
{
int id;
int nr_task = 0;
task taskuri[100];
task task_curent;

void adauga_task(task tasknou);


void afisare_task_curent();
void afisare_taskuri();
};

Angajat.cpp

#include "Angajat.h"

void angajat::adauga_task(task tasknou)


{
this->taskuri[this->nr_task] = tasknou;
this->nr_task++;
}

void angajat::afisare_task_curent()
{
//TODO: Atribuiti campului task_curent valoarea task-ului cu cea mai mare
prioritate
std::cout << "Angajatul cu id-ul: " << this->id << " lucreaza la task-ul: ";
this->task_curent.afisare_task();
}

void angajat::afisare_taskuri()
{
std::cout << "Angajatul cu id-ul: " << this->id << " are asociate taskurile \n";
for (int i = 0; i < this->nr_task; i++)
this->taskuri[i].afisare_task();
}
main.cpp

#include "Angajat.h"
#include "Task.h"

void main()
{
angajat angajati[50];
for (int i = 0; i < 10; i++)
{
angajat a;
a.id = i;
angajati[i] = a;

while (true)
{
std::cout << "0.Exit." << std::endl;
std::cout << "1.adauga task" << std::endl;
std::cout << "2.afisare task_curent" << std::endl;
std::cout << "3.afisare taskuri" << std::endl;
int option = 0;
std::cin >> option;
if (option == 0)
break;
else
if (option == 1)
{
int angajat_id;
std::cout << "angajat id= ";
std::cin >> angajat_id;
task t;
t.citire_task();
angajati[angajat_id].adauga_task(t);
}
else if (option == 2)
{
int angajat_id;
std::cout << "angajat id= ";
std::cin >> angajat_id;

angajati[angajat_id].afisare_task_curent();
}
else if (option == 3)
{
int angajat_id;
std::cout << "angajat id= ";
std::cin >> angajat_id;

angajati[angajat_id].afisare_taskuri();
}
}

system("pause");
}

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