Utilizarea unui header utilizator

 

Programul sursa in limbajul C++ este  practic un fisier text care contine implementarea unui algoritm in limbajul C++. Un program in C++ poate contine unul sau mai multe fisiere sursa.

    Un program C++ este alcatuit din una sau mai multe functii, din care una este radacina sau functie principala - adica nu poate lipsi si executia incepe automat cu ea.  Aceasta se numeste main. Functiile aplelate pot fi functii predefinite descrise in fisiere header predefinite sau pot fi functii definite de catre programator. Acestea din urma pot fi definite in fisierul sursa care contine programul principal sau in alt fisier pe care il vom numi header utilizator si cu care se creeaza legatura in perioada de linkeditare prin directiva preprocessor # include:

Includerea fisierelor header predefinite in codul sursa se face cu directiva include astfel:

        # include<iostream.h>
             pentru citiri sau scrieri

      In cazul in care programatorul isi poate creeaza propriile fisiere header numele fisierului va fi inclus intre ghilimele ( " " ) . Fisierul va fi continut de directorul setat ca fiind director de lucru.

De exemplu:           

#include "functii.h" , unde functii.h este un fisier header definit de programator.

Spre exemplu pentru a afisa suma cifrelor numerelor prime din intervalul [a,b] se poate proceda astfel:

Se editeaza fisierul header utilizator: functii.h. (poate avea si alta extensie, spre exemplu functii.cpp)

Functii.h

#include<iostream.h>

#include<conio.h>

 

int prim(int x)

{for (int i=2;i<=x/2;i++)

           if(x%i==0)

                 return 0;

return 1;

}

 

int sumacif(int x)

{int s=0;

 while(x)

   {s=s+x%10;

    x=x/10;}

return s;}

In continuare se editeaza fisierul care contine programul principal. Acesta va avea extensia cpp:

Test.cpp

#include "functii.h"

void main( )
{clrscr();
int a,b;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"numerele prime din intervalul [a, b]:"<<endl;
for(int i=a;i<=b;i++)
    if(prim(i)==1)
            cout<<i<<" are suma cifrelor  "<<sumacif(i)<<endl;
getch();
}

 

Probleme propuse:

  1. Editati un fiesier antet care sa permita citirea, afisarea si ordonarea unui vector
  2. Editati un fiesier antet care sa permita citirea si afisarea unei matrici
  3. Editati un fiesier antet care sa contina definitia functiei prim
  4. Editati un fiesier antet care sa contina definitia functiei care inverseza un numar (incepand de la unitati)
  5. Editati un fiesier antet care sa contina definitia functiei care determina cel mai mare divisor comun a doua numere intregi
  6. Editati un fiesier antet care sa contina definitia functiei care trece un numar din baza 10 intr-o baza b (b<=9) si retine rezultatul intr-un vector (de cifre) precum si numarul de cifre.
  7. Sa se afiseze numerele prime care inversate sunt tot numere prime
  8. O persoana are un billet cu 4 linii si 5 coloane la jocul Matrice-Bingo. Se anunta cele 5 numere de pe linia castigatoare. Stabiliti daca biletul a fost castigator.

Exemplu:

10 13 23 14  10

12 16 18   3    2

6     7  17 32  33

41 23   27 28 29

 

linia castigatoare: 17 , 7,33,32, 6 . Biletul este castigator pentru ca are aceleasi elememte pe linia 3 (nu conteaza ordinea).

  1. Sa se genereze o astfel de matrice patratica. Se citeste n. Pt n=4:

1   2   3    4

8   7    6    5

9   10   11 12

16 15 14 13

 

  1.  Sa se simuleze jocul 6 din 49. Calculatorul genereaza 6 numere  distincte cuprinse intre 1 si 49 si voi propuneti calculatorului 6 numere (se citesc de la tastatura). Veti fi anuntati daca ati castigat altfel se va spune cate numere s-au ghicit.
  2. Numarul buclucas. Sa se simuleze un astfel de joc care sa simuleze extragerea unor bile numerotate de la 1 la 99. Pentru fiecare numar exista o singura bila. Extragerea se va intrerupe la un numar buclucas precizat de voi (citit de la tastatura). Se va determina punctajul obtinut din extragerea bilelor.