[ djdmx @ 08.10.2007. 20:16 ] @
Alo ekipa jel može pomoć... nisam nešto dobar u programiranju a dobio sam ovo kao obaveznu zadaću.... jel mi možete pomoći.....

Napisati program koji učitava pozitivni cijeli broj u dekadskom zapisu. Ako je broj izvan intervala [16,255], program treba ispisati "Izvan intervala". Ako je broj unutar intervala [16,255], program treba učitani broj pretvoriti u heksadekadski zapis i ispisati ga. Znamenke heksadekadskog broja potrebno je ispisati u formatu "%c%c" ( bez razmaka). Heksadekadske znamenke A, B, C, D, E i F treba ispisivati isključivo kao velika slova. Npr. za zadani broj 168, program treba ispisati A8 jer je 16810=A816.
Zabranjeno je korištenje programskih naredbi koje zaustavljaju programski tôk (npr. getch(), getche(), getchar(), system("pause"), scanf naredbe koje nisu zadane zadatkom itd.)

UNAPRIJED HVALA!!!!!


ovoliko sam riješio ali imam problem s ispisom... tj... pati me to što mora biti %c%c inače bi sve radilo....

Code:

#include "stdio.h"
int main ()
{
    int broj, o, d;
    scanf ("%i",&broj);
        if (!((broj>= 16) && (broj <= 255)))
        {
            printf ("izvan intervala");
        }
        else 
        {
            d=(broj / 16);
            o=(broj % 16);
            printf ("%c%c",d,o);
            
}
return 0;
}



[Ovu poruku je menjao djdmx dana 08.10.2007. u 22:14 GMT+1]
[ limasoft @ 09.10.2007. 00:53 ] @
Vidi, greska ti je u ispisu. d i o su ti tipa int a prikazujes ih kao char.
Moras izvrsiti konverziju int vrednosti (0-15) u slova (0-F)
Pogledaj ASCII tabelu.
[ limasoft @ 09.10.2007. 00:58 ] @


ASCII kod za slovoa A je 65 a za 0 je 48 tak oda treba da dodas sledece:

Code:

if(d>9) d=d+65;
else     d=d+48;


analogono i za promenljivu o.

[ laserjat @ 10.10.2007. 00:31 ] @
Konvertovanje u heks. se vrsi tako sto se broj deli sa 16, a ostatak stavljas u neki niz, i tako sve dok broj ne postane 0.Za to sluzi while ciklus.
A prilikom ispisa obrnuto citas taj niz i ako je cifra manja od 10 pises je normalno a ako ne onda je pretvoris u char.

Code:

#include<stdio.h>

int main () {
    int broj,ost[10],i=0;

    scanf ("%d",&broj);
    if(!(broj>=16 && broj <=255))
        printf("izvan intervala");
    else
        while(broj>0) {
            ost[i++]=broj%16;
            broj/=16;
        }
    
    for(i--;i>=0;i--)
        if(ost[i]<10)
            printf("%d",ost[i]);
        else
            printf("%c",'A'+ost[i]-10);
    return 0;
}