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

Sa se scrie un program care sa se verifice daca un numar este palindrom.
Precizati tipurile de instructiuni utilizate.
Va rog,repede!!!!


rossetta: in ce limbaj de programare?
rossetta: care este valoarea maxima a numarului ?

Răspunsuri la întrebare

Răspuns de Nemo19
0
bool palindrom(int n)
{int n2=0,aux;
aux=n;

do{
        n2=n2*10+(aux%10);
    }while(aux!=0);

if(n2==n) return true;
else return false;

}

Nemo19: inlocuieste secventa do cu asta, scuze: do{
n2=n2*10+(aux%10);
}while(aux!=0);
Nemo19: si dupa n2=n2*10+aux%10 adaugi aux=aux/10; inainte ca while sa se termine
Răspuns de rossetta
0
Varianta 1:
Rasturnam numarul si testam daca numarul este egal cu rasturnatul sau:

#include <iostream>
using namespace std;
int main() {
  long long p;
  cin >> p;
  int cp = p, r = 0;  // retinem o copie a lui p
  while ( p > 0 ) {   // cat timp p mai are cifre
    r = r * 10 + p % 10;  // alfam  rasturnatul lui p
    p = p / 10;           // eliminam ultima cifra
  }
  if ( cp == r )       // comparam copia lui p cu rasturnatul lui p
    cout << "DA";
  else
    cout << "NU";
  return 0;
}


Varianta 2:

Comparam prima cifra cu ultima, apoi le eliminam si reluam cat timp avem macar doua cifre si prima cifra este egala cu ultima

#include <iostream>
using namespace std;
int main() {
  long long n;
  cin >> n;
  long long cn = n, p = 1;
  // aflam 10 la puterea nr de cifre - 1
  while ( cn > 9 ) {
    p = p * 10;
    cn = cn / 10;
  }
  // cat timp avem macar doua cifre si prima cifra este egala cu ultima
  while ( p > 1 && n / p == n % 10 ) {
    n = n % p;     // eliminam prima cifra
    n = n / 10;      // eliminam ultima cifra
    p = p / 100; //actualizam puterea
  }
  if ( p <= 1 ) // daca am ajuns la o cifra sau nu mai avem cifre, numarul este palindrom
    cout << "DA";
  else
    cout << "NU";
  return 0;
}





Alte întrebări interesante