!_30 Posted September 5, 2006 Report Posted September 5, 2006 Aveti codul sursa aici , al unui program care transforma un numar din aria 0-255 , intr-un octet ( binar pe 8 biti ) :Ex : 1 = 00000001 #include <stdio.h>int f(int p){    int y,s=1;    for(y=1;y<=p;++y)    {s=s*2;}    if(p=0)        { return(1);}    else        {return(s);}}int main(){int nr;    printf("nAfiseaza valoarea binara pe 8 biti a unui numarnn") ;    printf("Dati numarul : n");    scanf("%d",&nr);    printf("Numarul binar pe 8 biti este : ");    int i;int a[7];    for(i=0;i<8;++i)    {    if ((nr-f(7-i))<0)        {            a=0;printf("%d",0);        }    else        {            a=1;printf("%d",1);            nr=nr-f(7-i);}        }printf("nn");} Quote
!_30 Posted September 6, 2006 Author Report Posted September 6, 2006 L-am facut sa tranforme un numar in format zecimal intr-un binar pe 16 biti ( 2 byte's = 1 WORD ).Practic tranforma un numar zecimal (0-65535 , aproximativ ) , intr-un WORD ( binar ).EXEMPLU : 40500 = 1001111000110100int f(int p){    int y,s=1;    for(y=1;y<=p;++y)    {s=s*2;}    if(p=0)        { return(1);}    else        {return(s);}}int main(){int nr;    printf("nAfiseaza valoarea binara pe 16 biti a unui numarnn") ;    printf("Dati numarul : n");    scanf("%d",&nr);    printf("Numarul binar pe 16 biti este : ");    int i;int a[15];    for(i=0;i<16;++i)    {    if ((nr-f(15-i))<0)        {            a=0;printf("%d",0);        }    else        {            a=1;printf("%d",1);            nr=nr-f(15-i);}        }printf("nn");}Va astept pe voi sa-mi faceti un program care tranforma zecimal intr 0-128 intr-un NIBBLE , e simplu Quote
TE4L Posted October 15, 2006 Report Posted October 15, 2006 unsigned long binary(unsigned long __nr,unsigned long __s,unsigned long __p){if(!__nr) return __s;else return binary(__nr/2,__s+__nr%2*pow(10,__p),__p+1);}aplerare binary(numar,0,0); Quote
juice Posted October 16, 2006 Report Posted October 16, 2006 Bravo TE4L , decat sa tot codezi sa faci tu algoritmul , mai bine o apelare a functiei care exista:) Quote
juice Posted October 16, 2006 Report Posted October 16, 2006 cam ceva in genu ar suna#include <stdio.h>unsigned long binary(unsigned long __nr,unsigned long __s,unsigned long __p){if(!__nr) return __s;else return binary(__nr/2,__s+__nr%2*pow(10,__p),__p+1);}int main() {int __nr;printf("Dati numarul: ");scanf("%d",&__nr);printf("Transformat este: ");binary(__nr,0,0);}si ar trebui implementata functia pow(putere) double putere (float a, int n) { {O functie iterativa pentru calculul lui a la puterea n} float t;int i; BEGIN t:=1; for (int i;i<n;i++) t=t*a; return t;}Sau varianta pascal: FUNCTION putere (a:real; n:integer):real; {O functie iterativa pentru calculul lui a la puterea n} VAR t:real; i:integer; BEGIN t:=1; FOR i:=1 TO n DO t:=t*a; putere:=t END {putere}; Quote
TE4L Posted October 16, 2006 Report Posted October 16, 2006 ba omule. eu am facut acea functie recursiva. am notat asa variabilele ca sa le vad. si nu cunosc sa exite o functie care sa faca asa in librariile standard de la dev c++ sau bcb32.#include <iostream.h> using namepsace std;unsigned long numar;unsigned long pow(unsigned long __nr,unsigned long __pow,unsigned long __pwr){if(__pwr>__pow) return __nr;else return pow(__nr*__nr,__pwd,pwr+1);}unsigned long binary(unsigned long __nr,unsigned long __s,unsigned long __p){//asa vad eu functia pow recursiv. daca vrei iterativ da un pm:Dif(!__nr) return __s;else return binary(__nr/2,__s+__nr%2*pow(10,__p,0),__p+1);}int main(){cout<<"Numarul De Transformat Este :: ";cin>>numar;cout<<"Numarul In Baza 2 este :: "<<binary(numar,0,0);return 1;}mai ai ceva de comentat? iar doar pow care am folositu in celalalt post e o prezenta in functia math.hiar asa ca fapt divers. de ce sa ma chinui sa implementez functii deja predefinite cand pot sa fac chestii mult mai complexe?iar asa ca quest pentru tine. fa-mi un program care sa vada daca un numar si palindromul lui sunt numere prime. Quote
juice Posted October 16, 2006 Report Posted October 16, 2006 "iar asa ca quest pentru tine. fa-mi un program care sa vada daca un numar si palindromul lui sunt numere prime."pai ..un numar e palindrom daca se citeste la fel adica si inversat e la felex : 121 , 323. si el si palindromul lui vrei sa fie prime ? oh nice , e acelasi numarSi daca tot vrei o implementare scurta a functiei de verificare a unui nr , daca e palindrom :-------void main() {int n,nr,inv; printf("Introdu n=);scanf("%d",&n);nr=n; inv=0;while(n){inv=inv*10+n%10; n=n/10;}if(nr==inv)printf("Nr e palindrom");else cout<<"Numarul nu este palindrom";getch();}------si functia de nr prim o apelezi tu unde vrei in program sa verifici doar pt nr (nr=inv ,adica e palindrom)if (prim(nr)) printf("e prim"); else /*canci */-----boolean prim(int n){for(int i = 0; i < sqrt(n); i++) if(n%i == 0) return false;return true;} Quote
TE4L Posted October 16, 2006 Report Posted October 16, 2006 mda....de ce nu faci tu cea mai optima functie prim. adica daca ai avea 4294967295 o sa stai mult si bine. de ce sa nu reduci timpul la jumatate. si apropo. 1 nu e nr prim.bool prim(unsigned long __nr){if(__nr==1) return false;else { unsigned long d=2; while(d<=sqrt(__nr)) if(!__nr%d) return false; else if(d==2) d=3; else d+=2; return true; }}sau macar mai finut asa.bool prim(unsigned long __nr,unsigned long d){if(__nr==1) return false;else if(d<=sqrt(__nr)) if(!__nr%d) return false; else if(d==2) return prim(__nr,3); else return prim(__nr,d+2);} la functia ta trebuie valorile sa mearga pana la sqrt inclusiv. exemplu 9. singurul divizor e 3=sqrt(9);mda...si ca sa lasam astea deoparte....ce ar fi sa facem si noi ceva mai productiv.? idei careva? Quote
juice Posted October 17, 2006 Report Posted October 17, 2006 Da' , intr-adevar am gresit eu acolo la algoritmul prim ca am pornit de la 0 cu iteratia si tu te-ai prea complicat Ne-am prea bagat in matematica asa fara rost ratzionand totul intr-un simplu pseudocod ar fi de-ajuns un ciclu pt verificarea unui numr daca e prim :pentru i=2, [sqrt(n)] executaDaca n mod i = 0 atunci j <- false altfel j<- truehai bafta Quote