Se consideră un text cu maximum 255 de caractere în care cuvintele sunt separate prin unul sau mai multe spaţii. Primul caracter din textul citit este o literă, iar cuvintele sunt formate numai din litere mici ale alfabetului englez. Scrieţi un program C/C++ care citeşte de la tastatură textul şi îl transformă înlocuind prima literă a fiecărui cuvânt cu litera mare corespunzătoare, restul caracterelor rămânând nemodificate. Textul astfel transformat va fi afişat pe ecran. Exemplu: dacă de la tastatură se introduce textul: mare frig rosu se va afişa pe ecran: Mare Frig Rosu.

Programul facut de mine este:

#include<iostream>
#include<cstring>
using namespace std;
char text[256], *p, sep[]=" ";
void Citire()
{cout<<"Dati textul:";
cin.get(text, 256);cin.get();}
void Transformare()
{p=strtok(text, sep);
while(p){if (p[0]>=97)p[0]=p[0]-32;
p=strtok(NULL,sep);}
}
int main()
{Citire();
Transformare();
return 0;}

Problema e ca imi afiseaza doar primul cuvant. Ce ar trebui sa fac pentru a afisa tot textul modificat?

1

Răspunsuri

2014-11-18T23:49:20+02:00
Am pus doar conditia - daca este primul caracter sau caracterul precedent este *space*, atunci scrie litera majuscula, in caz contrar - scrie litera minuscula.
Mai pune niste spatii si separa liniile - codul devine mult mai citibil.
Nu trebuie sa faci o locomotiva, ca sa pornesti o biciclera :)
ta*