Informatică, întrebare adresată de Karina03, 9 ani în urmă

Cerinţa
Să se scrie un program care citește mai multe cuvinte și determină despre fiecare dacă este palindrom.

Date de intrare
Fișierul de intrare palindrom.in conține pe prima linie un număr natural n, iar pe următoarele n linii câte un cuvânt alcătuit din litere mici ale alfabetului englez.

Date de ieşire
Fișierul de ieșire palindrom.out va conține n linii. Linia i va conține valoarea 1 dacă pe linia i+1 din fișierul de intrare se află un palindrom, și 0 în caz contrar.

Restricţii şi precizări
0 fiecare cuvânt va conține cel mult 20 de caractere

Răspunsuri la întrebare

Răspuns de Andreea69
6
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("palindrom.in");
ofstream fout("palindrom.out");
int main()
{
    int n,i,m,j,h;
    bool ok;
    char v[100];
    fin>>n;
    fin.get();
    for(i=0;i<n;i++) {
        fin.getline(v,100);
        m = strlen(v);
        ok=1;
        j=0; h=m-1;
        while(j<m && h>=0) {
            if(v[j]!=v[h]) ok=0;
            j++; h--;
        }
        if(ok==1) fout<<"1";
        else fout<<"0";
        fout<<endl;
    }
    return 0;
}
Răspuns de express
8
Problema se face foarte simplu folosind functia strrev(s) - inverseaza literele intr0un cuvant. Din pacate aceasta functie nu functioneaza pe pbinfo. Iti ofer sursa mea la problema Palindrom. Succes!
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
char s[100],t[100],c;
int n,i,j,r,l;
int main()
{
   ifstream f("palindrom.in");
   ofstream g("palindrom.out");
   f>>n;
   for(i=1;i<=n;i++)
   {
      f>>s;
      strcpy(t,s);
      // strrev(s);
      l=strlen(s);
      for(j=0;j<=(l-1)/2;j++)
{
c=s[j];
s[j]=s[l-1-j];
s[l-1-j]=c;
}
      r=strcmp(t,s);
      if(r==0) g<<1<<"\n";
          else g<<0<<"\n";
   }
      f.close();
      g.close();
    return 0;
}

Alte întrebări interesante