Se citește de la tastatură un șir de caractere. Se cere să se determine dacă acesta este palindrom –citit de la stânga la dreapta este la fel ca și cum ar fi citit de la dreapta la stânga. Exemplu: șirul "Ele fac cafele" este palindrom. Limbaj C
Răspunsuri la întrebare
Răspuns:
Buna. din pacate stiu sa te ajut doar in c++ dar in c ai functa strrev(sir) care face inversul sirului si apoi verifici daca cele 2 siruri sunt egale. eu aici am aplicat metoda clasica, cea cu copiatul in alt sir de la dreapta la stanga
C++
#include <iostream>
#include <string.h>
using namespace std;
int main(){
char a[201];
cin.get(a,200);
int i,ok = 0;
for (i = 0; i < strlen(a); i++){
if (strchr(" ,!.",a[i])){
int j;
for (j = i; j < strlen(a); j++){
a[j] = a[j+1];
}
}
}
for (i = 0; i < strlen(a)/2 && ok == 0; i++){
if (tolower(a[i]) != tolower(a[strlen(a) - i - 1]))
ok = 1;
}
if (ok == 0)
cout<<"Textul este palindrom\n";
else
cout<<"Textul nu este palindrom\n";
return 0;
}
ce am gresit?
#include
int main() {
char string1[25];
char string2[25];
int i, j;
scanf("%s",&string1);
int n = strlen(string1);
for(i = 0, j = n - 1; i < n; i++, j--) {
string2[i] = string1[j];
}
string2[i] = '\0';
if(strcmp(string1,string2)==0) printf("%s","DA");
else printf("%s","NU");
return 0;
}
#include
int main()
{
char s[20];
int x, y;
fgets(s, 20, stdin);
x=s;
y=strrev(s);
if(strcmp(x,y)==0)
printf("este palindrom");
return 0;
}