Programare orientata pe obiecte

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

#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”);

}

Tip solutie

Permanent

Voteaza

(6 din 12 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?