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

praktični kolokvij
WWW:
Idite na Prethodno  1, 2, 3 ... 9, 10, 11 ... 17, 18, 19  Sljedeće
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
gflegar
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 10. 2011. (15:03:41)
Postovi: (10D)16
Spol: muško
Sarma = la pohva - posuda
68 = 72 - 4

PostPostano: 2:52 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

[quote="kiara"]Ok, hvala. Nevezano uz ovaj zadatak, sta da radim kad mi je double naprimjer 2900, i moram ga pretvorit u int, pretvori mi ga al u 2899, a to su mi razlicite znamenke. Kako da ga pretvorim u int da ostane 2900?[/quote]

Nikako (ako sam dobro shvatio sto te tocno muci, mada mi se cini da se 2900 uredno pretvara iz double-a u int), nekolicina mojih zadnjih postova je posvecena upravo tom problemu pa prouci malo. Poanta je u tome da ti kod samog ucitavanja gubis na preciznosti i nemas dobrog nacina da je vratis.

EDIT: Sad sam shvatio da tu imam jednu gresku, svaki se broj uredno pretvara iz double-a u int, tu je trebalo pisati da se 2900 uredno ucitava kao double :P

[size=9][color=#999999]Added after 46 minutes:[/color][/size]

[quote="Zenon"][b]Zadatak 23:[/b]
Napisati program koji će učitati cijeli broj n i za taj n izračunati vrijednost Eulerove funkcije od n. Eulerova funkcija definira se kao broj prirodnih brojeva u skupu {1,...,n} koji su relativno prosti s n.

Valja li moje riješenje?
[code:1]#include<stdio.h>
int main(void)
{
int n,k,i,brojac=0,rp,div;
scanf("%d",&n);
if (n==1) brojac++;
for( k=1; k<n; k++ )
{
rp=1;
div=2;
while ( div<=k && rp )
{
if ( n%div==0 && k%div==0) rp=0;
div++;
}
if ( rp ) brojac++;
}
printf ("%d",brojac);
return 0;
}
[/code:1]
[/quote]
Ovako na prvi pogled mi izgleda ok. Ako se osjecas nadobudno probaj ovo optimizirati jer ti je ovo kvadratna slozenost (vec za brojeve > [tex] 10^5[/tex] radi duze od jedne sekunde), a moze bolje.

[code:1]
div=2;
while ( div<=k && rp )
{
if ( n%div==0 && k%div==0) rp=0;
div++;
}
[/code:1]

Ovo nije krivo ali je "lijepse" moglo sa for petljom :D

[code:1]
for (div=2; div<=k && rp; ++div )
{
if ( n%div==0 && k%div==0) rp=0;
}
[/code:1]

[quote="Zenon"]
[b]Zadatak 30:[/b]
Kažemo da je matrica koja se sastoji samo od binarnih znamenki "hrvatska" ako u svakom retku i u svakom stupcu naizmjenično dolaze znamenke 1 i 0. Napišite program koji učitava broj redaka m i broj stupaca n i matricu koja će se sastojati samo od binarnih znamenki (ne treba provjeravati), te ispisuje riječ "DA" ako je učitana matrica hrvatska, a riječ "NE" u protivnom.
Gornji lijevi element hrvatske matrice smije biti i 0 i 1.


[code:1]#include<stdio.h>
int main(void)
{
int mxn,ODGOVOR=1,m,n,a,b,i;
scanf("%d %d",&m,&n);
mxn=n*m;
scanf("%d",&a);
if ( a!=0 && a!=1 ) ODGOVOR=0;
for ( i=1; i<mxn; i++ )
{
scanf("%d",&b);
if ( (b!=0 && b!=1) || b==a ) ODGOVOR=0;
a=b;
}
if (ODGOVOR) printf("DA");
else printf("NE");
return 0;
}[/code:1]

Valja li mi?
Hvala unaprijed.[/quote]

Probaj ovaj primjer:
[code:1]
2 4
1 0 1 0
1 0 1 0
[/code:1]
kiara (napisa):
Ok, hvala. Nevezano uz ovaj zadatak, sta da radim kad mi je double naprimjer 2900, i moram ga pretvorit u int, pretvori mi ga al u 2899, a to su mi razlicite znamenke. Kako da ga pretvorim u int da ostane 2900?


Nikako (ako sam dobro shvatio sto te tocno muci, mada mi se cini da se 2900 uredno pretvara iz double-a u int), nekolicina mojih zadnjih postova je posvecena upravo tom problemu pa prouci malo. Poanta je u tome da ti kod samog ucitavanja gubis na preciznosti i nemas dobrog nacina da je vratis.

EDIT: Sad sam shvatio da tu imam jednu gresku, svaki se broj uredno pretvara iz double-a u int, tu je trebalo pisati da se 2900 uredno ucitava kao double Razz

Added after 46 minutes:

Zenon (napisa):
Zadatak 23:
Napisati program koji će učitati cijeli broj n i za taj n izračunati vrijednost Eulerove funkcije od n. Eulerova funkcija definira se kao broj prirodnih brojeva u skupu {1,...,n} koji su relativno prosti s n.

Valja li moje riješenje?
Kod:
#include<stdio.h>
int main(void)
{
    int n,k,i,brojac=0,rp,div;
    scanf("%d",&n);
    if (n==1) brojac++;
    for( k=1; k<n; k++ )
    {
        rp=1;
        div=2;
        while ( div<=k && rp )
        {
            if ( n%div==0 && k%div==0) rp=0;
            div++;
        }
        if ( rp ) brojac++;
    }
    printf ("%d",brojac);
    return 0;
}


Ovako na prvi pogled mi izgleda ok. Ako se osjecas nadobudno probaj ovo optimizirati jer ti je ovo kvadratna slozenost (vec za brojeve > [tex] 10^5[/tex] radi duze od jedne sekunde), a moze bolje.

Kod:

        div=2;
        while ( div<=k && rp )
        {
            if ( n%div==0 && k%div==0) rp=0;
            div++;
        }


Ovo nije krivo ali je "lijepse" moglo sa for petljom Very Happy

Kod:

        for (div=2; div<=k && rp; ++div )
        {
            if ( n%div==0 && k%div==0) rp=0;
        }


Zenon (napisa):

Zadatak 30:
Kažemo da je matrica koja se sastoji samo od binarnih znamenki "hrvatska" ako u svakom retku i u svakom stupcu naizmjenično dolaze znamenke 1 i 0. Napišite program koji učitava broj redaka m i broj stupaca n i matricu koja će se sastojati samo od binarnih znamenki (ne treba provjeravati), te ispisuje riječ "DA" ako je učitana matrica hrvatska, a riječ "NE" u protivnom.
Gornji lijevi element hrvatske matrice smije biti i 0 i 1.


Kod:
#include<stdio.h>
int main(void)
{
    int mxn,ODGOVOR=1,m,n,a,b,i;
    scanf("%d %d",&m,&n);
    mxn=n*m;
    scanf("%d",&a);
    if ( a!=0 && a!=1 ) ODGOVOR=0;
    for ( i=1; i<mxn; i++ )
    {
        scanf("%d",&b);
        if ( (b!=0 && b!=1) || b==a ) ODGOVOR=0;
        a=b;
    }
    if (ODGOVOR) printf("DA");
    else printf("NE");
    return 0;
}


Valja li mi?
Hvala unaprijed.


Probaj ovaj primjer:
Kod:

2 4
1 0 1 0
1 0 1 0




Zadnja promjena: gflegar; 14:58 sub, 19. 11. 2011; ukupno mijenjano 1 put.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
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: 7:20 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

[quote="gflegar"]Probaj ovaj primjer:
[code:1]2 4
1 0 1 0
1 0 1 0[/code:1][/quote]

To je false positive. Ako se u drugom retku zamijene nule i jedinice, dobije se false negative. Dakle, ne radi niti u jednom smjeru. Zenone, malo temeljitije testiraj svoje programe. Ako nesto ovisi o (ne)parnosti, probas uvijek obje kombinacije (dakle, ovdje, parni i neparni broj stupaca).

Hint za taj zadatak: pratite u kojem ste retku i stupcu, te procitani broju provjeravajte u ovisnosti o [tt](i + j) % 2[/tt] i prvom ucitanom broju ([tt]i[/tt] i [tt]j[/tt] su indeksi retka i stupca).

Usput, provjera [tt]b!=0 && b!=1[/tt] je vishak, jer tekst zadatka garantira da ce biti samo nule i jedinice.
gflegar (napisa):
Probaj ovaj primjer:
Kod:
2 4
1 0 1 0
1 0 1 0


To je false positive. Ako se u drugom retku zamijene nule i jedinice, dobije se false negative. Dakle, ne radi niti u jednom smjeru. Zenone, malo temeljitije testiraj svoje programe. Ako nesto ovisi o (ne)parnosti, probas uvijek obje kombinacije (dakle, ovdje, parni i neparni broj stupaca).

Hint za taj zadatak: pratite u kojem ste retku i stupcu, te procitani broju provjeravajte u ovisnosti o (i + j) % 2 i prvom ucitanom broju (i i j su indeksi retka i stupca).

Usput, provjera b!=0 && b!=1 je vishak, jer tekst zadatka garantira da ce biti samo nule i jedinice.



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


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 12:26 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

imam pitanje za 11. zad....kaze : neparni parovi (i,j) imaju vrijednost 0, i onda za m=3, n=5 na mjestima (2,2) (4,2) su nule...?? sta je to neparan par? kak tu mogu bit nule? tj. ne razumijem zadatak i glupo mi je ici ga stimat prema primjeru koji su oni dali jer nema smisla... treba skuzit sta zadatak hoce rec :) pa ako moze objasnjenje... hvala :)
imam pitanje za 11. zad....kaze : neparni parovi (i,j) imaju vrijednost 0, i onda za m=3, n=5 na mjestima (2,2) (4,2) su nule...?? sta je to neparan par? kak tu mogu bit nule? tj. ne razumijem zadatak i glupo mi je ici ga stimat prema primjeru koji su oni dali jer nema smisla... treba skuzit sta zadatak hoce rec Smile pa ako moze objasnjenje... hvala Smile


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


Pridružen/a: 31. 08. 2011. (10:42:47)
Postovi: (4)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 12:55 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

[quote="jema"]imam pitanje za 11. zad....kaze : neparni parovi (i,j) imaju vrijednost 0, i onda za m=3, n=5 na mjestima (2,2) (4,2) su nule...?? sta je to neparan par? kak tu mogu bit nule? tj. ne razumijem zadatak i glupo mi je ici ga stimat prema primjeru koji su oni dali jer nema smisla... treba skuzit sta zadatak hoce rec :) pa ako moze objasnjenje... hvala :)[/quote]

Indeksi započinju od 0. Prvo mjesto je (i=0, j=0), itd... :wink:

Neparan par - i i j moraju biti neparni.
jema (napisa):
imam pitanje za 11. zad....kaze : neparni parovi (i,j) imaju vrijednost 0, i onda za m=3, n=5 na mjestima (2,2) (4,2) su nule...?? sta je to neparan par? kak tu mogu bit nule? tj. ne razumijem zadatak i glupo mi je ici ga stimat prema primjeru koji su oni dali jer nema smisla... treba skuzit sta zadatak hoce rec Smile pa ako moze objasnjenje... hvala Smile


Indeksi započinju od 0. Prvo mjesto je (i=0, j=0), itd... Wink

Neparan par - i i j moraju biti neparni.


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


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 13:22 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

ahaaaaa XD a hvala puno :)))
ahaaaaa XD a hvala puno Smile))


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


Pridružen/a: 09. 09. 2011. (19:14:43)
Postovi: (2B1)16
Sarma: -
Lokacija: [tex]\pm\infty[/tex]

PostPostano: 13:30 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

[quote="roverandom"][quote="jema"]imam pitanje za 11. zad....kaze : neparni parovi (i,j) imaju vrijednost 0, i onda za m=3, n=5 na mjestima (2,2) (4,2) su nule...?? sta je to neparan par? kak tu mogu bit nule? tj. ne razumijem zadatak i glupo mi je ici ga stimat prema primjeru koji su oni dali jer nema smisla... treba skuzit sta zadatak hoce rec :) pa ako moze objasnjenje... hvala :)[/quote]

Indeksi započinju od 0. Prvo mjesto je (i=0, j=0), itd... :wink:

Neparan par - i i j moraju biti neparni.[/quote]

Može li mi netko objasniti zašto indeksi kreću od nule?
Mislim, na linearnoj eto cijelo vrijeme učimo da je skroz gornji lijevi element [tex]a_{11}[/tex], što je različito od [tex]a_{00}[/tex]. Prvi redak i prvi stupac. Što sad znači nulti redak i nulti stupac?
Ima li neki poseban razlog za to?
roverandom (napisa):
jema (napisa):
imam pitanje za 11. zad....kaze : neparni parovi (i,j) imaju vrijednost 0, i onda za m=3, n=5 na mjestima (2,2) (4,2) su nule...?? sta je to neparan par? kak tu mogu bit nule? tj. ne razumijem zadatak i glupo mi je ici ga stimat prema primjeru koji su oni dali jer nema smisla... treba skuzit sta zadatak hoce rec Smile pa ako moze objasnjenje... hvala Smile


Indeksi započinju od 0. Prvo mjesto je (i=0, j=0), itd... Wink

Neparan par - i i j moraju biti neparni.


Može li mi netko objasniti zašto indeksi kreću od nule?
Mislim, na linearnoj eto cijelo vrijeme učimo da je skroz gornji lijevi element [tex]a_{11}[/tex], što je različito od [tex]a_{00}[/tex]. Prvi redak i prvi stupac. Što sad znači nulti redak i nulti stupac?
Ima li neki poseban razlog za to?



_________________
It's a wonderful, wonderful life!
[tex]\heartsuit \ \mathcal{PMF-MO} \ \heartsuit[/tex]
[tex]\mathbb Z\Sigma\mathbb N\emptyset\mathbb N[/tex]
[Vrh]
Korisnički profil Pošaljite privatnu poruku
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: 13:35 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

Ima: memorija.

U C-u, "niz" je zapravo adresa prvog elementa niza. Dakle, ako imas
[tt]int x[17];[/tt] ([tt]x[/tt] je niz od 17 [tt]int[/tt]-ova)
onda se na memorijskoj lokaciji [tt]x[/tt] (sto je isto sto i [tt]x+0[/tt]) nalazi prvi element, na iducoj memorijskoj lokaciji ([tt]x + 1[/tt]) se nalazi drugi element, itd. Hence, prvog oznacavamo s [tt]x[0][/tt], drugog s [tt]x[1][/tt], itd.

Vise o tome na predavanjima, kad dodjemo do nizova.
Ima: memorija.

U C-u, "niz" je zapravo adresa prvog elementa niza. Dakle, ako imas
int x[17]; (x je niz od 17 int-ova)
onda se na memorijskoj lokaciji x (sto je isto sto i x+0) nalazi prvi element, na iducoj memorijskoj lokaciji (x + 1) se nalazi drugi element, itd. Hence, prvog oznacavamo s x[0], drugog s x[1], itd.

Vise o tome na predavanjima, kad dodjemo do nizova.



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


Pridružen/a: 01. 10. 2011. (18:52:00)
Postovi: (1B)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
-2 = 0 - 2

PostPostano: 14:14 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

Imam nekoliko pitanja, prvo je vezano uz zad.br.41 u kojemu moramo ucitati double i ispisati broj koji nastaje okretanjem njegovih znamenaka. U mom kodu očito negje postoji greska jer mi za primjer 521.75 ispisuje dobro, odnosno 57.125, ali za neki drugi broj primjerice 50.98 nece funkcionirati. Takoder me zanima da li ti zadaci moraju funkcionirati za sve unose, odnosno da li bi se moje rjesenje priznalo na prakticnom kolokviju? Da li ce asistenti tj oni koji ce nas cuvati upisivati za provjeru tocno ove primjere koji su navedeni ili ?
Unaprijed se zahvaljujem na odgovorima : D

#include <stdio.h>


int main(void){
double x; int a,b,t=0,v=0;
printf("Unesi realan broj: ");
scanf("%lf",&x);
a=int(x);
x=x-a;
b=int(x*10000);
while (b%10==0){
b=b/10;}
while(a>0){
t=t*10+a%10;
a=a/10;}
while(b>0){
v=v*10+b%10;
b=b/10;}
printf("%d.%d",v,t);

return 0;
}
Imam nekoliko pitanja, prvo je vezano uz zad.br.41 u kojemu moramo ucitati double i ispisati broj koji nastaje okretanjem njegovih znamenaka. U mom kodu očito negje postoji greska jer mi za primjer 521.75 ispisuje dobro, odnosno 57.125, ali za neki drugi broj primjerice 50.98 nece funkcionirati. Takoder me zanima da li ti zadaci moraju funkcionirati za sve unose, odnosno da li bi se moje rjesenje priznalo na prakticnom kolokviju? Da li ce asistenti tj oni koji ce nas cuvati upisivati za provjeru tocno ove primjere koji su navedeni ili ?
Unaprijed se zahvaljujem na odgovorima : D

#include <stdio.h>


int main(void){
double x; int a,b,t=0,v=0;
printf("Unesi realan broj: ");
scanf("%lf",&x);
a=int(x);
x=x-a;
b=int(x*10000);
while (b%10==0){
b=b/10;}
while(a>0){
t=t*10+a%10;
a=a/10;}
while(b>0){
v=v*10+b%10;
b=b/10;}
printf("%d.%d",v,t);

return 0;
}


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


Pridružen/a: 12. 10. 2011. (15:03:41)
Postovi: (10D)16
Spol: muško
Sarma = la pohva - posuda
68 = 72 - 4

PostPostano: 14:41 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

[quote="Cupcake"]
#include <stdio.h>


int main(void){
double x; int a,b,t=0,v=0;
printf("Unesi realan broj: ");
scanf("%lf",&x);
a=int(x);
x=x-a;
b=int(x*10000);
while (b%10==0){
b=b/10;}
while(a>0){
t=t*10+a%10;
a=a/10;}
while(b>0){
v=v*10+b%10;
b=b/10;}
printf("%d.%d",v,t);

return 0;
}[/quote]

Za pocetak pogledaj kako bi kodovi trebali izgledati da budu citljivi, pogledaj npr. Zenonove kodove i onu boldanu recenicu koju vsego ima u potpisu.
Cupcake (napisa):

#include <stdio.h>


int main(void){
double x; int a,b,t=0,v=0;
printf("Unesi realan broj: ");
scanf("%lf",&x);
a=int(x);
x=x-a;
b=int(x*10000);
while (b%10==0){
b=b/10;}
while(a>0){
t=t*10+a%10;
a=a/10;}
while(b>0){
v=v*10+b%10;
b=b/10;}
printf("%d.%d",v,t);

return 0;
}


Za pocetak pogledaj kako bi kodovi trebali izgledati da budu citljivi, pogledaj npr. Zenonove kodove i onu boldanu recenicu koju vsego ima u potpisu.


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
jema
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 14:41 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

ako netko moze pomoc, sto tu ne valja??! hvala :)

#include <stdio.h>

int prost(int a)
{
int prost=1, i;
for (i=1; i<a; ++i)
{
if (a%i==0) prost=0;
}
return prost;
}

int main (void)

{
int n,m,i;

printf("Ucitaj paran broj n>2: ");
scanf("%d", &n);

for (i=2; i<=n-2; ++i)
{
m=n-i;
if (prost(i) && prost(m))
{
printf("%d=%d+%d", n,i,m); break;
}
}
return 0;
}
ako netko moze pomoc, sto tu ne valja??! hvala Smile

#include <stdio.h>

int prost(int a)
{
int prost=1, i;
for (i=1; i<a; ++i)
{
if (a%i==0) prost=0;
}
return prost;
}

int main (void)

{
int n,m,i;

printf("Ucitaj paran broj n>2: ");
scanf("%d", &n);

for (i=2; i<=n-2; ++i)
{
m=n-i;
if (prost(i) && prost(m))
{
printf("%d=%d+%d", n,i,m); break;
}
}
return 0;
}


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


Pridružen/a: 12. 10. 2011. (15:03:41)
Postovi: (10D)16
Spol: muško
Sarma = la pohva - posuda
68 = 72 - 4

PostPostano: 14:46 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

[quote="Cupcake"]
U mom kodu očito negje postoji greska jer mi za primjer 521.75 ispisuje dobro, odnosno 57.125, ali za neki drugi broj primjerice 50.98 nece funkcionirati.[/quote]

[quote="gflegar"][quote="kiara"]Ok, hvala. Nevezano uz ovaj zadatak, sta da radim kad mi je double naprimjer 2900, i moram ga pretvorit u int, pretvori mi ga al u 2899, a to su mi razlicite znamenke. Kako da ga pretvorim u int da ostane 2900?[/quote]

Nikako (ako sam dobro shvatio sto te tocno muci, mada mi se cini da se 2900 uredno pretvara iz double-a u int), nekolicina mojih zadnjih postova je posvecena upravo tom problemu pa prouci malo. Poanta je u tome da ti kod samog ucitavanja gubis na preciznosti i nemas dobrog nacina da je vratis. [/quote]

Mada mi se nije dalo desifrirati kod mislim da ti imas isti problem kao i kiara, pa i ti prouci ovaj topic malo detaljnije.

[size=9][color=#999999]Added after 3 minutes:[/color][/size]

[quote="jema"]
int prost(int a)
{
int prost=1, i;
[tt]for (i=1; i<a; ++i)[/tt]
{
[tt]if (a%i==0) prost=0;[/tt]
}
return prost;
}
[/quote]

Pogledaj malo bolje za koje brojeve ovo vrijedi.
Cupcake (napisa):

U mom kodu očito negje postoji greska jer mi za primjer 521.75 ispisuje dobro, odnosno 57.125, ali za neki drugi broj primjerice 50.98 nece funkcionirati.


gflegar (napisa):
kiara (napisa):
Ok, hvala. Nevezano uz ovaj zadatak, sta da radim kad mi je double naprimjer 2900, i moram ga pretvorit u int, pretvori mi ga al u 2899, a to su mi razlicite znamenke. Kako da ga pretvorim u int da ostane 2900?


Nikako (ako sam dobro shvatio sto te tocno muci, mada mi se cini da se 2900 uredno pretvara iz double-a u int), nekolicina mojih zadnjih postova je posvecena upravo tom problemu pa prouci malo. Poanta je u tome da ti kod samog ucitavanja gubis na preciznosti i nemas dobrog nacina da je vratis.


Mada mi se nije dalo desifrirati kod mislim da ti imas isti problem kao i kiara, pa i ti prouci ovaj topic malo detaljnije.

Added after 3 minutes:

jema (napisa):

int prost(int a)
{
int prost=1, i;
for (i=1; i<a; ++i)
{
if (a%i==0) prost=0;
}
return prost;
}


Pogledaj malo bolje za koje brojeve ovo vrijedi.




Zadnja promjena: gflegar; 15:06 sub, 19. 11. 2011; ukupno mijenjano 1 put.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
jema
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 15:04 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

sta nije da ni to radi za brojeve od 2 do a-1, a to i treba? jer svaki broj je djeljiv s 1 i sa samim sobom pa to nemoram provjeravat.
sta nije da ni to radi za brojeve od 2 do a-1, a to i treba? jer svaki broj je djeljiv s 1 i sa samim sobom pa to nemoram provjeravat.


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


Pridružen/a: 12. 10. 2011. (15:03:41)
Postovi: (10D)16
Spol: muško
Sarma = la pohva - posuda
68 = 72 - 4

PostPostano: 15:08 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

[quote="jema"]sta nije da ni to radi za brojeve od 2 do a-1, a to i treba? jer svaki broj je djeljiv s 1 i sa samim sobom pa to nemoram provjeravat.[/quote]

Ali ti inicjaliziras i kao [tt]i= 1;[/tt].
jema (napisa):
sta nije da ni to radi za brojeve od 2 do a-1, a to i treba? jer svaki broj je djeljiv s 1 i sa samim sobom pa to nemoram provjeravat.


Ali ti inicjaliziras i kao i= 1;.


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
jema
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 16:15 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

ahaa...da, sad radi...al ja sam sve ovo vrijeme bila uvjerena da i=1 je zapravo broj 2, al to nema smisla jer mi onda fali 0 XD hihihi ugl, skuzila sam :) hvala :D
ahaa...da, sad radi...al ja sam sve ovo vrijeme bila uvjerena da i=1 je zapravo broj 2, al to nema smisla jer mi onda fali 0 XD hihihi ugl, skuzila sam Smile hvala Very Happy


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


Pridružen/a: 08. 12. 2010. (13:11:02)
Postovi: (21)16
Sarma = la pohva - posuda
= 2 - 0

PostPostano: 16:17 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

Please pomoć!
17. zadatak, zamjena decimalnog i cijelog dijela realnog broja...
Kod upisa nekih brojeva sa četiri decimale ispiše mi krivo: npr. za 5668.5484 ispiše 5483.5668
Ne mogu shvatiti gdje sam pogriješila :?

#include <stdio.h>
#include <stdlib.h>

int main ()
{
double x, dec=0.0, d, trazeni;
int i, a, b, c, n=10, cijeli=0;

printf("Ucitaj realan broj: ");
scanf("%lf", &x);
c = (int) (x); /* c je cjelobrojni dio od x */
d = x - c; /*d je decimalni dio od x*/

for(i=0; i < 4; i++)
{
a = (int) (10*d);
if(a!=0)
cijeli = cijeli*n + a;
d = d*10 - a;

if(c!=0)
{
b= c%10;
dec= dec*0.1 + b*0.1;
c /=10;
}
}
trazeni = cijeli + dec;

printf("%.4f", trazeni);
return 0;
}
Please pomoć!
17. zadatak, zamjena decimalnog i cijelog dijela realnog broja...
Kod upisa nekih brojeva sa četiri decimale ispiše mi krivo: npr. za 5668.5484 ispiše 5483.5668
Ne mogu shvatiti gdje sam pogriješila Confused

#include <stdio.h>
#include <stdlib.h>

int main ()
{
double x, dec=0.0, d, trazeni;
int i, a, b, c, n=10, cijeli=0;

printf("Ucitaj realan broj: ");
scanf("%lf", &x);
c = (int) (x); /* c je cjelobrojni dio od x */
d = x - c; /*d je decimalni dio od x*/

for(i=0; i < 4; i++)
{
a = (int) (10*d);
if(a!=0)
cijeli = cijeli*n + a;
d = d*10 - a;

if(c!=0)
{
b= c%10;
dec= dec*0.1 + b*0.1;
c /=10;
}
}
trazeni = cijeli + dec;

printf("%.4f", trazeni);
return 0;
}


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


Pridružen/a: 01. 10. 2011. (18:19:07)
Postovi: (38)16
Sarma = la pohva - posuda
= 0 - 0
Lokacija: Planet Zemlja

PostPostano: 16:27 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

Možda glupo pitanje, smijemo li na praktičnom imati prazan list papira za koncept?
Možda glupo pitanje, smijemo li na praktičnom imati prazan list papira za koncept?


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


Pridružen/a: 12. 10. 2011. (15:03:41)
Postovi: (10D)16
Spol: muško
Sarma = la pohva - posuda
68 = 72 - 4

PostPostano: 16:39 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

[quote="malenaa"]
Kod upisa nekih brojeva sa četiri decimale ispiše mi krivo: npr. za 5668.5484 ispiše 5483.5668
Ne mogu shvatiti gdje sam pogriješila[/quote]

[quote="gflegar"][quote="Cupcake"]
U mom kodu očito negje postoji greska jer mi za primjer 521.75 ispisuje dobro, odnosno 57.125, ali za neki drugi broj primjerice 50.98 nece funkcionirati.[/quote]

[quote="gflegar"][quote="kiara"]Ok, hvala. Nevezano uz ovaj zadatak, sta da radim kad mi je double naprimjer 2900, i moram ga pretvorit u int, pretvori mi ga al u 2899, a to su mi razlicite znamenke. Kako da ga pretvorim u int da ostane 2900?[/quote]

Nikako (ako sam dobro shvatio sto te tocno muci, mada mi se cini da se 2900 uredno pretvara iz double-a u int), nekolicina mojih zadnjih postova je posvecena upravo tom problemu pa prouci malo. Poanta je u tome da ti kod samog ucitavanja gubis na preciznosti i nemas dobrog nacina da je vratis. [/quote]

Mada mi se nije dalo desifrirati kod mislim da ti imas isti problem kao i kiara, pa i ti prouci ovaj topic malo detaljnije.
[/quote]

I ti isto imas isti problem kao kiara i cupcake.

Ljudi pls citajte prijasnje postove na topicu, vjerojatno vam mogu pomoci. I stavite kodove u [b]code[/b] blokove (kako je i vsego napisao u potpisu), to je samo 12 znakova vise za napisati a dobivate puno na citljivosti.
malenaa (napisa):

Kod upisa nekih brojeva sa četiri decimale ispiše mi krivo: npr. za 5668.5484 ispiše 5483.5668
Ne mogu shvatiti gdje sam pogriješila


gflegar (napisa):
Cupcake (napisa):

U mom kodu očito negje postoji greska jer mi za primjer 521.75 ispisuje dobro, odnosno 57.125, ali za neki drugi broj primjerice 50.98 nece funkcionirati.


gflegar (napisa):
kiara (napisa):
Ok, hvala. Nevezano uz ovaj zadatak, sta da radim kad mi je double naprimjer 2900, i moram ga pretvorit u int, pretvori mi ga al u 2899, a to su mi razlicite znamenke. Kako da ga pretvorim u int da ostane 2900?


Nikako (ako sam dobro shvatio sto te tocno muci, mada mi se cini da se 2900 uredno pretvara iz double-a u int), nekolicina mojih zadnjih postova je posvecena upravo tom problemu pa prouci malo. Poanta je u tome da ti kod samog ucitavanja gubis na preciznosti i nemas dobrog nacina da je vratis.


Mada mi se nije dalo desifrirati kod mislim da ti imas isti problem kao i kiara, pa i ti prouci ovaj topic malo detaljnije.


I ti isto imas isti problem kao kiara i cupcake.

Ljudi pls citajte prijasnje postove na topicu, vjerojatno vam mogu pomoci. I stavite kodove u code blokove (kako je i vsego napisao u potpisu), to je samo 12 znakova vise za napisati a dobivate puno na citljivosti.


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
mdoko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 16:41 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

[quote="matematičarka"]Možda glupo pitanje, smijemo li na praktičnom imati prazan list papira za koncept?[/quote]
Smijete čak imati i olovku kojom ćete pisati po tom papiru. :wink:
matematičarka (napisa):
Možda glupo pitanje, smijemo li na praktičnom imati prazan list papira za koncept?

Smijete čak imati i olovku kojom ćete pisati po tom papiru. Wink



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
jema
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 16:59 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

#include <stdio.h>

int main(void)

{
double n,a;
int x,z;

printf("Upisi dec. broj manji od 9999 i s max. 4 decimale: ");
scanf("%lf", &n);

x=(int)n;
a=n-x;
a *= 10000;
z=(int)(a+.5);
while (z%10==0)
{
z/=10;
};
printf("%d.%d",z,x);

return 0;
}

evo moj 17. zad. mozda nekom pomogne...ja koliko sam probala radi za sve, a puuuno je krace sto sam vidjela do sad XD...
#include <stdio.h>

int main(void)

{
double n,a;
int x,z;

printf("Upisi dec. broj manji od 9999 i s max. 4 decimale: ");
scanf("%lf", &n);

x=(int)n;
a=n-x;
a *= 10000;
z=(int)(a+.5);
while (z%10==0)
{
z/=10;
};
printf("%d.%d",z,x);

return 0;
}

evo moj 17. zad. mozda nekom pomogne...ja koliko sam probala radi za sve, a puuuno je krace sto sam vidjela do sad XD...


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


Pridružen/a: 12. 10. 2011. (15:03:41)
Postovi: (10D)16
Spol: muško
Sarma = la pohva - posuda
68 = 72 - 4

PostPostano: 17:17 sub, 19. 11. 2011    Naslov: Citirajte i odgovorite

Ajde posto vidim da je ovo "FAQ", idem napisati na jednom mjestu univerzalni odgovor:

[quote="veliko mnostvo forumasa prve godine"]
Zasto mi program koji treba zamjeniti realni i cijeli dio broja za broj [tt]15.2[/tt] ispisjue [tt]1999.15[/tt]?
[/quote]

Na predavanjima je bilo spomenuto da "realni" brojevi u racunalu [b]nisu[/b] realni brojevi ([tex]\mathbb{R}[/tex]). Stovise to nisu cak svi realni brojevi iz nekog intervala, nego samo brojevi oblika [tex] \pm\frac{a}{2^x}, a,x \in \mathbb{N}[/tex] (vise manje, malo tocnija formula je negdje gore u ovom topicu).

[quote="veliko mnostvo forumasa prve godine"] Sto se dogadja s brojevima koji nisu tog oblika?[/quote]
Racunalo pri samom ucitavanju tog broja umjesto njega sprema njemu "najblizi" prikazivi broj. Tako ce npr.
[tt]15.2[/tt] biti prikazan kao [tt]15.19999999999999928946[/tt]
[tt]50.98[/tt] kao [tt]50.97999999999999687361[/tt]
[tt]5668.5484[/tt] kao [tt]5668.54839999999967403710[/tt]
itd.

[quote="veliko mnostvo forumasa prve godine"]
Kako onda izbjeci ovo?
[/quote]

Necu vam odgovoriti na ovo pitanje (da nebi ispalo da vas poticem da radite ono sto se od vas ne ocekuje), nego cu vam reci ovo:

[quote="vsego"]
Dakle, od nas mozete ocekivat (lupam napamet) 12.375 ([tex]12\frac{3}{8}[/tex]), ali ne i nesto poput 12.1.[/quote]

Tj. svi brojevi koje cete na prakticnom kolokviju dobiti kao test primjere [b]ce biti prikazivi u racunalu[/b] i vas algoritam koji ne radi za gore navedene brojeve (i jos veliku vecinu slicnih) ce biti ocjenjen kao tocan.

[size=9][color=#999999]Added after 17 minutes:[/color][/size]

[quote="jema"][code:1]#include <stdio.h>

int main(void)

{
double n,a;
int x,z;

printf("Upisi dec. broj manji od 9999 i s max. 4 decimale: ");
scanf("%lf", &n);

x=(int)n;
a=n-x;
a *= 10000;
z=(int)(a+.5);
while (z%10==0)
{
z/=10;
};
printf("%d.%d",z,x);

return 0;
}
[/code:1]
evo moj 17. zad. mozda nekom pomogne...ja koliko sam probala radi za sve, a puuuno je krace sto sam vidjela do sad XD...[/quote]

[tt]z=(int)(a+.5);[/tt]
Zanimljiva optimizacija tocnosti za neprikazive brojeve, na prvi pogled mi cak izgleda savrseno tocna za brojeve s < 4 decimale :weee: :karma:
Ajde posto vidim da je ovo "FAQ", idem napisati na jednom mjestu univerzalni odgovor:

veliko mnostvo forumasa prve godine (napisa):

Zasto mi program koji treba zamjeniti realni i cijeli dio broja za broj 15.2 ispisjue 1999.15?


Na predavanjima je bilo spomenuto da "realni" brojevi u racunalu nisu realni brojevi ([tex]\mathbb{R}[/tex]). Stovise to nisu cak svi realni brojevi iz nekog intervala, nego samo brojevi oblika [tex] \pm\frac{a}{2^x}, a,x \in \mathbb{N}[/tex] (vise manje, malo tocnija formula je negdje gore u ovom topicu).

veliko mnostvo forumasa prve godine (napisa):
Sto se dogadja s brojevima koji nisu tog oblika?

Racunalo pri samom ucitavanju tog broja umjesto njega sprema njemu "najblizi" prikazivi broj. Tako ce npr.
15.2 biti prikazan kao 15.19999999999999928946
50.98 kao 50.97999999999999687361
5668.5484 kao 5668.54839999999967403710
itd.

veliko mnostvo forumasa prve godine (napisa):

Kako onda izbjeci ovo?


Necu vam odgovoriti na ovo pitanje (da nebi ispalo da vas poticem da radite ono sto se od vas ne ocekuje), nego cu vam reci ovo:

vsego (napisa):

Dakle, od nas mozete ocekivat (lupam napamet) 12.375 ([tex]12\frac{3}{8}[/tex]), ali ne i nesto poput 12.1.


Tj. svi brojevi koje cete na prakticnom kolokviju dobiti kao test primjere ce biti prikazivi u racunalu i vas algoritam koji ne radi za gore navedene brojeve (i jos veliku vecinu slicnih) ce biti ocjenjen kao tocan.

Added after 17 minutes:

jema (napisa):
Kod:
#include <stdio.h>

int main(void)

{
    double n,a;
    int x,z;
   
    printf("Upisi dec. broj manji od 9999 i s max. 4 decimale: ");
    scanf("%lf", &n);
   
    x=(int)n;
    a=n-x;
    a *= 10000;
    z=(int)(a+.5);
    while (z%10==0)
           {
               z/=10;
           };
    printf("%d.%d",z,x);
   
    return 0;
}

evo moj 17. zad. mozda nekom pomogne...ja koliko sam probala radi za sve, a puuuno je krace sto sam vidjela do sad XD...


z=(int)(a+.5);
Zanimljiva optimizacija tocnosti za neprikazive brojeve, na prvi pogled mi cak izgleda savrseno tocna za brojeve s < 4 decimale Weeeeeee!!!!!!!!!!! karma++


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
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.
Idite na Prethodno  1, 2, 3 ... 9, 10, 11 ... 17, 18, 19  Sljedeće
Stranica 10 / 19.

 
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