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
==============================
- conversie sir in majuscule
- conversie sir in minuscule
- adaugare subsir la sirul dat
- terminare program
==============================
alegeti o optiune:1
sirul modificat este:ANA ARE MERE
==============================
- conversie sir in majuscule
- conversie sir in minuscule
- adaugare subsir la sirul dat
- terminare program
==============================
alegeti o optiune:2
sirul modificat este:ana are mere
==============================
- conversie sir in majuscule
- conversie sir in minuscule
- adaugare subsir la sirul dat
- terminare program
==============================
alegeti o optiune:3
introduceti un sir (max 80): frumoase
sirul modificat este:ana are mere frumoase
==============================
- conversie sir in majuscule
- conversie sir in minuscule
- adaugare subsir la sirul dat
- terminare program
==============================
alegeti o optiune:1
sirul modificat este:ANA ARE MERE FRUMOASE
=====================================
- conversie sir in majuscule
- conversie sir in minuscule
- adaugare subsir la sirul dat
- terminare program
==============================
alegeti o optiune:2
sirul modificat este:ana are mere frumoase
==============================
- conversie sir in majuscule
- conversie sir in minuscule
- adaugare subsir la sirul dat
- terminare program
==============================
alegeti o optiune:3
introduceti un sir (max 80): si mari
sirul modificat este:ana are mere frumoase si mari
====================================
- conversie sir in majuscule
- conversie sir in minuscule
- adaugare subsir la sirul dat
- terminare program
==============================
alegeti o optiune:1
sirul modificat este:ANA ARE MERE FRUMOASE SI MARI
=============================================
- conversie sir in majuscule
- conversie sir in minuscule
- adaugare subsir la sirul dat
- terminare program
==============================
alegeti o optiune:2
sirul modificat este:ana are mere frumoase si mari
===================================
- conversie sir in majuscule
- conversie sir in minuscule
- adaugare subsir la sirul dat
- 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 copy, scrie, citeste, operator 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 clasasir: copy si operator iar altele sunt descrise in afara clasei: citeste, scrie 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: copy, citeste si scrie indiferent daca sunt descrise in interiorul sau in exteriorul clasei.
Leave A Comment?