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

Zadaci za prakticni kolokvij
WWW:
Idite na 1, 2, 3, 4, 5, 6, 7  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
CROmpir
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 15. 09. 2009. (18:27:06)
Postovi: (B3)16
Sarma = la pohva - posuda
= 7 - 2

PostPostano: 17:02 pon, 8. 11. 2010    Naslov: Zadaci za prakticni kolokvij Citirajte i odgovorite

Zamolio bih nekoga ako mi moze pomoci oko ovog zadatka

Zadatak 13 [nizovi]:
Napisite program koji ucitava prirodni broj n < 10 koji predstavlja duljinu niza, te niz prirodnih brojeva a1, a2, . . . , an. Svi
elementi niza ce biti manji ili jednaki 100 (ne treba provjeravati).
Program treba ispisati sve brojeve koji se mogu prikazati kao suma tri clana niza sa razliˇcitim indexima. Svaki od brojeva
treba biti ispisan tocno jednom; brojevi trebaju biti ispisani uzlazno po velicini!
Na primjer, ako je n = 5, a ucitani niz brojeva je (3, 1, 10, 2, 1), onda vas program treba ispisati brojeve 4, 5, 6, 12, 13, 14, 15.

Problem je u tome da nezz ako da odredim sve moguce sume, tj. kombinaciju indeksa.
Zamolio bih nekoga ako mi moze pomoci oko ovog zadatka

Zadatak 13 [nizovi]:
Napisite program koji ucitava prirodni broj n < 10 koji predstavlja duljinu niza, te niz prirodnih brojeva a1, a2, . . . , an. Svi
elementi niza ce biti manji ili jednaki 100 (ne treba provjeravati).
Program treba ispisati sve brojeve koji se mogu prikazati kao suma tri clana niza sa razliˇcitim indexima. Svaki od brojeva
treba biti ispisan tocno jednom; brojevi trebaju biti ispisani uzlazno po velicini!
Na primjer, ako je n = 5, a ucitani niz brojeva je (3, 1, 10, 2, 1), onda vas program treba ispisati brojeve 4, 5, 6, 12, 13, 14, 15.

Problem je u tome da nezz ako da odredim sve moguce sume, tj. kombinaciju indeksa.


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


Pridružen/a: 05. 10. 2009. (17:48:30)
Postovi: (143)16
Spol: muško
Sarma = la pohva - posuda
83 = 86 - 3

PostPostano: 17:34 pon, 8. 11. 2010    Naslov: Citirajte i odgovorite

Mogao bi napraviti 3 petlje (jednu u drugoj u trecoj) kojima prolazis kroz svoj niz, nesto kao
for(i=0; i<n;++i)
for(j=i+1; j<n; ++j)
for(k=j+1, k<n; ++k)

(jasno je da ces pobrat sve kombinacije s te tri petlje, samo sad to treba doraditi tako da se brojevi ispisuju ulazno, i to samo jednom. To se valjda moze postici tako da sve sume stavljas u neki drugi niz (kako ima n povrh 3 suma, toliko dugacak treba biti niz), sortiras taj niz i onda prolazis kroz njega ispisujuci samo one elemente nakon kojih dolazi neki element razlicit od njih ili kraj niza)

Nije da obeshrabrujem vjezbu, al cisto informacije radi, sumnjam da ce bit zadataka s nizovima na prakticnom... (Ako niste radili nizove na vjezbama/predavanju?)
Mogao bi napraviti 3 petlje (jednu u drugoj u trecoj) kojima prolazis kroz svoj niz, nesto kao
for(i=0; i<n;++i)
for(j=i+1; j<n; ++j)
for(k=j+1, k<n; ++k)

(jasno je da ces pobrat sve kombinacije s te tri petlje, samo sad to treba doraditi tako da se brojevi ispisuju ulazno, i to samo jednom. To se valjda moze postici tako da sve sume stavljas u neki drugi niz (kako ima n povrh 3 suma, toliko dugacak treba biti niz), sortiras taj niz i onda prolazis kroz njega ispisujuci samo one elemente nakon kojih dolazi neki element razlicit od njih ili kraj niza)

Nije da obeshrabrujem vjezbu, al cisto informacije radi, sumnjam da ce bit zadataka s nizovima na prakticnom... (Ako niste radili nizove na vjezbama/predavanju?)


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


Pridružen/a: 07. 11. 2008. (14:57:52)
Postovi: (453)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
17 = 68 - 51
Lokacija: Hilbertov hotel

PostPostano: 20:46 pon, 8. 11. 2010    Naslov: Citirajte i odgovorite

bolje da sortira početni niz uzlazno pa onda da traži sume. za mali n nije velka razlika, al povrh dost brzo raste, pa ono, ovak malo ubrza rješenje.
i da, dok upisuješ sumu u pomoćni niz, koji mora bit duljine 10*9*8/(1*2*3) odmah provjeravaj dali ta suma postoji već izračunata. normalno, pamti u pomoćnom int-u duljinu niza suma da uvijek znaš dokle treba tražit.
bolje da sortira početni niz uzlazno pa onda da traži sume. za mali n nije velka razlika, al povrh dost brzo raste, pa ono, ovak malo ubrza rješenje.
i da, dok upisuješ sumu u pomoćni niz, koji mora bit duljine 10*9*8/(1*2*3) odmah provjeravaj dali ta suma postoji već izračunata. normalno, pamti u pomoćnom int-u duljinu niza suma da uvijek znaš dokle treba tražit.



_________________
Sedam je prost broj Smile

Bolonja je smeće i to pod hitno treba mijenjat
[Vrh]
Korisnički profil Pošaljite privatnu poruku MSNM
pmli
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 09. 11. 2009. (12:03:05)
Postovi: (2C8)16
Spol: muško
Sarma = la pohva - posuda
197 = 203 - 6

PostPostano: 21:26 pon, 8. 11. 2010    Naslov: Citirajte i odgovorite

[quote="Milojko"]bolje da sortira početni niz uzlazno pa onda da traži sume.[/quote]
To ne mora biti dovoljno.
Npr. za (1, 2, 3, 4, 6) vrijedi 1 + 2 + 6 = 9 > 8 = 1 + 3 + 4. :)
Milojko (napisa):
bolje da sortira početni niz uzlazno pa onda da traži sume.

To ne mora biti dovoljno.
Npr. za (1, 2, 3, 4, 6) vrijedi 1 + 2 + 6 = 9 > 8 = 1 + 3 + 4. Smile


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


Pridružen/a: 17. 10. 2010. (20:15:17)
Postovi: (56)16
Sarma = la pohva - posuda
= 4 - 0

PostPostano: 22:53 pon, 8. 11. 2010    Naslov: Citirajte i odgovorite

jel mi moze netko reci kako se zapisuju kompleksni brojevi C-u, tj. imagirana jedinica? jel moram definirati na pocetku kao korjen iz -1, uključiti neku biblioteku ili nesto trece?
jel mi moze netko reci kako se zapisuju kompleksni brojevi C-u, tj. imagirana jedinica? jel moram definirati na pocetku kao korjen iz -1, uključiti neku biblioteku ili nesto trece?


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


Pridružen/a: 05. 10. 2009. (17:48:30)
Postovi: (143)16
Spol: muško
Sarma = la pohva - posuda
83 = 86 - 3

PostPostano: 22:57 pon, 8. 11. 2010    Naslov: Citirajte i odgovorite

Ne, jednostavno ih tumacis kao uredjeni par realnih brojeva, pomocu bijekcije x+yi <-> (x,y)
Iz ovoga je ocito da kompleksni broj mozes pamtit u 2 varijable tipa double...
Ne, jednostavno ih tumacis kao uredjeni par realnih brojeva, pomocu bijekcije x+yi <-> (x,y)
Iz ovoga je ocito da kompleksni broj mozes pamtit u 2 varijable tipa double...


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


Pridružen/a: 07. 11. 2008. (14:57:52)
Postovi: (453)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
17 = 68 - 51
Lokacija: Hilbertov hotel

PostPostano: 3:42 uto, 9. 11. 2010    Naslov: Citirajte i odgovorite

[quote="pmli"][quote="Milojko"]bolje da sortira početni niz uzlazno pa onda da traži sume.[/quote]
To ne mora biti dovoljno.
Npr. za (1, 2, 3, 4, 6) vrijedi 1 + 2 + 6 = 9 > 8 = 1 + 3 + 4. :)[/quote]
sjetio sam se kad sam napiso.
uglavnom, nije zapravo potrebno ništ ni sortirat. samo računat sume i provjerit dal se nalaze u nizu prije upisivanja
pmli (napisa):
Milojko (napisa):
bolje da sortira početni niz uzlazno pa onda da traži sume.

To ne mora biti dovoljno.
Npr. za (1, 2, 3, 4, 6) vrijedi 1 + 2 + 6 = 9 > 8 = 1 + 3 + 4. Smile

sjetio sam se kad sam napiso.
uglavnom, nije zapravo potrebno ništ ni sortirat. samo računat sume i provjerit dal se nalaze u nizu prije upisivanja



_________________
Sedam je prost broj Smile

Bolonja je smeće i to pod hitno treba mijenjat
[Vrh]
Korisnički profil Pošaljite privatnu poruku MSNM
vsego
Site Admin
Site Admin


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

PostPostano: 5:08 uto, 9. 11. 2010    Naslov: Citirajte i odgovorite

Ako smijem primijetiti, ucitavaju se prirodni brojevi ne veci od 100 i gledaju sume po tri takva. Dakle, najveca moguca suma je 300, pa je dosta niz s 301 elementom (teoretski s 298, ali nemojmo komplicirati zbog 3 [tt]int[/tt]-a):

[code:1]int provjera[301] = {0};
...
if (!provjera[suma]) {
printf("%d\n", suma);
provjera[suma] = 1;
}[/code:1]
Ako smijem primijetiti, ucitavaju se prirodni brojevi ne veci od 100 i gledaju sume po tri takva. Dakle, najveca moguca suma je 300, pa je dosta niz s 301 elementom (teoretski s 298, ali nemojmo komplicirati zbog 3 int-a):

Kod:
int provjera[301] = {0};
...
if (!provjera[suma]) {
  printf("%d\n", suma);
  provjera[suma] = 1;
}



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


Pridružen/a: 15. 09. 2009. (18:27:06)
Postovi: (B3)16
Sarma = la pohva - posuda
= 7 - 2

PostPostano: 18:36 uto, 9. 11. 2010    Naslov: Citirajte i odgovorite

Hvala na brzim odgovorima i hintovima, evo mojeg rjesenja...

[code:1]#include <stdio.h>
#include <stdlib.h>
#define MAXN 10
#define MAX 1000
int main() {
int n, polje[MAXN + 1], i, j, k;
int rjesenja[MAX + 1] = {0};
scanf("%d", &n);

for (i=0; i<n; ++i)
scanf("%d", &polje[i]);

for (i=0; i<n; ++i) {
for (j=i+1; j<n; ++j) {
for (k=j+1; k<n; ++k) {
rjesenja[ polje[i]+polje[j]+polje[k] ]++;
}
}
}
for(i=0; i<MAX; ++i) {
if( rjesenja[ i ] ){
printf( "%d " , i );
}
}
printf("\n");
system("pause");
return 0;
}
[/code:1]
Hvala na brzim odgovorima i hintovima, evo mojeg rjesenja...

Kod:
#include <stdio.h>
#include <stdlib.h>
#define MAXN 10
#define MAX 1000
int main() {
    int n, polje[MAXN + 1], i, j, k;
    int rjesenja[MAX + 1] = {0};
    scanf("%d", &n);

    for (i=0; i<n; ++i)
            scanf("%d", &polje[i]);

    for (i=0; i<n; ++i) {
            for (j=i+1; j<n; ++j) {
                    for (k=j+1; k<n; ++k) {
                            rjesenja[ polje[i]+polje[j]+polje[k] ]++;
                    }
            }
    }
    for(i=0; i<MAX; ++i) {
        if( rjesenja[ i ] ){
            printf( "%d " , i );
            }
    }
    printf("\n");
    system("pause");
    return 0;
    }


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


Pridružen/a: 17. 10. 2010. (20:15:17)
Postovi: (56)16
Sarma = la pohva - posuda
= 4 - 0

PostPostano: 10:16 čet, 11. 11. 2010    Naslov: Citirajte i odgovorite

Napisite program koji s tipkovnice ucitava znamenke binarnog broja pocevsi od krajnje lijeve. Ucitavanje prestaje kad se
unese broj koji nije 0 ili 1. Program treba ispisati koji dekadski broj ima takav binarni zapis. Primjerice, ukoliko je unos bio
100112, program treba ispisati 19.

ne znam kako da napravim da ucitava krajnju lijevu, jer na pocetku ne znam koliko ce ih biti, a treba mi broj za potenciju od 2. ako stavim brojac da ih prebrojim, unistim vrijednosti ucitanih brojeva. pomoc, molim! :-)
Napisite program koji s tipkovnice ucitava znamenke binarnog broja pocevsi od krajnje lijeve. Ucitavanje prestaje kad se
unese broj koji nije 0 ili 1. Program treba ispisati koji dekadski broj ima takav binarni zapis. Primjerice, ukoliko je unos bio
100112, program treba ispisati 19.

ne znam kako da napravim da ucitava krajnju lijevu, jer na pocetku ne znam koliko ce ih biti, a treba mi broj za potenciju od 2. ako stavim brojac da ih prebrojim, unistim vrijednosti ucitanih brojeva. pomoc, molim! Smile


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


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

PostPostano: 10:49 čet, 11. 11. 2010    Naslov: Citirajte i odgovorite

Mozes ih staviti u niz i koristiti unatrag ili sloziti kao da ide s desna na lijevo, pa na kraju izvrnuti redoslijed (slicno provjeri je li broj palindrom, sto se radi na predavanju).
Mozes ih staviti u niz i koristiti unatrag ili sloziti kao da ide s desna na lijevo, pa na kraju izvrnuti redoslijed (slicno provjeri je li broj palindrom, sto se radi na predavanju).



_________________
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
Vila Zvončica
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 31. 01. 2008. (18:51:58)
Postovi: (17)16
Sarma = la pohva - posuda
= 1 - 0

PostPostano: 11:50 čet, 11. 11. 2010    Naslov: Citirajte i odgovorite

A mozes razmisljati kao kod Hornera... Krenes od p=0, i u svakom ucitavanju u kojem ucitas broj 0 ili 1 pomnozis p sa 2 i dodas tu novu znamenku. Kad ucitas broj koji nije 0 ili 1 stanes, a p je upravo ono sta ti treba. Nije potrebno koristit nizove.
A mozes razmisljati kao kod Hornera... Krenes od p=0, i u svakom ucitavanju u kojem ucitas broj 0 ili 1 pomnozis p sa 2 i dodas tu novu znamenku. Kad ucitas broj koji nije 0 ili 1 stanes, a p je upravo ono sta ti treba. Nije potrebno koristit nizove.


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


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

PostPostano: 13:49 čet, 11. 11. 2010    Naslov: Citirajte i odgovorite

Yes, to sam skroz zaboravio navesti. :oops: To je zapravo najbolji nacin.
Yes, to sam skroz zaboravio navesti. Embarassed To je zapravo najbolji nacin.



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


Pridružen/a: 17. 10. 2010. (20:15:17)
Postovi: (56)16
Sarma = la pohva - posuda
= 4 - 0

PostPostano: 15:03 pet, 12. 11. 2010    Naslov: Citirajte i odgovorite

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

int main (){

int a, i, br1, broj;

br1=0;
do {
scanf ("%d", &a);
if (a==1 || a==0) br1=br1*10+a;
} while (a==1 || a==0);

broj=0;
for (i=0; br1!=0; i=i+1){
broj=broj+(br1%10)*2^i;
br1=br1/10;
}

printf ("%d\n", broj);
system ("pause");
return 0;

}
[/code:1]

jel bi to nesto ovak trebalo bit? i gdje je greska, ispisuje krive brojeve?
Kod:

#include <stdio.h>

int main (){

int a, i, br1, broj;

br1=0;
do {
    scanf ("%d", &a);
    if (a==1 || a==0) br1=br1*10+a;
} while (a==1 || a==0);

broj=0;
for (i=0; br1!=0; i=i+1){
      broj=broj+(br1%10)*2^i;
      br1=br1/10;     
}

printf ("%d\n", broj);
system ("pause");
return 0;     

}


jel bi to nesto ovak trebalo bit? i gdje je greska, ispisuje krive brojeve?


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


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

PostPostano: 16:07 pet, 12. 11. 2010    Naslov: Citirajte i odgovorite

Nije dobro.

Prvo, cemu sluzi ona zavrzlama s dekadskim sustavom? Hoces li stvarno broj 4096 (binarno: "jedan" i 12 "nula") pamtiti kao "tisucu milijardi"? U koji [tt]int[/tt] ce ti to stati?

Drugo, cemu sluzi druga petlja? Ta ne mijenja nikakav redoslijed.

I, trece, sto racuna izraz [tt]2^i[/tt] (ovo se ispitivalo na proslom kolokviju)?
Nije dobro.

Prvo, cemu sluzi ona zavrzlama s dekadskim sustavom? Hoces li stvarno broj 4096 (binarno: "jedan" i 12 "nula") pamtiti kao "tisucu milijardi"? U koji int ce ti to stati?

Drugo, cemu sluzi druga petlja? Ta ne mijenja nikakav redoslijed.

I, trece, sto racuna izraz 2^i (ovo se ispitivalo na proslom kolokviju)?



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


Pridružen/a: 25. 06. 2009. (22:59:23)
Postovi: (69)16
Spol: žensko
Sarma = la pohva - posuda
10 = 11 - 1

PostPostano: 13:26 sub, 13. 11. 2010    Naslov: Citirajte i odgovorite

može još jedan zadatak s nizovima??????????

Program učitava prirodni broj n<31, te niz od n cijelih brojeva. Program treba učitane brojeve ispisati padajuće sortirano prema sumi znamenaka u bazi 9; ako neka dva različita broja imaju jednaku sumu znamenaka u bazi 9.

moje rješenje ne radi dobro. ak može komentar na to što zapravo ne valja u kodu.



[latex]#include<stdio.h>

int main(void){
int x[31];
int n, i, j, temp, z, w, suma1=0, suma2=0;
scanf("%d", &n);
for(i=0; i<n; i++){
scanf("%d", &x[i]);
}
for(i=0; i<n-1; i++){
z=x[i];
if(z<0)z=-z;
while(z>0){
suma1+=(z%9);
z/=9;}

for(j=i+1; j<n; j++);
w=x[j];
if(w<0)w=-w;
while(w>0){
suma2+=(w%9);
w/=9;}

if(suma1 < suma2){
temp=x[i];
x[i]=x[j];
x[j]=temp;}
if(suma1==suma2){
if(x[i]<x[j]){
temp=x[i];
x[i]=x[j];
x[j]=temp;}
}}
for(i=0; i<n; i++){
printf("%d ", x[i]);}

scanf("%%");
return 0;
}
[/latex]
može još jedan zadatak s nizovima??????????

Program učitava prirodni broj n<31, te niz od n cijelih brojeva. Program treba učitane brojeve ispisati padajuće sortirano prema sumi znamenaka u bazi 9; ako neka dva različita broja imaju jednaku sumu znamenaka u bazi 9.

moje rješenje ne radi dobro. ak može komentar na to što zapravo ne valja u kodu.





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


Pridružen/a: 17. 10. 2010. (20:15:17)
Postovi: (56)16
Sarma = la pohva - posuda
= 4 - 0

PostPostano: 14:06 sub, 13. 11. 2010    Naslov: Citirajte i odgovorite

[quote="vsego"]Nije dobro.

Prvo, cemu sluzi ona zavrzlama s dekadskim sustavom? Hoces li stvarno broj 4096 (binarno: "jedan" i 12 "nula") pamtiti kao "tisucu milijardi"? U koji [tt]int[/tt] ce ti to stati?

Drugo, cemu sluzi druga petlja? Ta ne mijenja nikakav redoslijed.

I, trece, sto racuna izraz [tt]2^i[/tt] (ovo se ispitivalo na proslom kolokviju)?[/quote]

kuzim prve dvije primjedbe, ali nije mi jasno trece, zasto nije okej napisati 2^i? kako da drukcije zapisem te rastuce potencije?
vsego (napisa):
Nije dobro.

Prvo, cemu sluzi ona zavrzlama s dekadskim sustavom? Hoces li stvarno broj 4096 (binarno: "jedan" i 12 "nula") pamtiti kao "tisucu milijardi"? U koji int ce ti to stati?

Drugo, cemu sluzi druga petlja? Ta ne mijenja nikakav redoslijed.

I, trece, sto racuna izraz 2^i (ovo se ispitivalo na proslom kolokviju)?


kuzim prve dvije primjedbe, ali nije mi jasno trece, zasto nije okej napisati 2^i? kako da drukcije zapisem te rastuce potencije?


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


Pridružen/a: 15. 05. 2010. (18:46:07)
Postovi: (164)16
Sarma: -

PostPostano: 14:15 sub, 13. 11. 2010    Naslov: Citirajte i odgovorite

Ne znam jesi li primijetila, ali "latex" tag ti uoćne ne funkcionira i zapravo skoro ništa ne prikazuje. (Zato sam ja u drugom topicu mislio da si napisala dva koda, a ne tri.)
Koristi "code" tag, ljepše je. :)

Imaš pogrešan pristup programu. Malo je nezgodno u istom trenutku računati sume znamenki i sortirati brojeve, barem po ovom algoritmu.
Također, druga for petlja ne radi ama baš ništa (osim što troši vrijeme). Trebalo je maknuti ';' i staviti '{' i '}' na potrebna mjesta.
Uz to, na početku su sume (suma1 i suma2) postavljene na nulu, no što kada s istom varijablom poslije računaš sumu drugog broja? Trebalo bi ponovo postaviti na nulu.

Malo sam korigirao tvoj kod, a sada ću objasniti što radim s njim. :)
Prvo, u poseban niz pohranjujem sumu znamenki svakog broja u bazi 9. Dakle, ako je x[i] traženi broj, tada je njegova suma označena sa suma[i]. Zatim standardnim algoritmom (kojeg, vidim, znaš) sortiramo brojeve. Pritom pazimo na sljedeću stvar: ako smo došli do koraka da zamijenimo dva broja, x[i] i x[j], tada obavezno moramo zamijeniti i njihove sume, suma[i] i suma[j]. Naime, jedan broj možemo poslije uspoređivati s drugim premda je već bio zamijenjen, stoga mu suma mora biti očuvana.

Usput, neka te ne zbuni manjak vitičastih zagrada kraj određenih petlji. Poznato je da, ako nema zagradi uz petlju, tada će se petlja odnositi samo na jednu naredbu, i to na naredbu koja slijedi odmah nakon petlje.
Primjerice:

[code:1]for(i=0; i<n; i++)
scanf("%d", &x[i]);[/code:1]

Poseban slučaj je "if" i "else if".

[code:1]for(...)
if(uvjet-1)
{
...
}
else if(uvjet-2)
{
...
}
else if(uvjet-3)
{
...
}
...
else if(uvjet-n)
{
...
}[/code:1]

No, pogledaj kako sam napravio poravnanja u kodu tako da vizualno uočiš što spada pod određenom petljom kada nema vitičastih zagrada. :)


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

int main(void)
{
int x[31];
int n, i, j, temp, z, suma[31]={0};
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &x[i]);
for(i=0; i<n; i++)
{
z=x[i];
if(z<0)z=-z;
while(z>0)
{
suma[i]+=(z%9);
z/=9;
}
}
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(suma[i]<suma[j])
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
temp=suma[i];
suma[i]=suma[j];
suma[j]=temp;
}
else if(suma[i]==suma[j]&&x[i]<x[j])
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
temp=suma[i];
suma[i]=suma[j];
suma[j]=temp;
}
for(i=0; i<n; i++)
printf("%d ", x[i]);
return 0;
}
[/code:1]

Usput, nisi napisala do kraja što ako dva broja imaju jednaku sumu. Po kodu pretpostavljam da prije dolazi broj koji je veći u originalnom zapisu, pa ću tako i ostaviti u kodu.

I još nešto: moram te pitati čemu služi linija "scanf("%%");"? Možda za zaustavljanje programa? Nisam prije čuo za nju, pa ne znam čemu služi.



Buki, u kodu ne možeš pisati "2^i", program to neće razumjeti kako treba.
Potenciju možeš izračunati tako da u for petlji neki broj (prethodno postavljen na vrijednost 1) množiš brojem 2 i puta.

[code:1]int i, j, S=1;
...
for(j=0;j<i;i++)
S*=2;[/code:1]

Drugi način je da uključiš math biblioteku i funkciju "double pow(double x, double y)", pri čemu je x baza, a y eksponent.

[code:1]#include<stdio.h>
#include<math.h>
int main()
{
int i, S;
...
S=pow(2,i);
...
}[/code:1]

Prvi način je vjerovatno bolji, naravno, ako su baza i eksponent cijeli brojevi.
Ne znam jesi li primijetila, ali "latex" tag ti uoćne ne funkcionira i zapravo skoro ništa ne prikazuje. (Zato sam ja u drugom topicu mislio da si napisala dva koda, a ne tri.)
Koristi "code" tag, ljepše je. Smile

Imaš pogrešan pristup programu. Malo je nezgodno u istom trenutku računati sume znamenki i sortirati brojeve, barem po ovom algoritmu.
Također, druga for petlja ne radi ama baš ništa (osim što troši vrijeme). Trebalo je maknuti ';' i staviti '{' i '}' na potrebna mjesta.
Uz to, na početku su sume (suma1 i suma2) postavljene na nulu, no što kada s istom varijablom poslije računaš sumu drugog broja? Trebalo bi ponovo postaviti na nulu.

Malo sam korigirao tvoj kod, a sada ću objasniti što radim s njim. Smile
Prvo, u poseban niz pohranjujem sumu znamenki svakog broja u bazi 9. Dakle, ako je x[i] traženi broj, tada je njegova suma označena sa suma[i]. Zatim standardnim algoritmom (kojeg, vidim, znaš) sortiramo brojeve. Pritom pazimo na sljedeću stvar: ako smo došli do koraka da zamijenimo dva broja, x[i] i x[j], tada obavezno moramo zamijeniti i njihove sume, suma[i] i suma[j]. Naime, jedan broj možemo poslije uspoređivati s drugim premda je već bio zamijenjen, stoga mu suma mora biti očuvana.

Usput, neka te ne zbuni manjak vitičastih zagrada kraj određenih petlji. Poznato je da, ako nema zagradi uz petlju, tada će se petlja odnositi samo na jednu naredbu, i to na naredbu koja slijedi odmah nakon petlje.
Primjerice:

Kod:
for(i=0; i<n; i++)
   scanf("%d", &x[i]);


Poseban slučaj je "if" i "else if".

Kod:
for(...)
   if(uvjet-1)
   {
      ...
   }
   else if(uvjet-2)
   {
      ...
   }
   else if(uvjet-3)
   {
      ...
   }
   ...
   else if(uvjet-n)
   {
      ...
   }


No, pogledaj kako sam napravio poravnanja u kodu tako da vizualno uočiš što spada pod određenom petljom kada nema vitičastih zagrada. Smile


Kod:
#include<stdio.h>

int main(void)
{
   int x[31];
   int n, i, j, temp, z, suma[31]={0};
   scanf("%d", &n);
   for(i=0; i<n; i++)
      scanf("%d", &x[i]);
   for(i=0; i<n; i++)
   {
      z=x[i];
      if(z<0)z=-z;
      while(z>0)
      {
         suma[i]+=(z%9);
         z/=9;
      }
   }
   for(i=0;i<n-1;i++)
      for(j=i+1;j<n;j++)
         if(suma[i]<suma[j])
         {
            temp=x[i];
            x[i]=x[j];
            x[j]=temp;
            temp=suma[i];
            suma[i]=suma[j];
            suma[j]=temp;
         }
         else if(suma[i]==suma[j]&&x[i]<x[j])
         {
            temp=x[i];
            x[i]=x[j];
            x[j]=temp;
            temp=suma[i];
            suma[i]=suma[j];
            suma[j]=temp;
         }
   for(i=0; i<n; i++)
      printf("%d ", x[i]);
   return 0;
}


Usput, nisi napisala do kraja što ako dva broja imaju jednaku sumu. Po kodu pretpostavljam da prije dolazi broj koji je veći u originalnom zapisu, pa ću tako i ostaviti u kodu.

I još nešto: moram te pitati čemu služi linija "scanf("%%");"? Možda za zaustavljanje programa? Nisam prije čuo za nju, pa ne znam čemu služi.



Buki, u kodu ne možeš pisati "2^i", program to neće razumjeti kako treba.
Potenciju možeš izračunati tako da u for petlji neki broj (prethodno postavljen na vrijednost 1) množiš brojem 2 i puta.

Kod:
int i, j, S=1;
...
for(j=0;j<i;i++)
   S*=2;


Drugi način je da uključiš math biblioteku i funkciju "double pow(double x, double y)", pri čemu je x baza, a y eksponent.

Kod:
#include<stdio.h>
#include<math.h>
int main()
{
   int i, S;
   ...
   S=pow(2,i);
   ...
}


Prvi način je vjerovatno bolji, naravno, ako su baza i eksponent cijeli brojevi.


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


Pridružen/a: 17. 10. 2010. (20:15:17)
Postovi: (56)16
Sarma = la pohva - posuda
= 4 - 0

PostPostano: 23:56 sub, 13. 11. 2010    Naslov: Citirajte i odgovorite

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

int main (){

int a, br1, broj, potencija;

br1=0;
potencija=1;
do {
scanf ("%d", &a);
if (a==1 || a==0) {
potencija=potencija*2;
br1=br1+a*(potencija/2);
}
} while (a==1 || a==0);

broj=0;
while (br1!=0){
broj=broj+(br1%2)*potencija/2;
potencija=potencija/2;
br1=br1/2;
}

printf ("%d\n", broj);
system ("pause");
return 0;

}
[/code:1]

jel greska sto mi kad prvi upisan broj nije ni 0 ni 1 izbaci nulu ili to ne moram mjenjati?
Kod:

#include <stdio.h>

int main (){

int a, br1, broj, potencija;

br1=0;
potencija=1;
do {
    scanf ("%d", &a);
    if (a==1 || a==0) {
             potencija=potencija*2;
             br1=br1+a*(potencija/2);
             }
} while (a==1 || a==0);

broj=0;
while (br1!=0){     
      broj=broj+(br1%2)*potencija/2;
      potencija=potencija/2;
      br1=br1/2;
      }   

printf ("%d\n", broj);
system ("pause");
return 0;     

}


jel greska sto mi kad prvi upisan broj nije ni 0 ni 1 izbaci nulu ili to ne moram mjenjati?


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


Pridružen/a: 15. 05. 2010. (18:46:07)
Postovi: (164)16
Sarma: -

PostPostano: 0:22 ned, 14. 11. 2010    Naslov: Citirajte i odgovorite

Pretpostavljam da možeš ostaviti nulu u tom slučaju. Možda i nema takvih "zlobnih" test primjera, pretpostavljam da su test primjeri takvi da će prva znamenka sigurno biti 0 ili 1 (tj. da ćeš sigurno učitati neki broj u binarnom zapisu).
Pretpostavljam da možeš ostaviti nulu u tom slučaju. Možda i nema takvih "zlobnih" test primjera, pretpostavljam da su test primjeri takvi da će prva znamenka sigurno biti 0 ili 1 (tj. da ćeš sigurno učitati neki broj u binarnom zapisu).


[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.
Idite na 1, 2, 3, 4, 5, 6, 7  Sljedeće
Stranica 1 / 7.

 
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