Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

bin broj u promenljivoj

[es] :: C/C++ programiranje :: bin broj u promenljivoj

[ Pregleda: 5120 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milan Aksic

Član broj: 412
Poruke: 1053
*.ptt.yu



Profil

icon bin broj u promenljivoj26.06.2001. u 00:30 - pre 250 meseci
Napisao sam kod, gde trazi da se unese broj i on prevede u binarni i smesti ga u niz. Ali sam ja hteo da taj binarni broj ne bude u nizu vec u promenljivoj, u ovom slucaju test, koja je tipa long. Ali nisam ni video da li ovakva ideja, kao sto sam ja napisao, uopste funkcionise, jer mi se na kraju uopste ne prikazuje vrednost test promenljive.
Evo koda:

#include <stdio.h>

void ConvertToBinary(int ValueToConvert);

main()
{
int ValueToConvert;
printf("Unesite integer vrednost: ");
scanf("%d", &ValueToConvert);
ConvertToBinary(ValueToConvert);

return (0);
}

void ConvertToBinary(int ValueToConvert)
{
int offset = 0;
int HoldBitConversion[50];
long test = 0;
while (ValueToConvert != 0)
{
HoldBitConversion[offset] = (ValueToConvert % 2);
ValueToConvert /= 2;
offset++;
}
offset--;
for (; offset >= 0; offset--)
{
printf("%1d", HoldBitConversion[offset]);
if (HoldBitConversion[offset] = '0')
{
if (test == 0)
test += 0;
else
test *=10;
}
else
test +=1;
}
printf("nnOvo je broj: %l", test); /* Evo ovde bi trebalo da prikaze vrednost promenljive test */
printf("n");
}
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.verat.net



+1 Profil

icon Re: bin broj u promenljivoj26.06.2001. u 12:43 - pre 250 meseci
Kod printf:
Code:

printf("Ovo je broj: %l", test);


treba da izglerda ovako :
Code:

printf("Ovo je broj: %ld", test);


i ovo
Code:

if (HoldBitConversion[offset] = '0') 
                          { 
                          if (test == 0) 
[b]                          test += 0; [/b]
                          else 
                          test *=10; 
                          } 


Mislim ovo test +=0; stvarno nema smisla ;o)
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.verat.net



+1 Profil

icon Re: bin broj u promenljivoj26.06.2001. u 12:45 - pre 250 meseci
E da koristi:

[ code ]
[ / code] da uokviris code jer je mnogo citljivije

[Ovu poruku je menjao predator dana 06-26-2001 u 11:45 AM GMT]
 
Odgovor na temu

Milan Aksic

Član broj: 412
Poruke: 1053
*.ptt.yu



Profil

icon Re: bin broj u promenljivoj26.06.2001. u 16:37 - pre 250 meseci
E hvala predator, na onoj ispravci. Ali ono sto mi stvarno predstalja problem je ideja za ovaj program. Naime on bez problema pretvara uneti broj u binarni broj, i taj binarni broj cuva u niz, u ovom slucaju se taj niz zove HoldBitConversion. E sada u knjizi iz koje radim, C/C++ vodic za programere, se postavlja pitanje, za ovaj program, kako moze da se promeni ovaj program da se krajnji rezultat, binarni broj, cuva, NE u nizu vec u promenljivoj, u ovom slucaju se ta promenljiva tipa long zove test. Znaci kako da se taj dobijeni binarni broj ne cuva u nizu vec u promenljivoj. Saljem prepravljeni kod, ono gore, i kao sto ces videti ja sam nesto pokusavao, mozda sa bio na dobrom putu ali sam se na kraju potpuno zapetljao. E koda pa mi reci da li imas ideju kako da resim ovaj problem. E da i da napomenem, kod je, sto se sintakse i zvodjenja tice OK, znaci izvrsava se bez problema, ali ne dobijam tacan rezultat, znaci da je do ideje ili algoritma, npr. Unesem broj 54, dobijem tacan binarni broj 110110 koji se cuva u nizu, a onaj binarni broj koji se cuva u promenljivoj test je 111111, znaci netacno.


#include <stdio.h>

void ConvertToBinary(int ValueToConvert);

main()
{
int ValueToConvert;
printf("Unesite integer vrednost: ");
scanf("%d", &ValueToConvert);
ConvertToBinary(ValueToConvert);

return (0);
}

void ConvertToBinary(int ValueToConvert)
{
int offset = 0;
int HoldBitConversion[50];
long test = 0;
while (ValueToConvert != 0)
{
HoldBitConversion[offset] = (ValueToConvert % 2);
ValueToConvert /= 2;
offset++;
}
offset--;
for (; offset >= 0; offset--)
{
printf("%1d", HoldBitConversion[offset]);

/* ODSADA pocinje kod koji mi pravi probleme */
if (HoldBitConversion[offset] == '0')
{
if ((HoldBitConversion[offset] == '0') && (test == 0))
;
else if ((HoldBitConversion[offset] == '0') && (test != 0))
test *= 10;
}
else if ((HoldBitConversion[offset] != '0') && (test % 2) == 0)
{
if (test == 0)
test += 1;
else
{
test *= 10;
test += 1;
}
}
else if ((HoldBitConversion[offset] != '0') && (test % 2) != 0)
{
if (test == 0)
test += 1;
else
{
test *= 10;
test += 1;
}
}
}
printf("nnOvo je broj: %ld", test);
printf("n");
}
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.verat.net



+1 Profil

icon Re: bin broj u promenljivoj26.06.2001. u 19:10 - pre 250 meseci
Imam jedan veoma los kod na tu temu.To sam radio dok sam jos ucio osnove C++-a tako da nemoj neko da komentarise kod jel i sam znam da je vise nego ocajan.
http://www.beotel.yu/~predator/binarni.cpp <decimalno u binarno>
http://www.beotel.yu/~predator/decimalni.cpp <binarno u decimalno>
 
Odgovor na temu

Milan Aksic

Član broj: 412
Poruke: 1053
*.ptt.yu



Profil

icon Re: bin broj u promenljivoj26.06.2001. u 20:47 - pre 250 meseci
Citat:
predator je napisao:
Imam jedan veoma los kod na tu temu.To sam radio dok sam jos ucio osnove C++-a tako da nemoj neko da komentarise kod jel i sam znam da je vise nego ocajan.
http://www.beotel.yu/~predator/binarni.cpp <decimalno u binarno>
http://www.beotel.yu/~predator/decimalni.cpp <binarno u decimalno>


E ostavio si pogresan link, kakav je ovo los kod koji mi se ispisuje po ekranu, salim se :) :) Rekao si da je kod los, ma nije bitno da li je los ili nije, bar ne u mom slucaju. Ali bih te drugo nesto zamolio, ako imas vremena da pogledas ovlas, ovaj moj kod koji sam gore ostavio, i da mi eventualno ako otkrijes gresku, kazes gde gresim. Jer vidis ovaj moj kod je mnogo manji i radi, on pretvara iz decimalnog u binarni, ali to cuva u nizu, znaci niz[0] = 1, niz[1] = 0 , niz[2] = 1 itd. Ali me interesuje kako da dobijeni broj cuva u promenljivoj a ne u nizu. E sada ako nemas vremena da pogledas moj kod i eventualno mi kazes gde gresim, da li onda mozes da mi das neki komentar za tvoj kod koji sam skinuo, npr. zasto da li je num>=128, i od 64 i od 32 ..., onda zasto u funkcijama *binarni=10000000+*binarni , pa onda *binarni=(*binarni+1000000); *binarni=*binarni+100000; itd. Eto za te stvari u tvom kodu mi treba komentar, mada ipak ako budes imao vremena ostavi komentar i za moj kod, cisto da vidim gde gresim.
Pozdrav.


[Ovu poruku je menjao passanger dana 06-26-2001 u 08:48 PM GMT]
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.rcub.bg.ac.yu

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: bin broj u promenljivoj26.06.2001. u 23:54 - pre 250 meseci
Probaj sa ovim kodom.

Code:

unsigned long IntToBin(int vrednost) {
    unsigned long bin=0,mnozi=1;
    while (vrednost > 0) {
        bin += (vrednost % 2)*mnozi;
        vrednost /= 2;
        mnozi *= 10;
    }
    return bin;
}



Na kraju samo ispišes pomoću:

Code:

printf("broj: %ld
", IntToBin(ValueToConvert));


iz main() funkcije.

Toliko.
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

Milan Aksic

Član broj: 412
Poruke: 1053
*.ptt.yu



Profil

icon Re: bin broj u promenljivoj27.06.2001. u 00:39 - pre 250 meseci
Towk hvala PUNO! Samo ne znam da li treba da mi bude drago sto sam stekao novo iskustvo ili da se osecam glupo sto se ja toga nisam setio. Sve u svemu thanks a lot. Kod radi savrseno kao sto verovatno i sam video, samo sam hteo da te pitam u vezi jedne stvari. Ako je treceg obrtaja npr. U while petlji bin = 111, i (vrednost % 2) = 0, znaci treba da se postavi 0 u bin promenljivoj da bi bin iznosila 1110, e sada ako je (vrednost % 2) = 0, i onda se mnozi sa promenljivom mnozi koja iznosi mnozi 1000, onda je bin(111) += 0 * 1000, onda je bin i dalje 111 jer 111 = 111 + 0 je isto 111. Valjda sam jasno objasnio, mislim kod radi savrseno samo mi nije jasno na koju foru je ovo gore.
Usput ako mozes pogledaj ovu brlju od mog koda, i reci mi da li sam bar bio na dobrom putu.
Pozdrav.
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.rcub.bg.ac.yu

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: bin broj u promenljivoj01.07.2001. u 15:19 - pre 250 meseci
Citat:
passanger je napisao:
Towk hvala PUNO! Samo ne znam da li treba da mi bude drago sto sam stekao novo iskustvo ili da se osecam glupo sto se ja toga nisam setio. Sve u svemu thanks a lot. Kod radi savrseno kao sto verovatno i sam video, samo sam hteo da te pitam u vezi jedne stvari. Ako je treceg obrtaja npr. U while petlji bin = 111, i (vrednost % 2) = 0, znaci treba da se postavi 0 u bin promenljivoj da bi bin iznosila 1110, e sada ako je (vrednost % 2) = 0, i onda se mnozi sa promenljivom mnozi koja iznosi mnozi 1000, onda je bin(111) += 0 * 1000, onda je bin i dalje 111 jer 111 = 111 + 0 je isto 111. Valjda sam jasno objasnio, mislim kod radi savrseno samo mi nije jasno na koju foru je ovo gore.


Stvar je u sledećem: pomoću (vrednost % 2) dobijam poslednju cifru preostalog broja. U mnozi se čuva trenutno mesto na kojem treba da se nađe ta cifra (znači prvo cifra jedinica, pa desetica, itd.).

Do pomenute situacije dolazi kada se prvo uzima najviša cifra (a ne poslednja). U tvom primeru, radi se o broju 0111, a ne 1110 kao što si ti naveo. Razlika je u tome što bi se sa brojem 1110 prvo dodalo 0 (vrednost %2) * 1 (mnozi), zatim 1 * 10, pa 1 * 100, i tek onda 1 * 1000, a ne obrnuto (tj. 1 * 1 + 1 * 10 + 1 * 100 + 0 * 1000).

Nadam se da sam pojasnio.

Toliko.




Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.rcub.bg.ac.yu

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: bin broj u promenljivoj01.07.2001. u 15:37 - pre 250 meseci
I pogledao sam tvoj kod, i primetio sam samo jedno. U HoldBitConversion[offset] se ne nalaze znakovi '0' i '1', ve brojne vrednosti 0 i 1. Tako, uklanjanjem navodnika iz tvojih if konstrukcija se dobija taan rezultat.

Naravno, umesto tih desetak redova if i else konstrukcija, moe se to uraditi i u dve linije:

Code:

test *= 10;
test += HoldBitConversion[offset];


ili u jednoj:

Code:

test = test * 10 + HoldBitConversion[offset];


Toliko.
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

[es] :: C/C++ programiranje :: bin broj u promenljivoj

[ Pregleda: 5120 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.