C zadatak vrlo težak

poruka: 8
|
čitano: 2.158
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
neaktivan
offline
C zadatak vrlo težak

evo ako neko mozepomoc kod ovog zadatka stvarno mi nije jasno sta ja tu trbam napravit thx ;)

 

Napisati program koji ucitava pozitivni cijeli broj d u dekadskom zapisu te bazu b. Brojeve je potrebno ucitati u jednoj scanf naredbi %d %d. Ako je broj d izvan intervala [b , b*b -1 ] ili ako je baza b izvan intervala [2,16] treba ispisati "Izvan intervala". Ako je broj unutar intervala [b , b*b -1 ] te baza unutar intervala [2,16] program treba ucitani broj d pretvoriti u brojevni sustav s bazom b i ispisati ga. Znamenke broja u brojevnom sustavu s bazom b potrebno je ispistai u formatu %c%c (bez razmaka). Znamenke A B C D E F treba ispisivat iskljucivo kao velika slova

Neodlučan

Xbox 360 - Jump in
Moj PC  
0 1 hvala 0
17 godina
neaktivan
offline
C zadatak vrlo težak

Nije tezak uopce. ;)

 

Reci mi jesi poceo nesto raditi i jel imas vec neki kod, jesi li probao sam nesto isprogramirati, pa da vidimo gdje zapinjes?

http://irale.deviantart.com
 
0 0 hvala 0
17 godina
neaktivan
offline
C zadatak vrlo težak

ma poceo sam radit al ne pada mi na pamet kako da %c%c na kraju dobijem , napisem za binarnu bazu ;

int x, b,d;
x = 10 ;
scanf("%d %d", y, z);
if ( b == 2 && d == 2 )

printf ("%d", x) ;

..

i onda tako za svaki broj sam mislio al to ne ide posto trazi %c%c na kraju i nije mi bas to jasno kako dobit..

Xbox 360 - Jump in
Moj PC  
0 1 hvala 0
17 godina
neaktivan
offline
C zadatak vrlo težak

ma poceo sam radit al ne pada mi na pamet kako da %c%c na kraju dobijem , napisem za binarnu bazu ;

int x, b,d;
x = 10 ;
scanf("%d %d", y, z);
if ( b == 2 && d == 2 )

printf ("%d", x) ;

..

i onda tako za svaki broj sam mislio al to ne ide posto trazi %c%c na kraju i nije mi bas to jasno kako dobit..

Xbox 360 - Jump in
Moj PC  
0 1 hvala 0
17 godina
neaktivan
offline
RE: C zadatak vrlo težak
Anno kaže...

ma poceo sam radit al ne pada mi na pamet kako da %c%c na kraju dobijem , napisem za binarnu bazu ;

int x, b,d;
x = 10 ;
scanf("%d %d", y, z);
if ( b == 2 && d == 2 )

printf ("%d", x) ;

..

i onda tako za svaki broj sam mislio al to ne ide posto trazi %c%c na kraju i nije mi bas to jasno kako dobit..

prije svega, ne mozes ucitati varijable koje nisi na pocetku deklarirao. (y i z)

 

onda, unos integera mora izgledati ovako:

 

scanf ("%d %d", &y, &z);

 

nadalje, ti moras ucitati DVA BROJA. jedan ti je broj koji PRETVARAS iz dekadskog u neki drugi, a drugi broj ti je TA DRUGA baza.

 

znaci ako uneses

 

2 2

 

ispis mora biti

 

10

 

 

http://irale.deviantart.com
17 godina
neaktivan
offline
C zadatak vrlo težak

da to sam samo primjer kako sam krenio al sam izbriso kad sam vidio da ne ide tako .. da ali kako kad mi dode baza 6 kako da pretvaram u bazu 6 ? i tako dalje .. to mi nije jasno .. kad ja ucitam taj broj i na pocetku stavim stavimm uvijet ako je prvi broj u tom i tom intervalu i sve je to uredu al ovo pretvaranje i to me muci ..

Xbox 360 - Jump in
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: C zadatak vrlo težak
Anno kaže...

(...) da ali kako kad mi dode baza 6 kako da pretvaram u bazu 6 ? (...)

Stvar je jednostavna - dijeli broj sa bazom sve dok ti broj ne bude manji od baze, a broj u bazi se sastoji od ostataka pri dijeljenju (od zadnjeg ostatka prema prvom).

 

Npr. za 226:

 

226 / 6 = 37 ostatak 4

37 / 6 = 6 ostatak 1

6 / 6 = 1 ostatak 0

1 / 6 = 0 ostatak 1

 

dakle, 226 u bazi 10 je 1014 u bazi 6. Provjeriti možeš pomoću Wolfram Alphe.

 

The laws of nature are constructed in such a way as to make the universe as interesting as possible. - Freeman Dyson, Imagined Worlds
Poruka je uređivana zadnji put sub 10.10.2009 23:38 (hrx).
17 godina
neaktivan
offline
C zadatak vrlo težak

Evo moje vizije rjesenja zadatka:

 

#include "stdio.h"

int main()
{
    int br_dek, baza, el=1, copy;
    bool flip = 0;

    const char poss[17]="0123456789ABCDEF"; // svi moguci znakovi od kojih se broj u bazi izmedu 2 i 16 moze sastojati
    char br_baza[2]; // polje od dva znaka u koje spremamo rjesenje

    do // ucitavanje po tvom zadanom uvjetu, no inteligentnije: ne izbacuje iz programa nakon pogresnog unosa, nego trazi ponovni unos!
    {
        if (flip) printf ("Izvan intervala! Unesi ponovo:\n"); // ubacena varijabla flip da se ovo ispisuje nakon minimalno JEDNOG pogresnog unosa
        scanf("%d %d", &br_dek, &baza);
        flip = 1;
    } while (baza<2 || baza>16 || br_dek<baza || br_dek>(baza*baza-1));
    //uvjet je bezveze, ali je ustiman da se dobije rjesenje od dva znaka, da ispis bude u obliku %c%c

    copy = br_dek; // kopija zadanog dekadskog broja, da original ostane za ljepsi ispis

    while (copy)
    {
        br_baza[el--]=poss[copy%baza]; // prouciti pretvaranje dekadskog broja u neku drugu bazu!
        copy/=baza;
    }
        printf ("Dekadski broj %d je %c%c u bazi %d\n", br_dek, br_baza[0], br_baza[1], baza); // lijepi ispis, ljepsi nego sto treba, prilagodi!

    return 0;
}

 

Nisam odgovoran za eventualnu stetu nastalu koristenjem ovog koda.

 

Ako nesto nije jasno, pitaj.

http://irale.deviantart.com
Poruka je uređivana zadnji put ned 11.10.2009 4:22 (RaLe).
 
1 0 hvala 1
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice