[ system0 @ 21.03.2009. 20:09 ] @
Imam ovaj zadatak i jednostavnom nekontam zasto nevalja ,ako bi neko mogao skontat.

Napisati C program koji s tipkovnice učitava realni broj. Potrebno je izračunati i na ekran ispisati binarni zapis tog realnog broja u 32-bitnom registru.
Code:

#include<stdio.h>

int main(){
char binbroj[32];
int predznak = 1;
int pot=0;
float realniBroj,frac;
int E;

printf("Unesi realni broj");
scanf("%f",&realniBroj);
if (realniBroj < 0)
{
predznak = -1;
frac = realniBroj * predznak;
binbroj[0] ='1';
}
if (frac < 1 )
{
while (frac < 1)
{
frac *= 2.0;
pot--;
}
}
else {
while (frac > 2)
{
frac /= 2.0;
pot++;
}
}
E = pot * 127 ;
for (int i=0;i>=1;i--)
{

if (E % 2 == 0)
binbroj[i] = '0';
else
binbroj[i] ='1';
E /= 2;
}
frac -= 1;
for (i=9;i<=31;i++){
frac *= 2.0;
if (frac >=1) {
binbroj[i] = '1';
frac -= 1.0;

} else binbroj[i] ='0';
}


printf("realni binarni broj %f u registru ima binarni zapis \n",realniBroj);

for(i=0;i<32;i++)
{
if(i==1) printf (" ");
if(i==9) printf (" ");
printf("%c",binbroj[i]);
}
}

jos jedna stvar , complier mi javlja warning :warning C4508: 'main' : function should return a value; 'void' return type assumed, ne znam zasto.

Ako je moguce da me neki postavi kometare kod if statementa jel nekontam kako to radi . Hvala

[Ovu poruku je menjao X Files dana 21.03.2009. u 22:01 GMT+1]
[ X Files @ 21.03.2009. 22:04 ] @
Nemam sad vremena da detaljnije pregledam kod, ali obrati paznju na liniju:
for (int i=0;i>=1;i--)

Telo petlje se ne izvrsava.
[ system0 @ 22.03.2009. 11:40 ] @
Moze li neko pomoc da proradi ?
[ Eurora3D Team @ 24.03.2009. 22:26 ] @
Da bi mogao da iskompajlujes stavi gore pri vrhu funkcije int i; i u liniji for (int i=0;i>=1;i--) izbrisi int da ostane samo for (i=0;i>=1;i--)
i na kraju funkcije , pre } stavi return 0; (to je ovaj warning :warning C4508: 'main' : function should return a value)
[ system0 @ 26.03.2009. 19:51 ] @
Napravio sam uz pomoću zadanog linka slicni program ,ali zato nekontam par stvari u programu
Radi savrseno , Hvala na link
#include <stdio.h>
#include <math.h>

void main (){
float vrijednost=0,privremeno=0,decdesno=0,zapis;
int oznaka=0,i=0,n=0,ostatak,declijevo=0;
char temp[32],binlijevo[32],bindesno[32];

printf("Unesi realan broj: ");
scanf("%f",&vrijednost);

if (vrijednost < 0)
oznaka = 1 ;
vrijednost= privremeno = fabs(vrijednost);
declijevo=(int)privremeno;
decdesno=vrijednost-declijevo;

do{ // jel konta neko sto odavde i nadalje radi program
ostatak = declijevo % 2 ;

if ( ostatak == 1)
temp[i++] = '1';
else
temp[i++] = '0';
declijevo = declijevo / 2;
} while(declijevo !=0);
while(i>=0) {
binlijevo [n++] = temp[--i];
}
binlijevo[n-1]=0; // do ovdje
printf("\nBinarna vrijednost realnog broja %s \n",binlijevo);
printf("\nPritisniti bilo koju tipku\n");

}