mda

2
Training_R2_P2 __________________________________________________________________ 1 Viticultorii dintr-o anumită regiune faimoasă pentru vinurile sale se hotărăsc să înfiinţeze o asociaţie pentru a-şi putea promova mai bine produsele. Fiecare viticultor are o suprafaţă de vie de pe care are o anumită producţie de struguri. Din producţia de struguri, o parte se vinde ca atare (se vând struguri), o altă parte din producţie va fi transformată în must şi valorificat acest produs, iar cea mai mare parte din producţia de struguri va fi folosită pentru producerea vinului pentru care regiunea este faimoasă. Fiecare viticultor din asociaţie are libertatea de a stabili procentul din producţia de struguri alocat fiecărui produs (struguri, must sau vin). Trebuie să se calculeze: 1) Care este producţia totală de struguri a asociaţiei? 2) Ştiind că la vremea culesului un kilogram de struguri de vinde cu p lei, care este venitul asociaţiei obţinut din valorificarea strugurilor ca atare? 3) Care este procentul din producţie rezervat de asociaţie pentru producţia de vin? Date de intrare Datele de intrare se citesc dintr-un fişier dat ca argument al liniei de comanda şi care are pe prima linie un număr întreg care reprezintă numărul membrilor asociaţiei de viticultori. Pe următoarea linie se găsesc n numere reale reprezentând producţia de struguri a fiecăruia dintre membrii asociaţiei. Numerele reale sunt separate de câte un spaţiu. Pe următoarele n linii se găsesc câte trei numere reale reprezentând procentele din producţie rezervate de fiecare viticultor pentru cele trei tipuri de produse (struguri, must şi vin). Atenţie! Suma celor trei numere de pe fiecare linie trebuie să fie egală cu 100. Pe ultima linie se găseşte un număr real reprezentând preţul unui kilogram de struguri. Date de ieşire Rezultatele obţinute trebuie înscrise într-un fişier al cărui nume coincide cu numele fişierului de intrare, dar are extensia out, iar datele de intrare trebuie afişate pe monitor pentru a verifica citirea lor corectă. Dacă nu există argument în linia de comandă pentru numele fişierului de intrare, rezultatele se vor afişa pe monitor. (Numele unui fişier este format din numele propriu-zis, urmat de caracterul '.' (punct) şi de extensie formată din cel mult trei caractere). Valorile rezultate vor integrate în mesaje la înscrierea în fişier (de exemplu, în fişier se va înscrie 'Producţia totală a asociaţiei este 1542,37 kg.'sau 'Asociatia a rezervat pentru producţia de vin 76% din productia de struguri'). Procentele stabilite de fiecare viticultor pentru valorificarea producţiei sale de struguri vor fi memorate într-o structură numită PROCENTE care are ca membri trei numere reale a căror sumă trebuie să fie egală cu 100. Procentele corespunzătoare tuturor membrilor asociaţiei vor fi memorate prin intermediul unui pointer la structura PROCENTE pentru care se face alocare dinamică de memorie. Linia de comandă Forma liniei de comandă este următoarea: prod [/t] [/s] [/p] [/h] nume_fisier în care: prod este numele programului; /t opţiune care determină scrierea valorii producţiei totale; /s opţiune care determină scrierea venitului obţinut din vânzarea strugurilor; /p opţiune care determină scrierea procentului din producţie rezervat de asociaţie pentru producţia de vin. /h opţiune care permite afişarea unui mesaj care sa indice funcţionalitatea programului şi forma corectă a liniei de comandă. Dacă nu este indicată nici o opţiune atunci se scriu în fişier toate cele trei valori. În linia de comandă poate apărea una, două sau trei opţiuni. Opţiunea /h poate apărea doar ca singură opţiune. Numele fişierului este întotdeauna prezent în linia de comandă (în afara de cazul în care avem opţiunea /h).

description

ASDSAA

Transcript of mda

  • Training_R2_P2 __________________________________________________________________

    1

    Viticultorii dintr-o anumit regiune faimoas pentru vinurile sale se hotrsc s nfiineze o asociaie pentru a-i putea promova mai bine produsele. Fiecare viticultor are o suprafa de vie de pe care are o anumit producie de struguri. Din producia de struguri, o parte se vinde ca atare (se vnd struguri), o alt parte din producie va fi transformat n must i valorificat acest produs, iar cea mai mare parte din producia de struguri va fi folosit pentru producerea vinului pentru care regiunea este faimoas. Fiecare viticultor din asociaie are libertatea de a stabili procentul din producia de struguri alocat fiecrui produs (struguri, must sau vin). Trebuie s se calculeze:

    1) Care este producia total de struguri a asociaiei? 2) tiind c la vremea culesului un kilogram de struguri de vinde cu p lei, care este venitul

    asociaiei obinut din valorificarea strugurilor ca atare? 3) Care este procentul din producie rezervat de asociaie pentru producia de vin?

    Date de intrare

    Datele de intrare se citesc dintr-un fiier dat ca argument al liniei de comanda i care are pe prima linie un numr ntreg care reprezint numrul membrilor asociaiei de viticultori. Pe urmtoarea linie se gsesc n numere reale reprezentnd producia de struguri a fiecruia dintre membrii asociaiei. Numerele reale sunt separate de cte un spaiu. Pe urmtoarele n linii se gsesc cte trei numere reale reprezentnd procentele din producie rezervate de fiecare viticultor pentru cele trei tipuri de produse (struguri, must i vin). Atenie! Suma celor trei numere de pe fiecare linie trebuie s fie egal cu 100. Pe ultima linie se gsete un numr real reprezentnd preul unui kilogram de struguri.

    Date de ieire Rezultatele obinute trebuie nscrise ntr-un fiier al crui nume coincide cu numele fiierului de intrare, dar are extensia out, iar datele de intrare trebuie afiate pe monitor pentru a verifica citirea lor corect. Dac nu exist argument n linia de comand pentru numele fiierului de intrare, rezultatele se vor afia pe monitor. (Numele unui fiier este format din numele propriu-zis, urmat de caracterul '.' (punct) i de extensie format din cel mult trei caractere). Valorile rezultate vor integrate n mesaje la nscrierea n fiier (de exemplu, n fiier se va nscrie 'Producia total a asociaiei este 1542,37 kg.'sau 'Asociatia a rezervat pentru producia de vin 76% din productia de struguri').

    Procentele stabilite de fiecare viticultor pentru valorificarea produciei sale de struguri vor fi memorate ntr-o structur numit PROCENTE care are ca membri trei numere reale a cror sum trebuie s fie egal cu 100. Procentele corespunztoare tuturor membrilor asociaiei vor fi memorate prin intermediul unui pointer la structura PROCENTE pentru care se face alocare dinamic de memorie.

    Linia de comand Forma liniei de comand este urmtoarea: prod [/t] [/s] [/p] [/h] nume_fisier

    n care:

    prod este numele programului;

    /t opiune care determin scrierea valorii produciei totale; /s opiune care determin scrierea venitului obinut din vnzarea strugurilor; /p opiune care determin scrierea procentului din producie rezervat de asociaie pentru producia de vin.

    /h opiune care permite afiarea unui mesaj care sa indice funcionalitatea programului i forma corect a liniei de comand. Dac nu este indicat nici o opiune atunci se scriu n fiier toate cele trei valori. n linia de comand poate aprea una, dou sau trei opiuni. Opiunea /h poate aprea doar ca singur opiune. Numele fiierului este ntotdeauna prezent n linia de comand (n afara de cazul n care avem opiunea /h).

  • Training_R2_P2 __________________________________________________________________

    2

    Barem de notare Programul trebuie s fie funcional, iar funciile scrise trebuie s poat fi verificate prin rularea programului.

    Tabel nr. 1

    A1 Citirea produciei realizate de membrii asociaiei de viticultori (funcia primete ca parametri un pointer la o structur FILE, un tablou de numere reale i un ntreg i nu returneaz nimic)

    0,5

    A2 Citirea procentelor stabilite de membrii asociaiei pentru cele trei tipuri de folosire a produciei de struguri (funcia are ca parametri un pointer la o structur FILE i un numr ntreg i returneaz un pointer la o structur PROCENTE).

    0,5

    A2a Alocare dinamic (cu resetarea zonei de memorie - completarea cu zero a zonei de memorie alocate) pentru un pointer la structura de tip PROCENTE.

    0,5

    A2b Citirea valorilor procentelor stabilite de un membru al asociaiei (funcia are ca parametri un pointer la o structur FILE i returneaz o structur PROCENTE).

    0,5

    A2c Verificarea corectitudinii procentelor dintr-o structur PROCENTE (funcia primete ca parametru un pointer la o structur PROCENTE i returneaz 1 sau 0 dup cum suma este corect sau nu). Dac suma nu este corect se ntrerupe funcionarea programului cu afiarea unui mesaj de eroare.

    0,5

    A3 Calcularea produciei totale de struguri (funcia primete ca parametri un pointer la un real i un ntreg i returneaz un real)

    0,5

    A4 Determinarea venitului realizat din valorificarea strugurilor ca atare (funcia primete un pointer la o structur PROCENTE, un pointer la un real, un ntreg i un real i returneaz un real n dubl precizie)

    0,5

    A5 Determinarea procentului din producie rezervat de asociaie pentru producia de vin (funcia returneaz un real i are parametri de intrare necesari pentru calculul valorii cerute)

    0,5

    A6 Scrierea pe monitor a datelor de intrare (funcia nu returneaz nimic i are parametri necesari pentru nscrierea tuturor datelor de intrare pe monitor).

    0,5

    A7 Scrierea n fiier a rezultatelor (funcie care nu returneaz nimic i are parametri necesari pentru nscrierea tuturor rezultatelor n fiier)

    0,5

    A8 Dealocarea corect a zonelor de memorie alocate 0,5

    A9 Deschiderea i nchiderea corect a fiierelor cu care se lucreaz 0,5

    A10 Scrierea corect a fiierului header 0,5

    A11 Scrierea funciei main (corect i complet) 1

    A11a Analiza liniei de comand 0,75

    A11b Formarea numelui fiierului de intrare 0,75

    A12 Funcionarea corect a programului 1

    TOTAL TABEL 1 10 p

    Nefolosirea funciilor scrise -10 p