Jump to content
!_30

[C program-cod sursa] Transforma zecimal in binar pe 8 biti

Recommended Posts

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");

}

Link to comment
Share on other sites

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 = 1001111000110100

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 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 :D

Link to comment
Share on other sites

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};

Link to comment
Share on other sites

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:D
if(!__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.h

iar 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.

Link to comment
Share on other sites

"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 fel

ex : 121 , 323. si el si palindromul lui vrei sa fie prime ? :D oh nice , e acelasi numar

Si 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;

}

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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)] executa

Daca n mod i = 0 atunci j <- false

altfel j<- true

hai bafta :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...