Informatică, întrebare adresată de Ionică2001, 9 ani în urmă

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;
}


boiustef: Eu în codul de mai jos propun altă abordare...
Ionică2001: Mersi mult frate, dar daca ai fi fost atent catusi de putin la scoala ai fi invatat ca i reprezinta pozitia in sir, si ca eventual folosim in general la stergerea de caractere... mersi totusi ca te-ai straduit sa ma ajuti ;)))
Ionică2001: btw, am mai modificat in ziua aia programul si am obtinut 90 de puncte :PCand
Ionică2001: #include
#include
using namespace std;
int i=0;
void Trim(char v[111])
{for(i=0;i<=strlen(v)-1;i++)
{
if(v[i]==' ')
{strcpy(v+i,v+i+1);
i--;}
else
break;
}
for(i=strlen(v)-1;i>=0;i--)
{if(v[i]==' ')
{strcpy(v+i,v+i+1);}

else
break;}

}

int main()
{
char v[101];
cin.get(v,101);
Trim(v);
cout< return 0;
}
Ionică2001: coae... iar nu s-au copiat numele directorilor :-/////
Ionică2001: meh, cred ca stii si tu care sunt xD
boiustef: Insisti la această variantă de ştergere... strcpy(v+i,v+i+1);
iată ce propune pbinfo...
boiustef: Eliminarea unui caracter dintr-un sir
Următoarea secvență elimină din șirul s (presupus citit) caracterul de poziția x.
char s[256], t[256];
int x;
//eliminarea
strcpy(t , s + x + 1);
strcpy(s + x , t);
boiustef: adică se foloseşte o variabilă ajutătoare
boiustef: e util să consulţi teoria la meniul Resurse de pe pbinfo că au şi ei unele reguli pe care trebuie să le respectăm dacă punem cod pt verificare la ei

Răspunsuri la întrebare

Răspuns de boiustef
0

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

}

Alte întrebări interesante