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

Pomoc oko zadatka
WWW:
Idite na Prethodno  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
smrtTrokutima
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 12. 2010. (13:47:58)
Postovi: (7)16
Spol: žensko
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 22:04 sub, 15. 1. 2011    Naslov: x Citirajte i odgovorite

Imam tu 2 zadatka s nizovima... dosta sam ih provjeravala i popravljala al mi ih ne prihvaća... meni izgledaju sasvim u redu... jedino ako razmak nakon zadnjeg broja ne prihvaća... a kako mora biti razmak između brojeva, ne znam kako zadnji maknuti... ?
pa ako netko ima vremena, puno bi mi pomoglo... :D
Imam tu 2 zadatka s nizovima... dosta sam ih provjeravala i popravljala al mi ih ne prihvaća... meni izgledaju sasvim u redu... jedino ako razmak nakon zadnjeg broja ne prihvaća... a kako mora biti razmak između brojeva, ne znam kako zadnji maknuti... ?
pa ako netko ima vremena, puno bi mi pomoglo... Very Happy





Nizovi 3.c
 Description:

Download
 Filename:  Nizovi 3.c
 Filesize:  1.44 KB
 Downloaded:  196 Time(s)


Nizovi 1.c
 Description:

Download
 Filename:  Nizovi 1.c
 Filesize:  1.17 KB
 Downloaded:  188 Time(s)

[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: 7:15 ned, 16. 1. 2011    Naslov: Citirajte i odgovorite

U [tt]Nizovi 1.c[/tt] se varijabla [tt]max[/tt] inicijalizira na krivu vrijednost. Recimo da je ucitan niz niz 17, 9, 19, 0, 3. Tada ce program inicijalizirati [tt]max[/tt] na vrijednost 17 i onda ce ispasti da je taj 17 najveci element niza djeljiv s 9 (a on uopce nije djeljiv s 9).

U [tt]Nizovi 3.c[/tt] je zanemaren dio zadatka koji kaze "ako neka dva različita broja imaju jednaku sumu znamenaka u bazi 6, onda ih uspoređujete na uobičajeni način".

Ako nemas ideju kako rijesiti te stvari, sve su objasnjene na Forumu, pa treba samo malo potraziti.

Ubuduce, molim ne koristiti attachmente za ovakve stvari, nego kod zapakirajte u [tt][co[i][/i]de]...[/code][/tt]-blok.
U Nizovi 1.c se varijabla max inicijalizira na krivu vrijednost. Recimo da je ucitan niz niz 17, 9, 19, 0, 3. Tada ce program inicijalizirati max na vrijednost 17 i onda ce ispasti da je taj 17 najveci element niza djeljiv s 9 (a on uopce nije djeljiv s 9).

U Nizovi 3.c je zanemaren dio zadatka koji kaze "ako neka dva različita broja imaju jednaku sumu znamenaka u bazi 6, onda ih uspoređujete na uobičajeni način".

Ako nemas ideju kako rijesiti te stvari, sve su objasnjene na Forumu, pa treba samo malo potraziti.

Ubuduce, molim ne koristiti attachmente za ovakve stvari, nego kod zapakirajte u [code]...[/code]-blok.



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


Pridružen/a: 13. 11. 2011. (17:40:12)
Postovi: (74)16
Spol: žensko
Sarma = la pohva - posuda
10 = 20 - 10

PostPostano: 18:31 sub, 24. 11. 2012    Naslov: Citirajte i odgovorite

Zadatak iz skripte (vježbe) 8.4.8. Napišite program koji učitava n prirodnih brojeva, te ispisuje produkt prostih.

Muči me zašto ako umjesto j ponovno upotrijebim i, program ne radi ispravno?

[code:1]#include <stdio.h>
int main (){

int n, i, x, prod=1, j;

printf("upisite prirodan broj n: \n");
scanf("%d", &n);

for(i=1; i<=n; i++){

int prost=0;

printf("unesite broj: \n");
scanf("%d", &x);

for(j=2; j<x; j++){
if(x%j==0) ++prost;}

if(prost==0) prod*=x;
}

printf("produkt prostih brojeva je %d", prod);

return 0;}[/code:1]
Zadatak iz skripte (vježbe) 8.4.8. Napišite program koji učitava n prirodnih brojeva, te ispisuje produkt prostih.

Muči me zašto ako umjesto j ponovno upotrijebim i, program ne radi ispravno?

Kod:
#include <stdio.h>
int main (){

int n, i, x, prod=1, j;

printf("upisite prirodan broj n: \n");
scanf("%d", &n);

for(i=1; i<=n; i++){

int prost=0;

printf("unesite broj: \n");
scanf("%d", &x);

    for(j=2; j<x; j++){
    if(x%j==0) ++prost;}

if(prost==0) prod*=x;
}

printf("produkt prostih brojeva je %d", prod);

return 0;}


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


Pridružen/a: 16. 11. 2012. (20:19:56)
Postovi: (ED)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
12 = 15 - 3

PostPostano: 19:00 sub, 24. 11. 2012    Naslov: Citirajte i odgovorite

Pa imaš petlju unutar petlje, kad je i=1, ovaj unutarnji "j" brojač ide od 1 do j<x odnosno x-1. Kad dva puta koristiš "i", onda kod prvog prolaza, kad je i=1 za prvu petlju, onda u drugoj petlji "i" postaje x-1 tj. odvrti se druga petlja do kraja, a zatim nastupa opet gornja/prva for petlja koja povećava "i" za jedan, a to je zbog unutarnje petlje (x-1) + 1 pa je onda u drugom ponavljanju glavne petlje i=x, a ne 2.
Pa imaš petlju unutar petlje, kad je i=1, ovaj unutarnji "j" brojač ide od 1 do j<x odnosno x-1. Kad dva puta koristiš "i", onda kod prvog prolaza, kad je i=1 za prvu petlju, onda u drugoj petlji "i" postaje x-1 tj. odvrti se druga petlja do kraja, a zatim nastupa opet gornja/prva for petlja koja povećava "i" za jedan, a to je zbog unutarnje petlje (x-1) + 1 pa je onda u drugom ponavljanju glavne petlje i=x, a ne 2.


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


Pridružen/a: 13. 11. 2011. (17:40:12)
Postovi: (74)16
Spol: žensko
Sarma = la pohva - posuda
10 = 20 - 10

PostPostano: 20:54 sub, 24. 11. 2012    Naslov: Citirajte i odgovorite

Praktični kolokvij, zad.6 Napišite program koji učitava prirodni broj n ≤ 10. Program prvo treba provjeriti je li n ≤ 10. Ako je, onda treba ispisati
najmanji prirodni broj sa svojstvom da pri dijeljenju s 2 daje ostatak 1, pri dijeljenju s 3 daje ostatak 2, pri dijeljenju s 4
daje ostatak 3, . . . , pri dijeljenju s n daje ostatak n − 1. Ako je n > 10, treba ispisati odgovarajuću poruku.

Zanemarivši što ovdje nisam ispisala poruku za n>10, gdje griješim? Program mi se beskonačno vrti i ne znam kako ubaciti break ako mi nađe taj i...


[code:1]#include <stdio.h>
int main (void){

int n, i, j, k=1;
scanf("%d", &n);

if(n<=10){

for(i=1; ; i++){

for(j=2; j<=n; j++){

if(i%j==(j-1)) ++k;}

if(k==n)
printf("%d", i); }
}

return 0;}[/code:1]
Praktični kolokvij, zad.6 Napišite program koji učitava prirodni broj n ≤ 10. Program prvo treba provjeriti je li n ≤ 10. Ako je, onda treba ispisati
najmanji prirodni broj sa svojstvom da pri dijeljenju s 2 daje ostatak 1, pri dijeljenju s 3 daje ostatak 2, pri dijeljenju s 4
daje ostatak 3, . . . , pri dijeljenju s n daje ostatak n − 1. Ako je n > 10, treba ispisati odgovarajuću poruku.

Zanemarivši što ovdje nisam ispisala poruku za n>10, gdje griješim? Program mi se beskonačno vrti i ne znam kako ubaciti break ako mi nađe taj i...


Kod:
#include <stdio.h>
int main (void){

int n, i, j, k=1;
scanf("%d", &n);

if(n<=10){
   
    for(i=1; ; i++){
       
    for(j=2; j<=n; j++){
       
        if(i%j==(j-1)) ++k;}
       
    if(k==n)
        printf("%d", i); }
}

return 0;}


[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: 21:33 sub, 24. 11. 2012    Naslov: Citirajte i odgovorite

Problem je u tome što za svaki [tt]i[/tt] trebaš koristiti brojač postavljen na početku, odnosno da na početku svakog koraka [tt]for[/tt] petlje imaš [tt]k=1[/tt]. Naime, za svaki broj [tt]i[/tt] provjeravaš hoće li svi brojevi iz skupa [tex]\left\{ 2, 3, ..., n-1 \right\}[/tex] zadovoljavati tvoje svojstvo - dakle, ima smisla staviti uvjet [tt]k=1[/tt] i provjeriti jesmo li ga povećali točno [tex]n-1[/tex] puta. No, jednom povećani [tt]k[/tt] koji nije zadovoljavao uvjet [tt]k==n[/tt] za idući broj [tt]i[/tt] nije postavljen na [tex]1[/tex], pa, ako se naš uvjet ispuni, program to neće prepoznati - dapače, nastavit će dalje i tako će upasti u beskonačnu petlju. Uz to, riskiraš da za rješenje ispiše broj koji uopće ne zadovoljava dano svojstvo (ali tada, kada bi napravila traženi prekid, bi barem izašao iz petlje :D).
(Nadam se da sam otprilike objasnio u čemu je problem.)
A što se tiče prekida u slučaju ispisa, možeš jednostavno iskoristiti naredbu [tt]break;[/tt] koja te automatski izbacuje iz jedne (najdublje) petlje u kojoj se nalaziš. Ako te muči korištenje te naredbe, možeš koristiti početni parametar i postaviti ga, recimo, kao [tt]t=0[/tt] i taj broj povećati za [tex]1[/tex] jednom kada napraviš ispis. Tada prva [tt]for[/tt] petlja, koja nema uvjet, mora imati uvjet [tt]t==0[/tt].

Nakon ove dvije izmjene program bi ti trebao raditi. :)
Problem je u tome što za svaki i trebaš koristiti brojač postavljen na početku, odnosno da na početku svakog koraka for petlje imaš k=1. Naime, za svaki broj i provjeravaš hoće li svi brojevi iz skupa [tex]\left\{ 2, 3, ..., n-1 \right\}[/tex] zadovoljavati tvoje svojstvo - dakle, ima smisla staviti uvjet k=1 i provjeriti jesmo li ga povećali točno [tex]n-1[/tex] puta. No, jednom povećani k koji nije zadovoljavao uvjet k==n za idući broj i nije postavljen na [tex]1[/tex], pa, ako se naš uvjet ispuni, program to neće prepoznati - dapače, nastavit će dalje i tako će upasti u beskonačnu petlju. Uz to, riskiraš da za rješenje ispiše broj koji uopće ne zadovoljava dano svojstvo (ali tada, kada bi napravila traženi prekid, bi barem izašao iz petlje Very Happy).
(Nadam se da sam otprilike objasnio u čemu je problem.)
A što se tiče prekida u slučaju ispisa, možeš jednostavno iskoristiti naredbu break; koja te automatski izbacuje iz jedne (najdublje) petlje u kojoj se nalaziš. Ako te muči korištenje te naredbe, možeš koristiti početni parametar i postaviti ga, recimo, kao t=0 i taj broj povećati za [tex]1[/tex] jednom kada napraviš ispis. Tada prva for petlja, koja nema uvjet, mora imati uvjet t==0.

Nakon ove dvije izmjene program bi ti trebao raditi. Smile


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


Pridružen/a: 13. 11. 2011. (17:40:12)
Postovi: (74)16
Spol: žensko
Sarma = la pohva - posuda
10 = 20 - 10

PostPostano: 21:46 sub, 24. 11. 2012    Naslov: Citirajte i odgovorite

Možeš li mi mooolim te reći gdje onda da popravim? Mučim se s tim već satima. Jedino što sam ispravila je da sam stavila odmah iza prvog for-a k=1; ali dalje ne vidim kako popraviti..
Možeš li mi mooolim te reći gdje onda da popravim? Mučim se s tim već satima. Jedino što sam ispravila je da sam stavila odmah iza prvog for-a k=1; ali dalje ne vidim kako popraviti..


[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: 22:00 sub, 24. 11. 2012    Naslov: Citirajte i odgovorite

Nema problema. :) Vidim da nisam bio jasan maloprije jer sam riječima pokušao objasniti što da popraviš. Ali može i na tvom kodu. ;)
Evo dvije verzije prekida koje sam ti objašnjavao. Prva je najkraća i najjednostavnija, ali druga je ako ne razumiješ sasvim kako postupa naredba [tt]break;[/tt] i kako je pravilno iskoristiti, pa želiš biti sasvim sigurna s drugim načinom. :)

[quote]#include <stdio.h>
int main (void){

int n, i, j, k=1;
scanf("%d", &n);

if(n<=10){

for(i=1; ; i++){

[color=red]k=1;[/color]

for(j=2; j<=n; j++){

if(i%j==(j-1)) ++k;}

if(k==n)
[color=red]{[/color]
printf("%d", i);
[color=red]break; }[/color]
}
}

return 0;}[/quote]


[quote]#include <stdio.h>
int main (void){

int n, i, j, k=1[color=red], t=0[/color];
scanf("%d", &n);

if(n<=10){

for(i=1; [color=red]t==0[/color] ; i++){

[color=red]k=1;[/color]

for(j=2; j<=n; j++){

if(i%j==(j-1)) ++k;}

if(k==n)
[color=red]{[/color]
printf("%d", i);
[color=red]t++; }[/color]
}
}

return 0;}[/quote]

Nadam se da te neće zbuniti to što sam code blok pretvorio u quote blok - to sam napravio da mogu tekst obojati crvenom bojom, a drugačije ne znam kako se radi. Tako da ti je sada kod postao i malo ružniji jer se ne vide razmaci i proredi koje si prije pisala. :? Isprike za to!
Pripazi još samo kako si prije imala naredbu [tt]printf[/tt] i zagradu [tt]}[/tt] u jednom redu. Sada više ne mogu biti u istom redu, no primijeti da ti je to iduća zagrada koja nije obojana crvenom bojom. ;)
Nema problema. Smile Vidim da nisam bio jasan maloprije jer sam riječima pokušao objasniti što da popraviš. Ali može i na tvom kodu. Wink
Evo dvije verzije prekida koje sam ti objašnjavao. Prva je najkraća i najjednostavnija, ali druga je ako ne razumiješ sasvim kako postupa naredba break; i kako je pravilno iskoristiti, pa želiš biti sasvim sigurna s drugim načinom. Smile

Citat:
#include <stdio.h>
int main (void){

int n, i, j, k=1;
scanf("%d", &n);

if(n⇐10){

for(i=1; ; i++){

k=1;

for(j=2; j⇐n; j++){

if(i%j==(j-1)) ++k;}

if(k==n)
{
printf("%d", i);
break; }
}
}

return 0;}



Citat:
#include <stdio.h>
int main (void){

int n, i, j, k=1, t=0;
scanf("%d", &n);

if(n⇐10){

for(i=1; t==0 ; i++){

k=1;

for(j=2; j⇐n; j++){

if(i%j==(j-1)) ++k;}

if(k==n)
{
printf("%d", i);
t++; }
}
}

return 0;}


Nadam se da te neće zbuniti to što sam code blok pretvorio u quote blok - to sam napravio da mogu tekst obojati crvenom bojom, a drugačije ne znam kako se radi. Tako da ti je sada kod postao i malo ružniji jer se ne vide razmaci i proredi koje si prije pisala. Confused Isprike za to!
Pripazi još samo kako si prije imala naredbu printf i zagradu } u jednom redu. Sada više ne mogu biti u istom redu, no primijeti da ti je to iduća zagrada koja nije obojana crvenom bojom. Wink


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


Pridružen/a: 31. 10. 2009. (11:56:09)
Postovi: (23)16
Sarma = la pohva - posuda
-2 = 1 - 3

PostPostano: 16:59 uto, 27. 11. 2012    Naslov: zadatak 5 Citirajte i odgovorite

Mozhe li mi, molim vas,netko pojasniti ovaj zadatak?
Napišite program koji učitava 8 cijelih brojeva, te ispisuje svakog koji je djeljiv s prethodno upisanim (prvi se nikad ne ispisuje).
Ispisane brojeve odvojite razmacima (program ih smijete ispisivati i za vrijeme učitavanja), a ako traženih brojeva nema, program ne smije ništa ispisati.

Uputa: Program riješite pomoću petlje (iako se može i učitavanjem 8 varijabli). Pazite na dijeljenje s nulom!

Koji je drugi nachin osim uchitavanja 8 varijabli ako je prva rechenica "Napishite program koji uchitava 8 cijelih brojeva.." I na koji bi se tochno nachin mogao rijeshiti pomochu petlje bez da se koristim nizovima?
Mozhe li mi, molim vas,netko pojasniti ovaj zadatak?
Napišite program koji učitava 8 cijelih brojeva, te ispisuje svakog koji je djeljiv s prethodno upisanim (prvi se nikad ne ispisuje).
Ispisane brojeve odvojite razmacima (program ih smijete ispisivati i za vrijeme učitavanja), a ako traženih brojeva nema, program ne smije ništa ispisati.

Uputa: Program riješite pomoću petlje (iako se može i učitavanjem 8 varijabli). Pazite na dijeljenje s nulom!

Koji je drugi nachin osim uchitavanja 8 varijabli ako je prva rechenica "Napishite program koji uchitava 8 cijelih brojeva.." I na koji bi se tochno nachin mogao rijeshiti pomochu petlje bez da se koristim nizovima?


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


Pridružen/a: 11. 09. 2008. (10:54:06)
Postovi: (370)16
Sarma = la pohva - posuda
-29 = 108 - 137
Lokacija: Pula

PostPostano: 17:10 uto, 27. 11. 2012    Naslov: Citirajte i odgovorite

ucitas prvi broj(varijabla prethodni) i zatim imas for petlju u kojoj ucitavas preostalih 7

u for petlji prvo ucitas novi broj (varijabla trenutni)
onda pogledas jel prethodni dijeli trenutni, ako da, ispises trenutni
zatim, prethodni=trenutni i to je kraj petlje

nadam se da je jasno i da nisam nesto fulao :D
ucitas prvi broj(varijabla prethodni) i zatim imas for petlju u kojoj ucitavas preostalih 7

u for petlji prvo ucitas novi broj (varijabla trenutni)
onda pogledas jel prethodni dijeli trenutni, ako da, ispises trenutni
zatim, prethodni=trenutni i to je kraj petlje

nadam se da je jasno i da nisam nesto fulao Very Happy



_________________
Mario Berljafa
[Vrh]
Korisnički profil Pošaljite privatnu poruku
nuclear
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 11. 2011. (17:40:12)
Postovi: (74)16
Spol: žensko
Sarma = la pohva - posuda
10 = 20 - 10

PostPostano: 19:14 sub, 1. 12. 2012    Naslov: Citirajte i odgovorite

Tako ti puno hvala Phoenix!!! Jako me ljuti to što u programiranju ako samo jednu najmanju grešku napraviš, program ne radi a grešku ćeš tražiti satima i danima :/
Tako ti puno hvala Phoenix!!! Jako me ljuti to što u programiranju ako samo jednu najmanju grešku napraviš, program ne radi a grešku ćeš tražiti satima i danima Ehm?


[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: 19:28 sub, 1. 12. 2012    Naslov: Citirajte i odgovorite

[quote="nuclear"]Jako me ljuti to što u programiranju ako samo jednu najmanju grešku napraviš, program ne radi a grešku ćeš tražiti satima i danima :/[/quote]

Eh, da je tako samo tebi... Ali svima je tako! :D I bijes je veći kako su greške sve blesavije. :D
Eto, čari programiranja, što reći. :)
nuclear (napisa):
Jako me ljuti to što u programiranju ako samo jednu najmanju grešku napraviš, program ne radi a grešku ćeš tražiti satima i danima Ehm?


Eh, da je tako samo tebi... Ali svima je tako! Very Happy I bijes je veći kako su greške sve blesavije. Very Happy
Eto, čari programiranja, što reći. Smile


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


Pridružen/a: 02. 11. 2012. (14:08:41)
Postovi: (16)16
Sarma = la pohva - posuda
= 5 - 1

PostPostano: 18:41 ned, 9. 12. 2012    Naslov: Citirajte i odgovorite

trebam neku ideju za ovaj zadatak ako nije problem:

Napišite program koji 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 5; ako neka dva različita broja imaju jednaku sumu znamenaka u bazi 5, onda ih uspoređujete na uobičajeni način. Ispisane brojeve odvojite razmacima.

ovo je moja ideja, ali mi se cini prekomplicirano,
zar stvarno moram 4 niza koristiti za ovaj zadatak ?
ideja:
[spoiler]Ucitao sam niz koji sadrzi n brojeva, napravio jos jedan niz koji ima vrijednosti zbroja znamenaka u bazi 5 svakog broja 1. niza sa istim indeksima kao u prvom.
Sad deklariram jos dva niza, jedan koji ce mi spremati ove sume od drugog niza po velicini, a jedan koji ce za svaki spremljeni zapamtit na kojem je mjestu ta suma bila u nizu 2(odnosno 1. jer su isti). Sad bi trebalo napraviti nesto sto ce puniti clanove treceg i cetvrtog niza tako da je svaki iduci u 3. manji od prethodnog (a s time i od ostalih) i ako je jednak prethodnom mora mu indeks biti razliciti od prethodnog clana 4. niza, ako mu je razlicit provjeriti ako je clan prvog niza sa tim indeksom manji od ekvivalentnog u prvom nizu clana sa kojim je jednak..[/spoiler]
trebam neku ideju za ovaj zadatak ako nije problem:

Napišite program koji 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 5; ako neka dva različita broja imaju jednaku sumu znamenaka u bazi 5, onda ih uspoređujete na uobičajeni način. Ispisane brojeve odvojite razmacima.

ovo je moja ideja, ali mi se cini prekomplicirano,
zar stvarno moram 4 niza koristiti za ovaj zadatak ?
ideja:
Spoiler [hidden; click to show]:



_________________
Sumnjam, dakle možda jesam.
[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: 18:55 ned, 9. 12. 2012    Naslov: Citirajte i odgovorite

Dosta je jedan niz, onaj u kojem su sami brojevi. Radis obicni sort, a mijenja se -- kao i uvijek kod sortiranja -- uvjet zamjene varijabli:

[code:1]int si = sumazn(x[i], 5), sj = sumazn(x[j], 5);
if (si < sj || (si == sj && x[i] < x[j])) /* radi zamjenu */[/code:1]

Naravno, fukcija [tt]sumazn(a, b)[/tt] vraca sumu znamenaka broja [tt]a[/tt] kad je zapisan u sustavu s bazom [tt]b[/tt].

Vjerojatno varijablama [tt]si[/tt] i [tt]sj[/tt] neces zajedno zadati vrijednost, kao ja u skici, nego ces [tt]si[/tt] racunati u vanjskoj petlji, a samo [tt]sj[/tt] neposredno prije [tt]if[/tt]-a. Keep in mind, ovo je samo skica koja pokazuje ideju.

Kolicinu racunanja (cit. poziva funkcije [tt]sumazn()[/tt]) mozes smanjiti pomocnim nizom u kojem ces cuvati sume znamenaka (u bazi 5), ali tada moras paziti da istovremeno zamjenjujes elemente i tog i originalnog niza (a ne samo jednog od njih).
Dosta je jedan niz, onaj u kojem su sami brojevi. Radis obicni sort, a mijenja se – kao i uvijek kod sortiranja – uvjet zamjene varijabli:

Kod:
int si = sumazn(x[i], 5), sj = sumazn(x[j], 5);
if (si < sj || (si == sj && x[i] < x[j])) /* radi zamjenu */


Naravno, fukcija sumazn(a, b) vraca sumu znamenaka broja a kad je zapisan u sustavu s bazom b.

Vjerojatno varijablama si i sj neces zajedno zadati vrijednost, kao ja u skici, nego ces si racunati u vanjskoj petlji, a samo sj neposredno prije if-a. Keep in mind, ovo je samo skica koja pokazuje ideju.

Kolicinu racunanja (cit. poziva funkcije sumazn()) mozes smanjiti pomocnim nizom u kojem ces cuvati sume znamenaka (u bazi 5), ali tada moras paziti da istovremeno zamjenjujes elemente i tog i originalnog niza (a ne samo jednog od njih).



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


Pridružen/a: 02. 11. 2012. (14:08:41)
Postovi: (16)16
Sarma = la pohva - posuda
= 5 - 1

PostPostano: 19:33 ned, 9. 12. 2012    Naslov: Citirajte i odgovorite

[quote="vsego"]Dosta je jedan niz, onaj u kojem su sami brojevi. Radis obicni sort, a mijenja se -- kao i uvijek kod sortiranja -- uvjet zamjene varijabli:

[code:1]int si = sumazn(x[i], 5), sj = sumazn(x[j], 5);
if (si < sj || (si == sj && x[i] < x[j])) /* radi zamjenu */[/code:1]

[/quote]

Ok, to mi je jasno, ali kako da resetiram taj clan tako da je bilo koji iduci veci od tog resetiranog? Da su prirodni brojevi mogao bih ga postaviti kao nulu, ali radi se o cijelim br. I kako postici da se brojevi koje sam vec postavio kao najvece ne ponavljaju kod iduce vrtnje ?
Ja vidim rjesenje jedino kao dodavanje nekog niza koji ce spremati indekse koje sam vec iskoristio, pa onda kod svake vrtnje provjeravat podudara li se indeks sa clanom niza, ako da preskociti ga..
vsego (napisa):
Dosta je jedan niz, onaj u kojem su sami brojevi. Radis obicni sort, a mijenja se – kao i uvijek kod sortiranja – uvjet zamjene varijabli:

Kod:
int si = sumazn(x[i], 5), sj = sumazn(x[j], 5);
if (si < sj || (si == sj && x[i] < x[j])) /* radi zamjenu */




Ok, to mi je jasno, ali kako da resetiram taj clan tako da je bilo koji iduci veci od tog resetiranog? Da su prirodni brojevi mogao bih ga postaviti kao nulu, ali radi se o cijelim br. I kako postici da se brojevi koje sam vec postavio kao najvece ne ponavljaju kod iduce vrtnje ?
Ja vidim rjesenje jedino kao dodavanje nekog niza koji ce spremati indekse koje sam vec iskoristio, pa onda kod svake vrtnje provjeravat podudara li se indeks sa clanom niza, ako da preskociti ga..



_________________
Sumnjam, dakle možda jesam.
[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: 19:38 ned, 9. 12. 2012    Naslov: Citirajte i odgovorite

Ne razumijem. Kakav najveci? U zadatku se trazi samo sort niza (ili je meni nesto promaklo?).

Kako bi sortirao niz cijelih brojeva (padajuce, po velicini), tako radis i ovo; samo ti je uvjet zamjene drugaciji. Apsolutno sve ostalo je identicno.
Ne razumijem. Kakav najveci? U zadatku se trazi samo sort niza (ili je meni nesto promaklo?).

Kako bi sortirao niz cijelih brojeva (padajuce, po velicini), tako radis i ovo; samo ti je uvjet zamjene drugaciji. Apsolutno sve ostalo je identicno.



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


Pridružen/a: 02. 11. 2012. (14:08:41)
Postovi: (16)16
Sarma = la pohva - posuda
= 5 - 1

PostPostano: 19:43 ned, 9. 12. 2012    Naslov: Citirajte i odgovorite

Aha, sad razumijem, mislili ste sortirati niz pa ga ispisati,
ja sam stalno vrtio u glavi najveci - ispisi ga idi dalje.
Ok, jasno mi je sad, hvala!
Aha, sad razumijem, mislili ste sortirati niz pa ga ispisati,
ja sam stalno vrtio u glavi najveci - ispisi ga idi dalje.
Ok, jasno mi je sad, hvala!



_________________
Sumnjam, dakle možda jesam.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Redeemer
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 06. 2006. (21:57:04)
Postovi: (B9)16
Spol: muško
Sarma = la pohva - posuda
-11 = 31 - 42
Lokacija: Wo'liegt'dieses'verdammte'dorf

PostPostano: 15:48 sri, 2. 1. 2013    Naslov: Citirajte i odgovorite

moze malo pomoci oko rada s dinamicki alociranim matricama...
zakrzljao sam malo, pa da osvjezim znanje

[code:1]printf ("koliko redaka?");
scanf ("%d",&M);
printf ("koliko stupaca?");
scanf ("%d",&N);


/* dinamicka alokacija memorije*/

int **array;
array = (int**)malloc((M*sizeof(int*));
for (i = 0; i <M; i++)
array[i] = (int*)malloc(N*sizeof(int));


/* unos*/

for ( i = 0; i < M ; i++) {

for ( j = 0; j < N ; j++) {
printf (”x[%d][%d ] = ” , i , j ) ;
scanf (”%d ” , &array [ i ] [ j ] ) ;
}
}
[/code:1]

kako napraviti unos po recima? gdje su znamenke odvojene razmakom i onda nakon tipke enter ide unos po drugom redu etc...

btw, jel dobra alokacija memorije?

i jos jedno pitanje za kraj
sto ce vratiti array[1]=array[2]

zanima me zapravo, kako zamijeniti dva retka..
moze malo pomoci oko rada s dinamicki alociranim matricama...
zakrzljao sam malo, pa da osvjezim znanje

Kod:
printf ("koliko redaka?");
    scanf ("%d",&M);
    printf ("koliko stupaca?");
      scanf ("%d",&N);
     

 /* dinamicka alokacija memorije*/
 
     int **array;
     array = (int**)malloc((M*sizeof(int*));
     for (i = 0; i <M; i++)
     array[i] = (int*)malloc(N*sizeof(int));
 
 
 /* unos*/
 
for ( i = 0; i < M ; i++) {

 for ( j = 0; j < N ; j++) {
     printf (”x[%d][%d ] = ” , i , j ) ;
     scanf (”%d ” , &array [ i ] [ j ] ) ;
                                 }
}


kako napraviti unos po recima? gdje su znamenke odvojene razmakom i onda nakon tipke enter ide unos po drugom redu etc...

btw, jel dobra alokacija memorije?

i jos jedno pitanje za kraj
sto ce vratiti array[1]=array[2]

zanima me zapravo, kako zamijeniti dva retka..



_________________
Nigdje ne piše da morate studirati ovdje.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
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: 17:31 sri, 2. 1. 2013    Naslov: Citirajte i odgovorite

[quote="Redeemer"]
kako napraviti unos po recima? gdje su znamenke odvojene razmakom i onda nakon tipke enter ide unos po drugom redu etc...
[/quote]
Točno onako kako si gore napisao, samo eliminiraj one ispise.

[quote]
btw, jel dobra alokacija memorije?
[/quote]
Je. (Do na to što nije provjereno da li je uspješno izvršena.)

[quote]sto ce vratiti [tt]array[1]=array[2][/tt][/quote]
Pridružit će vrijednost od [tt]array[2][/tt] na [tt]array[1][/tt], a vrijednost izraza će biti ta pridružena vrijednost.

[quote]zanima me zapravo, kako zamijeniti dva retka..[/quote]
Kod dinamički alociranog niza može ovako:
[code:1]int* tmp = array[i];
array[i] = array[j];
array[j] = tmp;[/code:1]
Redeemer (napisa):

kako napraviti unos po recima? gdje su znamenke odvojene razmakom i onda nakon tipke enter ide unos po drugom redu etc...

Točno onako kako si gore napisao, samo eliminiraj one ispise.

Citat:

btw, jel dobra alokacija memorije?

Je. (Do na to što nije provjereno da li je uspješno izvršena.)

Citat:
sto ce vratiti array[1]=array[2]

Pridružit će vrijednost od array[2] na array[1], a vrijednost izraza će biti ta pridružena vrijednost.

Citat:
zanima me zapravo, kako zamijeniti dva retka..

Kod dinamički alociranog niza može ovako:
Kod:
int* tmp = array[i];
array[i] = array[j];
array[j] = tmp;



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


Pridružen/a: 12. 06. 2006. (21:57:04)
Postovi: (B9)16
Spol: muško
Sarma = la pohva - posuda
-11 = 31 - 42
Lokacija: Wo'liegt'dieses'verdammte'dorf

PostPostano: 18:33 sri, 2. 1. 2013    Naslov: Citirajte i odgovorite

[quote="mdoko"]
[quote]zanima me zapravo, kako zamijeniti dva retka..[/quote]
Kod dinamički alociranog niza može ovako:
[code:1]int* tmp = array[i];
array[i] = array[j];
array[j] = tmp;[/code:1][/quote]


ako sam dobro shvatio:

za zamjenu retka array[1][] i array[2][]

je dovoljno ovo:

[code:1]int* tmp = array[1];
array[1] = array[2];
array[2] = tmp;[/code:1]

tj nije potrebno:

[code:1]for (j=0;i<N;j++)
{
int tmp = array[1][j];
array[1][j] = array[2][j];
array[2][j] = tmp;
}[/code:1]

(jel nedostaje koja zvjezdica?)
mdoko (napisa):

Citat:
zanima me zapravo, kako zamijeniti dva retka..

Kod dinamički alociranog niza može ovako:
Kod:
int* tmp = array[i];
array[i] = array[j];
array[j] = tmp;



ako sam dobro shvatio:

za zamjenu retka array[1][] i array[2][]

je dovoljno ovo:

Kod:
int* tmp = array[1];
array[1] = array[2];
array[2] = tmp;


tj nije potrebno:

Kod:
for (j=0;i<N;j++)
{
int tmp = array[1][j];
array[1][j] = array[2][j];
array[2][j] = tmp;
}


(jel nedostaje koja zvjezdica?)



_________________
Nigdje ne piše da morate studirati ovdje.
[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 Prethodno  1, 2, 3, 4, 5, 6, 7  Sljedeće
Stranica 4 / 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