Intersectie

Embed Size (px)

Citation preview

  • 5/26/2018 Intersectie

    1/16

    1

    Proiect Informatic

    Realizator: Lupuleasa AlexandraProfesor ndrumtor: Mgurean Marius

  • 5/26/2018 Intersectie

    2/16

    2

    Cuprins:

    Capitolul ISuportul teoretic necesarrezolvrii problemei

    Capitolul IIExplicarea rezolvrii problemei

    Capitolul IIIRezolvarea problemei

  • 5/26/2018 Intersectie

    3/16

    3

    Textul problemei:

    O matrice memoreaz n intervale nchise, pe fiecarelinie cte un interval sub forma nceput sfrit. Parteastng, respectiv dreapt, a fiecrui interval are fix doucifre. Realizai o funcie care primete ca parametri o

    astfel de matrice, respectiv numrul de linii n, ireturneaz un numr ntreg compus din nceputulintervalului de intersecie al celor n intervale, apoi cifra 0i apoi sfritul intervalului de intersecie. n main, citiidintr-un fiier de intrare numrul de intervale, matriceaintervalelor i afiai ntr-un fiier de ieire marginea

    stng a interseciei, respectiv dreapt.Exemplu: Returul funciei va fi 33036, iar n fiier se

    va afia 33 36.

  • 5/26/2018 Intersectie

    4/16

    4

    Capitolul I:

    Numim subprogramsau funcie un ansamblu deinstruciuni care implementeaz un anume algoritm.

    Sintaxa definirii unei funcii:

    Tip_de_date nume (lista parametrilor formali){

    Set de instruciuni;[return expresie;]

    }

    Observaie:n C++, o sintaxncadratntre douparanteze ptrate este opional(poate snu aparnfuncie).

  • 5/26/2018 Intersectie

    5/16

    5

    Tipul de date al unui subprogram este determinat

    de ceea ce returneaz el. Dac returneaz un ntreg,tipul de date va fi de tip int. Dac returneaz un real, tipul dedate va fi floatsau double. Dac nu returneaz nimic, tipulde date va fi void.

    Numim parametru formalo variabil pentru care realizmalgoritmul. Fiecare parametru formal se declar mpreun cutipul su de date i dimensiunea, dac este cazul. ntre ei,parametri formali se separ cu ajutorul virgulei.

  • 5/26/2018 Intersectie

    6/16

    6

    Linia tip_de_date nume (lista parametrilorformali)se numete antetul funciei. Liniile din

    interiorul acoladelor se numesc corpul funciei.

    Dup ce a fost creat, un suprogram va fi apelat dinfuncia principal.

    n general, definiia unui subprogram precededefiniia funciei principale.

    Sintaxa unui apel de funcie:

    Nume (lista parametrilor efectivi);

  • 5/26/2018 Intersectie

    7/16

    7

    Variabilele locale:

    Variabilele locale se caracaterizeaz pe lng nume,tip de date i valoare i prin:

    - Clasa de memorare: segmentul de stiv;- Vizibilitate: la nivel de funcie;- Durata de via: local.

    Observaie:Variabilele locale nu se iniializeazautomat la declarare.

  • 5/26/2018 Intersectie

    8/16

    8

    Noiuni de fiier text

    Fiierele text sunt folosite pentru a reine datele deintrare i pentru a scrie datele de ieire.

    Fiierele din care vom citi datele se vor numi deintrare i vor avea extensia .in. Cele care vor afiarezultatele se vor numi de ieire i vor avea extensia.out.

    Observaie:Pentru a folosi fiiere text trebuieintrodus biblioteca fstream.

  • 5/26/2018 Intersectie

    9/16

    9

    Fiierele de intrare vor avea dou denumiri:numele fizic (de pe hard disk) i numele logic (cel

    folosit in program).Sintaxa declarrii:

    ifstream nume_logic (nume_fizic);

    Exemplu: ifstream fin (problema.in);

    Citirea datelor de intrare se va face la fel ca laconsol, cu deosebire c se nlocuiete cuvntul cheie

    cin cu numele logic al fiierului: fin.

  • 5/26/2018 Intersectie

    10/16

    10

    n cazul fiierelor de ieire, noiunile suntaceleasi, sintaxa fiind cea care difer:

    ofstream nume_logic (nume fizic);

    Exemplu: ofstream fout(problema.out);Afiarea n fiierele de ieire se face la fel ca la

    consol, cu deosebirea c se nlocuiete cout cunumele logic al fiierului fout.

  • 5/26/2018 Intersectie

    11/16

    11

    Capitolul II:

    Problema este format din seciunea de includere,

    structura using namespace std, definirea funcieiisintaxa apelului de funcie.

  • 5/26/2018 Intersectie

    12/16

    12

    Explicarea subprogramului:

    Funcia numit sugestiv intersecie conine peprima linie declararea parametrilor formali: matricea a inumrul ntreg n, care reprezint numrul de linii.

    n continuare sunt declarate variabilele ntreginceput, iniializat cu o valoare foarte mic i sfrit,iniializat cu o valoare foarte mare. Aceste dou variabilereprezint capetele intervalelor; captul din stnga

    trebuie sa aiba la final valoarea cea mai mare i captuldin dreapta cea mai mic.

  • 5/26/2018 Intersectie

    13/16

    13

    n continuare se vor deschide dou structuri FOR.Prima va conine o structur alternativ IF, care va

    atribui variabilei nceput cea mai mare valoare. n adoua structur FOR se va deschide o alt structur detipul IF, care de data aceasta va da variabilei sfritcea mai mic valoare.

    Dupa cele dou structuri FOR va urma nc ostructur IF, care va verifica dac numrul din dreaptaeste mai mic dect cel din stnga, n acest caz funciasfrindu-se cu return 0, deoarece intersecia intervalelorar fi mulimea vid.

    La sfrit se va returna rezultatulnceput*1000+sfrit, care va afia captul stng, valoarea 0 i captuldrept al intervalului.

  • 5/26/2018 Intersectie

    14/16

    14

    Explicarea funciei principale:

    Dintr-un fiier text se vor citi valorilentregi ni matriceaa, de 100 linii si 2 coloane. n continuare se va deschide oalt structur FOR, n cadrul creia se vor citi elementele

    de pe cele dou coloane, n ordine.

    Apelul funciei este cel care va folosi instruciunile dinsubprogram pentru a calcula intersecia dintre intervale.

    Dac funcia nu returneaz valoarea 0, atunci programulva afia rezultatul: cele dou numere.

  • 5/26/2018 Intersectie

    15/16

    15

    Capitolul III:#include using namespace std;

    int intersectie(int a[ ][2], int n){

    int inceput=-10000,sfarsit=100000;

    for(int i=0;iinceput)

    inceput=a[i][0];for(int i=0;ia[i][0];fin>>a[i][1];

    }

    int rezultat = intersectie(a,n);

    if(rezultat!=0)fout

  • 5/26/2018 Intersectie

    16/16

    16

    Linkctre rezolvarea problemei.

    Linkctre datele din fiierul de intrare.

    Linkctre datele din fiierul de ieire.

    http://localhost/var/www/apps/conversion/tmp/scratch_5/intersectie.cpphttp://localhost/var/www/apps/conversion/tmp/scratch_5/intersectie.inhttp://localhost/var/www/apps/conversion/tmp/scratch_5/intersectie.outhttp://localhost/var/www/apps/conversion/tmp/scratch_5/intersectie.outhttp://localhost/var/www/apps/conversion/tmp/scratch_5/intersectie.inhttp://localhost/var/www/apps/conversion/tmp/scratch_5/intersectie.cpp