Utilizarea clasei clasasir in programarea orientata pe obiecte c++

Configurare noua (How To)

Situatie

 Pentru orice sir de caractere, introdus de la tastatura, printr-un meniu adecvat, sa se realizeze, utilizandu-se o clasa clasasir, urmatoarele operatii: conversia sirului la caractere mici, conversia la caractere mari si adaugarea unui subsir la sirul dat.

Solutie

Pasi de urmat

#include<stdio.h>

#include<conio.h>

#include<string.h>

class clasasir

{

  //definirea clasei sir

  char sir[80]; // variabila sir ca membru privat implicit

  public:

     // declararea functiei de copiere sir

     void copy (char *s) { strcpy(sir,s);}

     // initializarea cu spatii a sirului s

     clasasir(char *s=” “) {copy(s);}

     // declararea functiei de scriere

     void scrie(FILE *fileptr);

     // declararea functiei de citire

     void citeste(FILE *fileptr);

     // declararea functiei de concatenare siruri

     void operator +=(clasasir &s)

      {

        strcat(sir,s.sir); //concatenare siruri

      }

     // declararea functiei friend conversie caractere

     friend void conversie(clasasir &s,char optiune);

}; // sfarsitul declararii clasei

// descrierea functiei de scriere

void clasasir::scrie(FILE *fileptr)

{

 fprintf(fileptr,”\n sirul modificat este:%s”,sir);

}

// descrierea functiei de citire

void clasasir::citeste(FILE *fileptr)

{

  // citeste din fisierul *fileptr si depune in sir

 int sizesir; // se memoreaza lungimea sirului citit

 fgets(sir,80,fileptr);

 sizesir=strlen(sir)-1;

 if(sir[sizesir]==’\n’) sir[sizesir]=0;

}

// descrierea functiei de conversie sir

void conversie(clasasir &s,char optiune)

{

 clasasir tempsir;

 switch (optiune)

 {

  case ‘1’: strupr(s.sir);//conversie in majuscule

                   break;

  case ‘2’: strlwr(s.sir);//conversie in minuscule

                   break;

  case ‘3’: printf(“\n introduceti un sir (max 80):”);

                   tempsir.citeste(stdin); //citeste un alt sir

                   s+=tempsir; //concateneaza sirurile

                   break;

  default:  printf(“\n optiune eronata \n”);

 }

}

void main()

{

  clasasir clsir; //declararea obiectului clsir

  char alegere=’1′,r=’d’;

  while (r==’d’)

   {

    printf(“\n dati un sir (max=80 caractere):”);

    clsir.citeste(stdin);

    do

     {

       // afisarea meniului de comenzi

       printf(“\n ==============================”);

       printf(“\n 1. conversie sir in majuscule”);

       printf(“\n 2. conversie sir in minuscule”);

       printf(“\n 3. adaugare subsir la sirul dat”);

       printf(“\n t. terminare program”);

       printf(“\n ==============================”);

       printf(“\n alegeti o optiune:”);

       alegere=getchar();getchar();

     }

    while((alegere!=’1′)&&(alegere!=’2′)&&

               (alegere!=’3′)&&(alegere!=’t’));

    while(alegere!=’t’)

      {

        conversie(clsir,alegere);

        clsir.scrie(stdout);

        do

         {

           // reafisarea meniului de comenzi

           printf(“\n ==============================”);

           printf(“\n 1. conversie sir in majuscule”);

           printf(“\n 2. conversie sir in minuscule”);

           printf(“\n 3. adaugare subsir la sirul dat”);

           printf(“\n t. terminare program”);

           printf(“\n ==============================”);

           printf(“\n alegeti o optiune:”);

          alegere=getchar();getchar();

         }

        while((alegere!=’1′)&&(alegere!=’2′)&&

                  (alegere!=’3′)&&(alegere!=’t’));

      }

     printf(“\n continuati?(d/n):”);

     r=getche();

  }

 printf(“\n terminat \n”);

}

In urma executarii programului de mai sus, s-au obtinut rezultatele din lista de mai jos,  care pun in evidenta declararea si folosirea membrilor publici si privati, prin intermediul unei instante a clasei declarate.

 dati un sir (max=80 caractere):ana are mere

 ==============================

  1. conversie sir in majuscule
  2. conversie sir in minuscule
  3. adaugare subsir la sirul dat
  4. terminare program

 ==============================

 alegeti o optiune:1

 sirul modificat este:ANA ARE MERE

 ==============================

  1. conversie sir in majuscule
  2. conversie sir in minuscule
  3. adaugare subsir la sirul dat
  4. terminare program

 ==============================

 alegeti o optiune:2

 sirul modificat este:ana are mere

 ==============================

  1. conversie sir in majuscule
  2. conversie sir in minuscule
  3. adaugare subsir la sirul dat
  4. terminare program

 ==============================

 alegeti o optiune:3

 introduceti un sir (max 80): frumoase

 sirul modificat este:ana are mere frumoase

 ==============================

  1. conversie sir in majuscule
  2. conversie sir in minuscule
  3. adaugare subsir la sirul dat
  4. terminare program

 ==============================

 alegeti o optiune:1

 sirul modificat este:ANA ARE MERE FRUMOASE

 =====================================

  1. conversie sir in majuscule
  2. conversie sir in minuscule
  3. adaugare subsir la sirul dat
  4. terminare program

 ==============================

 alegeti o optiune:2

 sirul modificat este:ana are mere frumoase

 ==============================

  1. conversie sir in majuscule
  2. conversie sir in minuscule
  3. adaugare subsir la sirul dat
  4. terminare program

 ==============================

 alegeti o optiune:3

 introduceti un sir (max 80): si mari

 sirul modificat este:ana are mere frumoase si mari

 ====================================

  1. conversie sir in majuscule
  2. conversie sir in minuscule
  3. adaugare subsir la sirul dat
  4. terminare program

 ==============================

 alegeti o optiune:1

 sirul modificat este:ANA ARE MERE FRUMOASE SI MARI

 =============================================

  1. conversie sir in majuscule
  2. conversie sir in minuscule
  3. adaugare subsir la sirul dat
  4. terminare program

 ==============================

 alegeti o optiune:2

 sirul modificat este:ana are mere frumoase si mari

 ===================================

  1. conversie sir in majuscule
  2. conversie sir in minuscule
  3. adaugare subsir la sirul dat
  4. terminare program

 ==============================

 alegeti o optiune:t

 ==============================

 terminat

 continuati?(d/n):n

In programul de mai sus s-a  declarat o clasa numita clasasir, utilizata pentru declararea obiectelor specifice acesteia (exemplu clasasir tempsir) si are ca membri date si functii. Se constata ca unii membri sunt publici, marcati cu eticheta public: functiile copyscriecitesteoperator si conversie iar altii sunt privati, nemarcati cu nici o eticheta sau marcati cu eticheta private: variabila (data) sir de exemplu. Se observa, de asemenea, ca unele functii sunt descrise in corpul clasei clasasircopy si operator iar altele sunt descrise in afara clasei: citestescrie si conversie. Membri publici ai unei clase, date sau functii publice, pot fi accesati din interiorul si exteriorul clasei. De exemplu, functiile citeste si scrie au fost accesate direct din functia main prin intermediul obiectului clsir al clasei clasasir : clsir.citeste si respectiv clsir.scrie. Membri privati ai unei clase nu pot fi accesati decat din interiorul clasei. Membrul privat sir a fost accesat numai din interiorul clasei de catre functiile membre: copyciteste si scrie indiferent daca sunt descrise in interiorul sau in exteriorul clasei.

Tip solutie

Permanent

Voteaza

(6 din 15 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?