Numere palindromice
18Un numar este palindrom daca citit de la dreapta spre stanga si de la stanga spre dreapta este acelasi.Exact asta va trebui sa facem si noi.Va trebui sa citim un numar,sa-l inversam si apoi sa verificam daca este identic sau nu . O alta modalitate consta in memorarea fiecarei cifre intr`un vector si printr`o parcurgere pana la jumatatea vectorului compari primul element cu ultimul. Aceasta metoda ramane pentru dumneavoastra ca tema 😀
#include <stdio.h> int main() { int n,nogl=0,copie; scanf("%d",&n); copie=n; while(n!=0) { nogl=nogl*10+n %10; n=n/10; } if(copie==nogl) { printf("palindrom"); } else { printf("nu este palindrom"); } return 0; }
Uite si programul meu facut in C++. Sper ca l-am facut bine. Daca este nevoie sa comentez codul sa imi spuneti.
Se para ca ai securizat blogul impotriva XSS-ului si nu imi apare nimic ce este pus intre .
Am editat ce ai scris.Mai aveai cateva mici erori,acum merge ok 😉
Cand vrei sa ai semnele : <> foloseste < >
Ok, am sa folosesc. Insa, la cat mai multe probleme, tot asa de nivel: foarte usor si incet, incet sa urci stacheta.
Btw, unde erau erorile ? Adica, eu cand am compilat nu am avut nicio problema.
Eu am o varianta mai scutra, dar bazata pe acelasi principiu (a primului cod postat). Intreabare: de ce nu pot pune cod in comentarii, ia ca spam ?
Apropo, as putea pune bucatica mea de implementare? 😀
Nu e neaparat sa cititi un numar, se poate citi direct vectorul punand conditie la citire sa se ia cate o cifra in parte. Nici nu ai nevoie sa stii cate numere sunt. Astfel vei putea verifica si pentru numere extrem de mari!
Probabil te refereai la faptul ca nu ai nevoie sa stii numarul de cifre. 🙂
sunt la o clasa de intensiv si nu prea ma descurc…profa mea e cam rea , iar eu nu am facut deloc info in gimnaziu.am o problm ca tema ptr vineri tot cu un palindrom…lucrez deasemenea in C++ intr-un program numit codeblocks.. si am o intrebare….dak problm imi spune k este un sir de n nr naturale nu trebuie sa folosesc un for? chestia e k imi da eroare in codebloks si nush dc ❓ 😥 ma poate ajuta cineva?
problema e : se citeste un sir de n numere naturale.Sa se afiseze cele ce sunt palindroame…
multumesc anticipat
Problema trebuie sa o privesti asa:
1 – fa un program/functie care verifica daca un singur numar e palindrom – partea importanta
2 – for e ok pentru ca stii numarul de numere (n)
ai putea sa postezi o parte de cod poate te putem ajuta, sa-ti spunem unde gresesti, ca de facut problema nu cred ca vrea nimeni sa-ti dea mura-n gura, in cel mai bun caz iti putem da un pseudo cod dupa care sa te ghidezi
3 – pentru punctul 1 ai rezolvarea de la micul programator 🙂
Spor
#include
using namespace std;
int main (void)
{
int n ,i, inv , c , aux;
aux=n;
inv=0;
for (i=1;i<=n;i++)
{
cout<>n;
while (n!=0)
{
c=n%10;
inv=inv*10+c;
n=n/10;
}
if (inv==aux)
cout<<" nr sunt "<<inv;
else
cout<<" nr nu este un palindrom "<<inv;
}
}
asta e programul pe care l-am facut , dar nu stiu dak este corect insa….ptr exact cum ai spus tu imi afiseaza doar ptr un nr. (n)…nu ne-a predat despre vector insa si.. sau push back….apropo s-a introdus o mica eroare cout<>n; era inainte de a initializa n cu aux ❓ 😐
@Ruxy
Problema trebuie rezolvata in felul urmator (Mihai a avut dreptate, nu dam mura in gura).
1. Citesti n (numarul de numere ce trebuie verificate).
2. pentru i=1, i<=n, i++) 3. citesti al i-lea numar 4. il inversezi 5. verifici daca inversul este egal cu numarul initial (asta inseamna ca e palindrom) 3,4 si 5 se intampla in for-ul de la pasul 2. Multa bafta! 🙂
andrei a explicat bine problema!
@Ruxy ai pierdut pe drum … partea cu a citi al i-lea numar
sa ne spui ce ti-a iesit
NU PE N = nr de numere din sir trebuie sa-l verifici ci pe fiecare numar din sir in parte
salut….am si eu problema cu vectori care suna asa: se da un vector de tip intreg se cere sa se determine cel mai mare nr care se poate forma cu cea mai mica cifra a fiecarui component….si nu stiu cum s-o fac.. m-am gandit sa folosesc (logic) un for si max dar cum sa fac un interschimb? …. nu am nici o idee cum sa fac si profa mi -ar pune 2. Macar sa schitez o idee …
ms anticipat:*
Se poate face destul de simplu. Pentru a pastra ordine pe blog te invitam aici sa te inscrii si sa postezi problema. In cel mai scurt timp posibil cineva iti va raspunde la ea.
@Merry:
1. Ai 2 vectori:
a) vectorul cu numerele tale
b) vectorul cu cifra minima din fiecare numar – poti inlocui cu un string daca iti este mai usor lucrul cu siruri.
2. Pentru a obtine cifra minima dintr-un numar:
min = numar % 10;
cat timp numar !=0 executa
cifra = numar % 10;
daca cifra < min atunci
min = cifra;
sfarsit daca;
numar = numar / 10;
sfarsit executa;
si in vector_cifre pe pozitia corespunzatoare numarului pui valoare din min; //pentru lizibilitate si nu numai as recomanda sa iti creezi o functie separata.
3. pentru a obtine in final numarul pur si simplu faci o sortare pe vectorul de cifre
/*
Iti spuneam sa folosesti un sir de caractere: in caz ca ai nevoie de o conversie, oricum va merge doar pentru numere cu un numar fix de cifre, daca vei avea nevoie pentru un numar cu numar foarte mare de cifre
*/
Poti ignora ultimul comentariu ca nu este prea relevant 😀
codul acesta mai eficient:
#include
using namespace std;
bool estePalindrom(int nr)
{
int m=0;
while(m>nr;
if(estePalindrom(nr))
cout<<"DA";
else
cout<<"NU";
}