Titlul: Palindrom in baza 16 Scris de: Dragu Mircea din Februarie 13, 2012, 22:46:48 Salut.
Am nevoie de putin ajutor la urmatoarele doua probleme. 1. Sa se verifice daca un numar n este palindrom in baza 16. Numarul este introdus in baza 10. Ex : numarul introdus 111281 in interiorul buclei while obtin : 1B2B1 dupa inversarea tabloului : 1B2B1, practic echivalentul in haxazecimal al numarului 2525. dupa aceea ar trebui sa compar elementele celor doua tablouri : tab == tab[k]. am incercat si cealalta varianta a =a*10 + tab b =b*10 + tab[k] dupa care compar a==b tot nu functioneaza. #include<stdio.h> #define p 30 int main() { int n, n10, i, j, k, tab[p], A; printf("\n Introduceti n10 = "); scanf("%d", &n10); printf("\n"); i=0; n=n10; while(n10) { tab = n10%16; n10/=16; i++; } j=i-1; printf(" Numarul %d in haxazecimal : ", n); for(k=j; k>=0; k--) printf(" %X", tab[k]); printf("\n"); } 2. Sa se afiseze primele n numere care au suma cifrelor mai mica sau egala cu m. Ex : pentru n=20 si m=4 se vor afisa : 1, 2, 3, 4, 10, 11, 12, 13, 20, 21. #include<stdio.h> int main() { int m, n, a, b, c, s, i; printf("\n Dati n = "); scanf("%d", &n); printf("\n Dati m = "); scanf("%d", &m); printf("\n"); i=1; for(; i<=n; ) { a=c; c+=1; s=0; while(a) { b=a%10; s+=b; a/=10; } if(s<=m) { printf(" %d", s); i++; } c++; } printf("\n"); } Titlul: Răspuns: Palindrom in baza 16 Scris de: Arnold Beiland din August 24, 2012, 01:04:28 Idee pentru problema 1: nu transform numarul in baza 16, ci folosesc operatii pe biti + proprietatea ca o cifra in baza 16 reprezinta 4 cifre in baza 2.
Cod: //...presupun ca n este de tip int (pe 32 biti). |