👤

Se considera un text de maximum 255 de caractere litere mici sau saptii . Realizati un program care rescrie textul astfel incat cuvintele sa apara ordonate alfabetic.
Exemplu : Pentru sirul de caractere ''ieri am venit devreme" se va afisa :
"am devreme ieri venit".
Programul trebuie creat in limbaj c++.

Aici am lucrat dar imi da eroare , de ce ?

#include
#include
using namespace std;

int main()
{
char a[255][255],b[255],aux[256];
int i=0,j,k=0,l=0,n;
cout<<"n=";cin>>n;
cin.get();
for(i=0;i {
cin.get(a[i],256);
cin.get();}


for (i=0; i {for(j=i+1; j if (a[i+1][0]>a[i][0])
{
strcpy(aux,a[i]);
strcpy(a[i+1],a[i]);
strcpy(a[i],aux);}}

cout<


return 0;}


Răspuns :

Am o solutie in C++ mult mai buna decat incerci tu, folosind tipul string specific doar limbajului C++. Pentru documentare poti studia manualul de Tudor Sorin cls IX-X ...cel mai nou manual de C++. Este singurul in care se explica despre tipul string. Succes!
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
int n,i,k;
char s[256],c[25],*p;
bool ok;
string v[256],aux;
int main()
{
   ifstream f("sortcuv.in");
   ofstream g("sortcuv.out");
   f.getline(s,256);
   n=strlen(s);
   ok=true;
   p=strtok(s," ");
   while(p)
{
strcpy(c,p);
v[++k]=c;
p=strtok(NULL," ");
}
/* do
{
    ok=true;
    for(i=1;i<k;i++)
     if(v[i]>v[i+1])
     {
       aux=v[i];
       v[i]=v[i+1];
       v[i+1]=aux;
       ok=false;
     }
}while(!ok);
*/
    sort(v+1,v+k+1);
    for(i=1;i<=k;i++)
     g<<v[i]<<" ";
    return 0;
}