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

Zadatak 8.30
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
blob
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 07. 2007. (18:09:52)
Postovi: (23)16
Sarma = la pohva - posuda
10 = 10 - 0

PostPostano: 22:03 pon, 21. 1. 2008    Naslov: Zadatak 8.30 Citirajte i odgovorite

Ide ovako:
[quote]Napišite program koji učitava prirodni broj [tt]n[/tt], te pomoću zvjezdica ("[tt]*[/tt]") iscrtava krug radijusa [tt]n[/tt] znakova.[/quote]

Traži se krug, dakle dio ravnine [i]ispunjen[/i] zvjezdicama. Jel' tako? Ne treba iscrtati samo kružnicu?

Poznato je iz analitičke geometrije da će krug činiti sve točke ravnine koje su za točno ili za manje od zadanog radijusa udaljene od središta, tj mora biti zadovoljeno, za sve točke kruga,

[latex]x^2+y^2\leq r^2[/latex], i znamo da, ako je radijus [tt]n[/tt], da u jednom redu ili stupcu ispisa programa može biti najviše 2*n zvjezdica. Iz toga slijedi da se brojači u for-petljama ne mogu postaviti da broje od -n do n, jer bi se izbrojao 2n+1 elemenata (zbog nule), pa sam sve podijelio da ide od n...1 i 1...n. Valjda se to može i elegantnije izvesti.

Evo kôda:

[code:1]
#include <stdio.h>

main(){

int i, j, k, n;

scanf("%d", &n);

for(i=-n; i<=1; i++)
{
for(j=n; j>=1; j--)
{
if(i*i + j*j <= n*n) printf("*");
else printf(" ");
}
for(j=1; j<=n; j++)
{
if(i*i + j*j <= n*n) printf("*");
else printf(" ");
}

printf("\n");}

for(k=1; k<=n; k++)
{
for(j=n; j>=1; j--)
{
if(k*k + j*j <= n*n) printf("*");
else printf(" ");
}
for(j=1; j<=n; j++)
{
if(k*k + j*j <= n*n) printf("*");
else printf(" ");
}

printf("\n");}

return 0;}[/code:1]

Jedan od problema je npr. ispis: kako je razmak između zvjezdica manji od razmaka redaka, onda je taj krug stiješnjen pa više liči na elipsu nego na krug, npr. za n=17 izbaci



[code:1]
17

**********
****************
******************
********************
************************
************************
**************************
****************************
******************************
******************************
******************************
********************************
********************************
********************************
********************************
********************************
**********************************
********************************
********************************
********************************
********************************
********************************
********************************
******************************
******************************
******************************
****************************
**************************
************************
************************
********************
******************
****************
**********



[/code:1]

Probao sam umetati razmake između zvjezdica no to je samo pogoršalo stvar. Je li ovo uopće ono što se traži u zadatku?
Ide ovako:
Citat:
Napišite program koji učitava prirodni broj n, te pomoću zvjezdica ("*") iscrtava krug radijusa n znakova.


Traži se krug, dakle dio ravnine ispunjen zvjezdicama. Jel' tako? Ne treba iscrtati samo kružnicu?

Poznato je iz analitičke geometrije da će krug činiti sve točke ravnine koje su za točno ili za manje od zadanog radijusa udaljene od središta, tj mora biti zadovoljeno, za sve točke kruga,

, i znamo da, ako je radijus n, da u jednom redu ili stupcu ispisa programa može biti najviše 2*n zvjezdica. Iz toga slijedi da se brojači u for-petljama ne mogu postaviti da broje od -n do n, jer bi se izbrojao 2n+1 elemenata (zbog nule), pa sam sve podijelio da ide od n...1 i 1...n. Valjda se to može i elegantnije izvesti.

Evo kôda:

Kod:

#include <stdio.h>

main(){
       
int i, j, k, n;

scanf("%d", &n);

for(i=-n; i<=1; i++)
{
         for(j=n; j>=1; j--)
                       {
                       if(i*i + j*j <= n*n) printf("*");
                       else printf(" ");
                       }
         for(j=1; j<=n; j++)   
                       {
                       if(i*i + j*j <= n*n) printf("*");
                       else printf(" ");
                       }           
         
printf("\n");}

for(k=1; k<=n; k++)
{
         for(j=n; j>=1; j--)
                       {
                       if(k*k + j*j <= n*n) printf("*");
                       else printf(" ");
                       }
         for(j=1; j<=n; j++)   
                       {
                       if(k*k + j*j <= n*n) printf("*");
                       else printf(" ");
                       }           
         
printf("\n");}

return 0;}


Jedan od problema je npr. ispis: kako je razmak između zvjezdica manji od razmaka redaka, onda je taj krug stiješnjen pa više liči na elipsu nego na krug, npr. za n=17 izbaci



Kod:

17

            **********
         ****************
        ******************
       ********************
     ************************
     ************************
    **************************
   ****************************
  ******************************
  ******************************
  ******************************
 ********************************
 ********************************
 ********************************
 ********************************
 ********************************
**********************************
 ********************************
 ********************************
 ********************************
 ********************************
 ********************************
 ********************************
  ******************************
  ******************************
  ******************************
   ****************************
    **************************
     ************************
     ************************
       ********************
        ******************
         ****************
            **********





Probao sam umetati razmake između zvjezdica no to je samo pogoršalo stvar. Je li ovo uopće ono što se traži u zadatku?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


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

PostPostano: 22:29 pon, 21. 1. 2008    Naslov: Citirajte i odgovorite

[quote="blob"]Je li ovo uopće ono što se traži u zadatku?[/quote]

Yup. :) Nisi cak niti morao izbjegavati onu nulu; princip je bitan. ;)

A ako ti se ne svidja "elipsoidnost", promijeni font u konzoli, pa bude bolje. :gg:
blob (napisa):
Je li ovo uopće ono što se traži u zadatku?


Yup. Smile Nisi cak niti morao izbjegavati onu nulu; princip je bitan. Wink

A ako ti se ne svidja "elipsoidnost", promijeni font u konzoli, pa bude bolje. Mr Green being very Greeen indeed



_________________
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
blob
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 07. 2007. (18:09:52)
Postovi: (23)16
Sarma = la pohva - posuda
10 = 10 - 0

PostPostano: 22:41 pon, 21. 1. 2008    Naslov: Citirajte i odgovorite

[quote="vsego"][quote="blob"]Je li ovo uopće ono što se traži u zadatku?[/quote]

Yup. :) Nisi cak niti morao izbjegavati onu nulu; princip je bitan. ;)

[/quote]

U tom slučaju (da je bitan princip :D) se sve može zapisati i kraće, no ne toliko precizno (u najširem redu neće biti točno 2*n zvjezdice):

[code:1]
#include<stdio.h>

int main(void){

int i, j, n;

scanf("%d", &n);

for(i=-n; i<=n; i++)
{
for(j=-n; j<=n; j++)
{
if(i*i + j*j <= n*n) printf("*");
else printf(" ");
}


printf("\n");}

return 0;}[/code:1]

:D

A sad idem kopati po settinzima. Noli turbare circulos meos, o konzolo! Krugovi trebaju biti krugovi, a ne elipse... :shock:
vsego (napisa):
blob (napisa):
Je li ovo uopće ono što se traži u zadatku?


Yup. Smile Nisi cak niti morao izbjegavati onu nulu; princip je bitan. Wink



U tom slučaju (da je bitan princip Very Happy) se sve može zapisati i kraće, no ne toliko precizno (u najširem redu neće biti točno 2*n zvjezdice):

Kod:

#include<stdio.h>

int main(void){
       
int i, j, n;

scanf("%d", &n);

for(i=-n; i<=n; i++)
{
         for(j=-n; j<=n; j++)
                       {
                       if(i*i + j*j <= n*n) printf("*");
                       else printf(" ");
                       }
                 
         
printf("\n");}

return 0;}


Very Happy

A sad idem kopati po settinzima. Noli turbare circulos meos, o konzolo! Krugovi trebaju biti krugovi, a ne elipse... Shocked


[Vrh]
Korisnički profil Pošaljite privatnu poruku
blob
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 07. 2007. (18:09:52)
Postovi: (23)16
Sarma = la pohva - posuda
10 = 10 - 0

PostPostano: 23:10 pon, 21. 1. 2008    Naslov: Citirajte i odgovorite

[quote="blob"]A sad idem kopati po settinzima. [/quote]

weeeeeeee! :sliiin:

[URL=http://imageshack.us][img]http://img230.imageshack.us/img230/3684/krugai0.jpg[/img][/URL]

Sad mogu mirno zaspat. :D
blob (napisa):
A sad idem kopati po settinzima.


weeeeeeee! Ovo mi se jaaaako svidja!



Sad mogu mirno zaspat. Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


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

PostPostano: 8:41 uto, 22. 1. 2008    Naslov: Citirajte i odgovorite

Malo elegenatnije... uvjetni operator! ;)

P.S. Cestitke na upornosti (i rezultatu). =D>
Malo elegenatnije... uvjetni operator! Wink

P.S. Cestitke na upornosti (i rezultatu). Applause



_________________
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