Am nevoie de ajutor la o problema unde algoritmul meu primeste doar 80 de puncte.
Cerința
Se dă o propoziție formată din litere mici ale alfabetului englez, spații și semnele de punctuație ,.. Determinați un cuvânt palindrom din propoziție, primul în ordine alfabetică.
Date de intrare
Programul citește de la tastatură propoziția dată.
Date de ieșire
Programul va afișa pe ecran cuvântul determinat, sau mesajul IMPOSIBIL, dacă în șir nu există niciun cuvânt palindrom.
Restricții și precizări
propoziția citită va conține cel mult 255 de caractere
cuvintele din propoziție vor avea maxim 10 litere
Exemplu
Intrare
ele deschid un capac, aerisirea este ok
Ieșire
aerisirea
Cerința
Se dă o propoziție formată din litere mici ale alfabetului englez, spații și semnele de punctuație ,.. Determinați un cuvânt palindrom din propoziție, primul în ordine alfabetică.
Date de intrare
Programul citește de la tastatură propoziția dată.
Date de ieșire
Programul va afișa pe ecran cuvântul determinat, sau mesajul IMPOSIBIL, dacă în șir nu există niciun cuvânt palindrom.
Restricții și precizări
propoziția citită va conține cel mult 255 de caractere
cuvintele din propoziție vor avea maxim 10 litere
Exemplu
Intrare
ele deschid un capac, aerisirea este ok
Ieșire
aerisirea
Cerința
Se dă o propoziție formată din litere mici ale alfabetului englez, spații și semnele de punctuație ,.. Determinați un cuvânt palindrom din propoziție, primul în ordine alfabetică.
Date de intrare
Programul citește de la tastatură propoziția dată.
Date de ieșire
Programul va afișa pe ecran cuvântul determinat, sau mesajul IMPOSIBIL, dacă în șir nu există niciun cuvânt palindrom.
Restricții și precizări
propoziția citită va conține cel mult 255 de caractere
cuvintele din propoziție vor avea maxim 10 litere
Exemplu
Intrare
ele deschid un capac, aerisirea este ok
Ieșire
aerisirea
#include
#include
using namespace std;
char s[256],*p,p1[11],p2[11],t[11],p3[11];
int main()
{
long long int i,k=0,f=0,q=0,j;
cin.getline(s,256);
p=strtok(s," ., ");
strcpy(t,s);
while(p)
{
k=0;
strcpy(p1,p);
for(j=strlen(p)-1;j>=0;j--)
{
p2[k]=p[j];
k++;
}
p2[k]=0;
if(strcmp(p2,p1)==0)
{
if(strcmp(p2,t)<=0)
{strcpy(t,p2);}
f++;
}
p=strtok(NULL," ., ");
}
if(f>0)
{
for(i=strlen(t)-1;i>=0;i--)
{
p3[q]=t[i];
q++;}
cout << p3;
}
else
cout << "IMPOSIBIL";
}
Ce ar trebui sa modific la el?
boiustef:
e de pe pbinfo?
Răspunsuri la întrebare
Răspuns de
10
Răspuns:
#include <iostream>
#include <string.h>
using namespace std;
char s[256], separator[]=" ,.", copie[12], pal[12], *cuv;
short gasit, p, i;
int main()
{
cin.getline(s,256);
cuv=strtok(s, separator);
gasit=0;
while (cuv)
{
p=strlen(cuv);
for(i=0; i<p; ++i )
copie[i]=cuv[p-1-i]; copie[p]=0;
if (strcmp(cuv,copie)==0)
{
gasit=1;
if (strlen(pal)==0) strcpy(pal,cuv);
if (strcmp(cuv, pal)<0)
strcpy(pal,cuv);
}
cuv=strtok(NULL, separator);
}
if (gasit) cout << pal;
else cout << "IMPOSIBIL";
}
Explicație:
succese la cercetare...
Alte întrebări interesante
Germana,
8 ani în urmă
Geografie,
8 ani în urmă
Informatică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă