Structuri


 * Structuri in C++**

Test grila structuri

Intr-un program avem nevoie de urmatoarele informatii: nume, prenume, varsta, clasa, email, telefon pentru a memora informatii despre 2 elevi. struct **elev** { char nume[25]; char clasa[4]; char email[15]; char telefon[11]; int varsta; double mg; }**;**
 * Ce fel de date alegem (intr-un program) pentru memorarea acestora?
 * Putem grupa toate informatiile despre un singur elev, folosind structuri:

Am definit un **tip de data** cu numele //elev//. Daca dorim sa memoram date despre 2 elevi, vom declara doua variabile de tip **elev**, e1 si e2: elev e1,e2; // 2 variabile de tip elev

__Accesul la campuri__: e1.nume va memora numele,  e1.clasa va memora clasa etc. __Citirea si scrierea datelor:__ separat, pentru fiecare camp, tinand cont de tipul fiecaruia: cin>>e1.clasa>>e1.email etc
 * Operatii**

Observatii: 1) putem initializa campurile direct la declararea variabilelor, respectand ordinea campurilor: elev e1={“Pop Ionel”, “9C”, ionica@yahoo.com, 0720111111, 14, 8.50 }; 2) nu putem scrie sau citi direct, ci doar accesand pe rand fiecare camp: cin>>e1 gresit!! 3) este posibila atribuirea intre 2 variabile de acelasi tip struct: e1=e2. Cate atribuiri se fac intre campuri? 4) definitia structurii se poate face: a) in interiorul functiei main b) in afara functiei main ( mai bine aici)

Ex 1. Definiti o structura care sa permita memorarea informatiilor despre: a) o carte de la biblioteca scolii b) un punct din plan c) o masina

Ex 2.  Structura de date ** COLET **permite reţinerea a două numere reale, reprezentând valoarea <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14.6667px;">exprimată în euro a unui colet poştal, respectiv greutatea exprimată în kilograme, şi un şir <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14.6667px;">de caractere reprezentând numele oraşului expeditorului, format din cel mult ** 30 **<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14.6667px;">de <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14.6667px;">caractere. Scrieţi în limbajul ** C/C++ **<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14.6667px;">declararea structurii ** COLET **<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14.6667px;">şi o secvenţă de instrucţiuni <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14.6667px;">care permite citirea valorilor componentelor variabilelor ** x si y **<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14.6667px;">de tipul ** COLET **<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14.6667px;">. Denumiţi sugestiv <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14.6667px;">componentele structurii.Afisati informatiile despre coletul mai greu.

a) Afisati media maxima si elevii care au aceasta medie. b) Afisati numele elevilor cu medii peste 8. Cati elevi sunt? c) Ordonati descrescator elevii dupa medie 6.Se dau n filme, caracterizate prin titlul, regizorul lor si anul aparitiei . Atat titlul cat si regizorul sunt siruri de caractere formate dintr-un singur cuvant. Scrieti un program care sa rezolve urmatoarele cerinte : a) Afisati cele mai noi filme. b) Afisati filmele regizorului x c) Sa se afiseze filmele ptr. care numele regizorului incepe cu o consoana. Filmele se vor afisa in ordine alfabetica a regizorilor, iar pentru filme ale aceluiasi regizor, ordonarea se va face dupa titlul filmului (alfabetic) d). Care este regizorul cu cele mai multe filme (daca exista mai multi, se afiseaza unul) ? e) Care sunt filmele cu proprietatea ca atat in titlu cat si in numele regizorului apar cel putin trei vocale? Daca nu exista astfel de elemente se va afisa un mesaj.
 * Probleme**
 * 1) Vrem sa aflam care dintre 2 dreptunghiuri are aria mai mare. Pentru aceasta, definiti o structura **dreptunghi**, care sa memoreze l si L (lungimea si latimea dreptunghiului), 2 variabile de acest tip si rezolvati problema
 * 2) Suma si produsul a doua 2 fractii.
 * 3) Sa se scrie o functie care returneaza distanta dintre 2 puncte din plan. Folosind aceasta functie, sa se verifice daca 3 puncte din plan formeaza varfurile unui triunghi echilateral.
 * 4) Se citesc coordonatele a n puncte in plan. Sa se afiseze toate punctele care sunt situate in primul cadran
 * 5) Se citesc numele si mediile de admitere a n elevi.

7. Cele n carti dintr-o librarie sunt caracterizate prin titlul si autorul lor (atat titlul cat si autorul sunt formate dintr-un singur cuvant). Scrieti un program C++ care sa rezolve cerintele: a) Sa se afiseze, in ordine alfabetica, titlurile mai scurte decat o valoare p data. Daca exista titluri identice ordonarea se va face dupa autor. b) Sa se determine autorul cu cele mai multe carti publicate. Daca sunt mai multi, sa afiseaza unul, la intamplare c) Sa se afiseze cartile ce au proprietatea ca fiecare vocala din scrierea titlului apare si in numele autorului. Daca nu exista astfel de carti se va afisa un mesaj corespunzator.

8..Gasiti o modalitate convenabila de a reprezenta datele si apoi rezolvati problema urmatoare: Se dau denumirile a n reviste si numarul de bucati solicitate din fiecare in toate cele 12 luni ale unui an. (Ex: TvMania, ian: 120, feb: 0, mar: 23…, dec: 234). Se cere: a) Determinati revista cea mai solicitata dintr-o luna data. Daca sunt mai multe, afisati-le pe toate! b) Determinati revistele nesolicitate dintr-o luna data. c) Determinati totalul solicitarilor din fiecare luna; d) Determinati revista cea mai solicitata din an; e) Afisati revistele in ordine descrescatoare a solicitarilor f) Afisati revistele care incep si se termina cu aceeasi litera (nu se face distinctie intre litere mari si mici) g) Afisati revistele care contin sirul "TV" h) Afisati revistele care au solicitari in fiecare luna a anului i) Afisati revistele care nu au solicitari in prima jumatate a anului

9. Din fisierul DATE.IN se citesc numele, prenumele si numarul de absente pentru elevii unei clase. Sa se creeze o structura care sa contina aceste informatii. a) sa se creeze un vector gata ordonat, care sa memoreze elevii in ordine crescatoare a absentelor. b) sa se afiseze elevul/elevii cu cele mai multe absente. c) sa se afiseze numarul mediu de absente/elev

10. O structura memoreaza un monom: coeficientul si gradul lui x. Se citesc 2 polinoame. a) Sa se afiseze polinoamele b) Sa se calculeze suma si produsul lor.

11. Din fisierul "date.in" se citesc informatii despre elevi (nume, prenume, clasa, nota1, nota2, nota3) si se calculeaza media notelor. a) Afisati informatiile citite. b) Afisati elevii din clasa c (c se citeste de la tastatura). c) Afisati elevii care au prenumele cu prima litera vocala. d) Afisati toti elevii care au media mai mare decat 7. f) Afisati elevii in ordine alfabetica dupa nume si prenume. g) Afisati elevii ordonati alfabetic pe clase.

12. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Participantii la un concurs sunt identificati printr-un numar strict pozitiv (nr legitimatie ) si obtin un punctaj (numar intreg). <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">a) Sa se scrie un program in care se citesc datele despre n concurenti si se afiseaza rezultatele la concurs in ordine descrescatoare in functie de punctaj. Se va folosi un algoritm de creare a unui vector gata ordonat. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">b) Se acorda m premii. Sa se afiseze numarul legitimatiilor premiatilor. (Daca e egalitate si sunt mai multi de m, se afis. toti.)

<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Ex: <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Daca n=8 si fisierul contine perechi de forma nr. legitimatie - punctaj
 * 8 ||
 * 33 9 ||
 * 11 8 ||
 * 77 7 ||
 * 99 4 ||
 * 22 10 ||
 * 44 8 ||
 * 99 4 ||
 * 55 8 ||

<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">se obtine dupa ordonare: 22-10 33-9 44-8 11-8 66-8 55-8 77-7 99-4. Daca m=3 se afiseaza primii 6 clasati.

<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">13. Din fisierul DATE.IN se citesc numere naturale. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Sa se creeze o structura ELEMENT care sa contina fiecare numar si numarul de divizori ai acestuia. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Elementele se pastreaza ordonate crescator dupa numarul de divizori. (sirul se creeaza gata ordonat) <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">a)Afisati elementele cu numar maxim de divizori <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">b)Folosind o singura parcurgere a vectorului, afisati numerele care au acelasi numar de divizori

<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">14. Din fisierul DATE.IN se citesc: un numar natural n si date despre n masini: <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">marca, culoare, consum, an fabricatie, pret. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">a) Afisati masinile cele mai ieftine <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">b) Afisati masinile ordonate descrescator dupa consum <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">c) Afisati masinile cu culoarea "GRI" <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">d) Afisati masinile ordonate alfabetic dupa marca si descrescator dupa anul fabricatiei

<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">15. Intr-o agentie imobiliara se memoreaza informatii despre apartamentele vandute sau inchiriate intr-un oras sub forma: Operatie, Cartier, Nrcamere, Pret, Telefon (daca in partament nu exista telefon, in acest camp se pastreaza valoarea 0). Pentru vanzari, operatie=1 iar pentru inchirieri operatie=2

Sa se afiseze: a) Pretul mediu de vanzare al unui apartament cu 3 camere dintr-un cartier dat; b) Pretul minim cu care s-a inchiriat un apartament cu 4 camere, cu telefon, in cartierul "MARASTI" c) Numarul de apartamente vandute in fiecare cartier d) Pretul mediu de vanzare a unui apartament in fiecare cartier, in functie de numarul de camere.

16 Se dau 3 fisiere: DATE1.In, DATE2.In. DATE3.In. Fiecare fisier contine: -pe prima linie o clasa -.pe urmatoarea linie numere reale reprezentand mediile elevilor clasei la sfarsitul anului scolar Sa se realizeze o structura CLASA care sa contina: numele clasei, numarul de elevi si media clasei. Folosind informatiile din fisiere sa se construiasca variabilele de tip CLASA corespunzatoare fiecarei clase.

<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">17. Din fisierul DATE.IN se citesc numele, prenumele si mediile (nr reale) unor elevi admisi la liceu. Se stie ca exista 3 clase a 9a. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Elevii se ordoneaza descrescator dupa medie iar la medii egale, alfabetic dupa nume. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Ei se repartizeaza in cele 3 clase: primul in 9A, al doilea in 9B, al treilea in 9C, al patrulea in 9A etc. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Se creeaza 3 fisiere: 9A, 9B,9C in care se memoreaza elevii + mediile. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Sa se afiseze fiecare fisier. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Sa se afiseze numarul de elevi si media fiecarei clase.

<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">18. ATESTAT <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Din fisierul Atestat.in se citesc: un numar natural n, n linii cu informatii de forma: <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">nume prenume clasa nota_proiect nota1 nota2 nota3. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Sa se afiseze: <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">a) numarul de elevi din fiecare clasa <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">b) cea mai mare nota la proiect si elevii care au obtinut-o <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">c) elevii ordonati descrescator dupa nota la proiect/ clasa <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">d) elevii ordonati descrescator dupa nota la proiect/ scoala <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">e) clasa cu cea mai mare nota la proiect <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">f) media notelor la proiecte / clasa <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">g) media notelor la proiect / liceu <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">h) notele care au fost obtinute cel putin odata de toate clasele <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">i) elevii care au cele trei note egale

<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">19. Un polinom se memoreaza intr-o structura de forma <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">struct POLINOM <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">{ int n; /// gradul// //<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;"> int a[100]; /// coeficientii <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">} <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Sa se afle suma si produsul a doua polinoame.

<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">20. TOP 3 <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Elevii unei clase isi spun preferintele. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Pentru fiecare, fisierul MUZICA.IN memoreaza cate 4 linii: numele elevului, 3 trupe preferate. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">Folosind aceste informatii sa se construiasca o structura <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;"> TRUPA cu numele trupei, numarul de elevi care o prefera, numarul de puncte. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">(daca trupa e prima preferinta, 3 puncte, a doua 2 puncte, a treia 1 punct.)

<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">a) Sa se faca o afisare a preferintelor in functie de numarul de elevi care o prefera (descrescator) <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">b) Sa se faca o afisare a preferintelor in functie de numarul de puncte (descrescator) <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">c) Sa se verifice daca exista elevi care au ca si preferinte exact primele 3 trupe, ordonate ca la a)

<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">21. Se defineste o structura care memoreaza numaratorul si numitorul unei fractii. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">a) sa se scrie o functie care calculeaza suma a 2 fractii.Rezultatul se va scrie sub forma unei fractii ireductibile. <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">b) Se se calculeze suma a n fractii. (functie)

<span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">22. Se defineste o structura data calendaristica (zi, luna, an - numere naturale) <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">a) sa se scrie o functie care compara 2 date calendaristice d1 si d2 si returneza -1 daca d1< d2 / 1 daca d1 >d2 / 0 =egalitate <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">b) se citesc dintr-un fisier n linii cu date de forma nume, zi, luna, an. Introduceti intr-un sir gata ordonat datele de mai sus, in ordine cronologica. (persoanele mai in varsta -la inceput) <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">c) afisati persoanele nascute in prima zi din luna <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">d) afisati persoanele nascule in ziua de Craciun <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">e) afisati persoanele in ordinea varstei <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">f) afisati numarul de persoane nascute pe ani (in anul ... s-au nascut ... persoane) folosind proprietatea sirului ordonat <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">g) afisati toate persoanele din zodia "Capricorn" <span style="font-family: &#39;Arial&#39;,&#39;sans-serif&#39;; font-size: 14px;">h) afisati persoanele nascute in aceeasi data. (folosind proprietatea sirului ordonat)


 * Proiect structuri**


 * Meniu Citire /Afisare/ Ordonare dupa criterii/ Cautare element/ Stergere element/ Adaugare element/ Alte optiuni**