Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

pseudokod - ispis znamenaka broja slijeva nadesno
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
Gost






PostPostano: 21:44 ned, 4. 12. 2005    Naslov: pseudokod - ispis znamenaka broja slijeva nadesno Citirajte i odgovorite

Kako se riješava zadatak:napišite program koji ispisuje znamenke učitanog prirodnog broja n s lijeva na desno ali bez korištenja nizova?
Kako se riješava zadatak:napišite program koji ispisuje znamenke učitanog prirodnog broja n s lijeva na desno ali bez korištenja nizova?


[Vrh]
ahri
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 19. 11. 2003. (23:16:07)
Postovi: (193)16
Sarma = la pohva - posuda
= 7 - 0

PostPostano: 0:56 pon, 5. 12. 2005    Naslov: Citirajte i odgovorite

rekurzivno

evo kod u Cu:
[code:1]#include <stdio.h>


void rek (int x) {
if (x<=1) printf("%d", x);
else {
rek(x/2);
printf("%d", x%2);
}
}

int main () {
int n;
scanf("%d", &n);
rek(n);
printf("\n");
return 0;
}

[/code:1]
rekurzivno

evo kod u Cu:
Kod:
#include <stdio.h>


void rek (int x) {
   if (x<=1) printf("%d", x);
   else {
      rek(x/2);
      printf("%d", x%2);
   }
}

int main () {
   int n;
   scanf("%d", &n);
   rek(n);
   printf("\n");
   return 0;
}




_________________
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
ahri
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 19. 11. 2003. (23:16:07)
Postovi: (193)16
Sarma = la pohva - posuda
= 7 - 0

PostPostano: 2:00 pon, 5. 12. 2005    Naslov: Citirajte i odgovorite

moze se i for petljom po bitovima broja...
[code:1]
#include <stdio.h>

int main() {

int i,n;
scanf("%d", &n);

for (i=31;(i>=1) && (n & (1<<i))==0;i--);


for (;i>=0;i--) {
printf("%d", ((n & (1<<i))>0)?1:0);
}
printf("\n");


return 0;
}
[/code:1]

Razjasnjenje:
Broj u memoriji racunala ima 32 bita (31..0).
1) U prvoj for petlji idemo od najviseg bita prema najnizem i trazimo prvog koji je razlicit od nule (tako da ne ispisujemo suvisne nule). Dodatan je uvjet da (i>=1) za slucaj da je broj jednak nuli, pa nece imati niti jedan bit jednak jedinici (i petlja bi otisla u minus!).

2) U drugoj petlji idemo od otkrivenog najviseg bita koji sadrzi jedinicu do zadnjeg te ispisujemo 1 ili 0, ovisno o tome je li taj bit 1 ili 0.

U oba slucaja provjeravamo je li neki bit u broju jedan ili nula na sljedeci nacin:
uzmemo taj broj (n) i ANDamo ga logicki sa brojem 2^i (u Cu se to napise 1<<i).
ako je ta operacija dobila neki broj razlicit od nule, taj broj ima bit na mjestu "i" "u jedinici"
npr, neka je nas broj 10
binarno je on 1010.
trazimo treci bit (imamo bitove 3..0 u nasem zapisu).
dakle, 1010 & 1000 = 1000 sto je razlicito od 0, dakle, nas broj na trecem bitu ima jedinicu.
Andanje sa 1000 je ponistilo sve znamenke osim tamo gdje se nalazi jedinica.

nisam bio bas najjasniji, ali radije me pitajte sto da objasnim :)
moze se i for petljom po bitovima broja...
Kod:

#include <stdio.h>

int main() {

   int i,n;
   scanf("%d", &n);

   for (i=31;(i>=1) && (n & (1<<i))==0;i--);


   for (;i>=0;i--) {
      printf("%d", ((n & (1<<i))>0)?1:0);
   }
   printf("\n");


   return 0;
}


Razjasnjenje:
Broj u memoriji racunala ima 32 bita (31..0).
1) U prvoj for petlji idemo od najviseg bita prema najnizem i trazimo prvog koji je razlicit od nule (tako da ne ispisujemo suvisne nule). Dodatan je uvjet da (i>=1) za slucaj da je broj jednak nuli, pa nece imati niti jedan bit jednak jedinici (i petlja bi otisla u minus!).

2) U drugoj petlji idemo od otkrivenog najviseg bita koji sadrzi jedinicu do zadnjeg te ispisujemo 1 ili 0, ovisno o tome je li taj bit 1 ili 0.

U oba slucaja provjeravamo je li neki bit u broju jedan ili nula na sljedeci nacin:
uzmemo taj broj (n) i ANDamo ga logicki sa brojem 2^i (u Cu se to napise 1<<i).
ako je ta operacija dobila neki broj razlicit od nule, taj broj ima bit na mjestu "i" "u jedinici"
npr, neka je nas broj 10
binarno je on 1010.
trazimo treci bit (imamo bitove 3..0 u nasem zapisu).
dakle, 1010 & 1000 = 1000 sto je razlicito od 0, dakle, nas broj na trecem bitu ima jedinicu.
Andanje sa 1000 je ponistilo sve znamenke osim tamo gdje se nalazi jedinica.

nisam bio bas najjasniji, ali radije me pitajte sto da objasnim :)



_________________
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 2:03 pon, 5. 12. 2005    Naslov: Citirajte i odgovorite

Ahri, [url=http://degiorgi.math.hr/forum/viewtopic.php?p=22054#22054]ljudi ne znaju rekurziju[/url]. :shock: :(

Goste, radili smo kako se znamenke ispisu "u rikverc". :-s Umjesto ispisa, ti ih mozes sloziti u novi broj, koji ce imati znamenke starog, ali od zadnje do prve. :) Nakon toga, [b]taj[/b] broj ispises "u rikverc" i to je to! :D

Drugi nacin je da se poigras s duljinom originalnog broja i odgovarajucim potencijama broja 10. 8)
Ahri, ljudi ne znaju rekurziju. Shocked Sad

Goste, radili smo kako se znamenke ispisu "u rikverc". Eh? Umjesto ispisa, ti ih mozes sloziti u novi broj, koji ce imati znamenke starog, ali od zadnje do prve. Smile Nakon toga, taj broj ispises "u rikverc" i to je to! Very Happy

Drugi nacin je da se poigras s duljinom originalnog broja i odgovarajucim potencijama broja 10. Cool



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
ahri
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 19. 11. 2003. (23:16:07)
Postovi: (193)16
Sarma = la pohva - posuda
= 7 - 0

PostPostano: 2:33 pon, 5. 12. 2005    Naslov: Citirajte i odgovorite

ja blento ispisivao znamenke broja u binarnom obliku. :))
ja blento ispisivao znamenke broja u binarnom obliku. :))



_________________
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 2:35 pon, 5. 12. 2005    Naslov: Citirajte i odgovorite

[quote="ahri"]ja blento ispisivao znamenke broja u binarnom obliku. :))[/quote]

To je sitnica koju kolega sigurno zna samostalno ispraviti. :)
ahri (napisa):
ja blento ispisivao znamenke broja u binarnom obliku. Smile)


To je sitnica koju kolega sigurno zna samostalno ispraviti. Smile



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan