👤

Readuc o problema in discutie... problema #2666 de pe pbinfo (link https://www.pbinfo.ro/?pagina=probleme&id=2666)

Scrieți funcția Trim care primește ca parametru un șir de caractere s, elimină eventualele spații de la începutul și sfârșitul șirului și returnează tot prin intermediul lui s șirul de caractere rezultat.... etc

Deci am facut problema si-mi da doar 30 de puncte si nu stiu ce caz nu merge.... Aveti mai jos programul, verificati/modificati/rescrieti. Astept propuneri de programe similare sau sfaturi pt alte erori de compilare ;)))))

#include
#include
using namespace std;
int i=0;
void Trim(char v[111])
{while(v[i]==' ')
{strcpy(v+i,v+i+1);i++;
if(v[i+1]==' ')
i--;
}
if(v[0]==' ')
strcpy(v,v+1) ;
for(i=strlen(v)-1;i>=0;i--)
if(v[i]==' ')
v[i]='\0';
else
break;


}

int main()
{
char v[101];
cin.get(v,101);
Trim(v);
cout< return 0;
}



Răspuns :

#include <iostream>

#include <fstream>

#include <cstring>

using namespace std;

ifstream f("trim.in");

ofstream g("trim.out");

char s[100];

int n;

void Trim(char s[100])

{

   int p, u, i, n, k=-1;

   char w[100];

   n=strlen(s);

   p=0; while (s[p]==' ') ++p;

   u=n-1; while (s[u]==' ') --u;

   w[0]='\0';

   for (i=p; i<=u; ++i)

   {

       ++k; w[k]=s[i];

   }

   ++k; w[k]='\0';

   s[0]=0;

   strcpy(s,w);

}

int main()

{

   f.getline(s,100);

   Trim(s);

   g << s;

}