Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 12:33 pet, 20. 1. 2012 Naslov: |
|
|
[quote="Zenon"]Mislim, meni je jasno da n nije konstanta, ali mi je objašnjavao zašto se to ne smije.
To je tzv. "dinamičko alociranje niza" koje ćemo učiti u drugom semestru ( trenutno ni ja ne znam što je ni kako se pravilno izvodi ), ali je rekao da ga možemo i sada koristiti, ako znamo pravilno, iako se cilja na korištenje obrađenog gradiva.[/quote]
Ne, nije [b]to[/b] dinamicka alokacija. To spada u novije standarde C-a, sto mi iz nekih (recimo pedagoskih) razloga ovdje ne zelimo raditi. Dinamicka alokacija je nacin na koji cemo raditi nizove varijabilne duljine u drugom semestru, no smijete ju koristiti vec sada ako to radite ispravno (i, jasno, nije u koliziji s textom zadatka, npr. da nisu zabranjeni pomocni nizovi).
@Hubert Cumberdale Pretpostavljam da ti je Namdev pomogao, pa ja necu traziti u cemu je problem.
Zenon (napisa): | Mislim, meni je jasno da n nije konstanta, ali mi je objašnjavao zašto se to ne smije.
To je tzv. "dinamičko alociranje niza" koje ćemo učiti u drugom semestru ( trenutno ni ja ne znam što je ni kako se pravilno izvodi ), ali je rekao da ga možemo i sada koristiti, ako znamo pravilno, iako se cilja na korištenje obrađenog gradiva. |
Ne, nije to dinamicka alokacija. To spada u novije standarde C-a, sto mi iz nekih (recimo pedagoskih) razloga ovdje ne zelimo raditi. Dinamicka alokacija je nacin na koji cemo raditi nizove varijabilne duljine u drugom semestru, no smijete ju koristiti vec sada ako to radite ispravno (i, jasno, nije u koliziji s textom zadatka, npr. da nisu zabranjeni pomocni nizovi).
@Hubert Cumberdale Pretpostavljam da ti je Namdev pomogao, pa ja necu traziti u cemu je problem.
_________________ 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. 
|
|
[Vrh] |
|
Zenon Forumaš(ica)


Pridružen/a: 09. 09. 2011. (19:14:43) Postovi: (2B1)16
Sarma: -
Lokacija: [tex]\pm\infty[/tex]
|
Postano: 13:39 pet, 20. 1. 2012 Naslov: |
|
|
[quote="vsego"][quote="Zenon"]Mislim, meni je jasno da n nije konstanta, ali mi je objašnjavao zašto se to ne smije.
To je tzv. "dinamičko alociranje niza" koje ćemo učiti u drugom semestru ( trenutno ni ja ne znam što je ni kako se pravilno izvodi ), ali je rekao da ga možemo i sada koristiti, ako znamo pravilno, iako se cilja na korištenje obrađenog gradiva.[/quote]
Ne, nije [b]to[/b] dinamicka alokacija. To spada u novije standarde C-a, sto mi iz nekih (recimo pedagoskih) razloga ovdje ne zelimo raditi. Dinamicka alokacija je nacin na koji cemo raditi nizove varijabilne duljine u drugom semestru, no smijete ju koristiti vec sada ako to radite ispravno (i, jasno, nije u koliziji s textom zadatka, npr. da nisu zabranjeni pomocni nizovi).
@Hubert Cumberdale Pretpostavljam da ti je Namdev pomogao, pa ja necu traziti u cemu je problem.[/quote]
Ispričavam se na netočnom objašnjenju.
Hvala na ispravci :)
vsego (napisa): | Zenon (napisa): | Mislim, meni je jasno da n nije konstanta, ali mi je objašnjavao zašto se to ne smije.
To je tzv. "dinamičko alociranje niza" koje ćemo učiti u drugom semestru ( trenutno ni ja ne znam što je ni kako se pravilno izvodi ), ali je rekao da ga možemo i sada koristiti, ako znamo pravilno, iako se cilja na korištenje obrađenog gradiva. |
Ne, nije to dinamicka alokacija. To spada u novije standarde C-a, sto mi iz nekih (recimo pedagoskih) razloga ovdje ne zelimo raditi. Dinamicka alokacija je nacin na koji cemo raditi nizove varijabilne duljine u drugom semestru, no smijete ju koristiti vec sada ako to radite ispravno (i, jasno, nije u koliziji s textom zadatka, npr. da nisu zabranjeni pomocni nizovi).
@Hubert Cumberdale Pretpostavljam da ti je Namdev pomogao, pa ja necu traziti u cemu je problem. |
Ispričavam se na netočnom objašnjenju.
Hvala na ispravci
|
|
[Vrh] |
|
celeste Forumaš(ica)

Pridružen/a: 31. 10. 2009. (11:56:09) Postovi: (23)16
|
Postano: 0:25 ned, 13. 1. 2013 Naslov: |
|
|
Jel bi mi molim vas netko mogao objasniti zashto je ovo beskonachna petlja? Mozhda sam preumorna i kasno je ali ne kuzhim stvarno.
[code:1]#include <stdio.h>
#include <stdlib.h>
int main(){
int i,d,k,a,b,c;
scanf("%d %d",&a,&b);
for(i=a;i<=b;i++){
c=1;
while(i>0){
k=i%12;
if(k%8==0) c=0;
i=i/12;}
if(c==0) printf("%d\n",i);}
return 0;
}
[/code:1]
[size=9][color=#999999]Added after 3 minutes:[/color][/size]
Isprichavam se, ovo je zadatak:
Napišite program koji učitava prirodne brojeve a i b, te u rastućem poretku ispisuje sve cijele brojeve koji se nalaze između a i b (uključivo i a i b), a u zapisu s bazom 12 imaju samo znamenke djeljive sa 8. Ispisane brojeve odvojite razmacima. Ako takvih brojeva nema, program ispisuje poruku "Nema takvih brojeva.". Pazite da tekst bude naveden točno kako piše (bez navodnika)!
Oprez: može biti a<b ili a>b ili a=b!
Jel bi mi molim vas netko mogao objasniti zashto je ovo beskonachna petlja? Mozhda sam preumorna i kasno je ali ne kuzhim stvarno.
Kod: | #include <stdio.h>
#include <stdlib.h>
int main(){
int i,d,k,a,b,c;
scanf("%d %d",&a,&b);
for(i=a;i<=b;i++){
c=1;
while(i>0){
k=i%12;
if(k%8==0) c=0;
i=i/12;}
if(c==0) printf("%d\n",i);}
return 0;
}
|
Added after 3 minutes:
Isprichavam se, ovo je zadatak:
Napišite program koji učitava prirodne brojeve a i b, te u rastućem poretku ispisuje sve cijele brojeve koji se nalaze između a i b (uključivo i a i b), a u zapisu s bazom 12 imaju samo znamenke djeljive sa 8. Ispisane brojeve odvojite razmacima. Ako takvih brojeva nema, program ispisuje poruku "Nema takvih brojeva.". Pazite da tekst bude naveden točno kako piše (bez navodnika)!
Oprez: može biti a<b ili a>b ili a=b!
|
|
[Vrh] |
|
Atomised Forumaš(ica)


Pridružen/a: 04. 09. 2007. (15:33:59) Postovi: (399)16
Lokacija: Exotica
|
|
[Vrh] |
|
celeste Forumaš(ica)

Pridružen/a: 31. 10. 2009. (11:56:09) Postovi: (23)16
|
Postano: 0:45 ned, 13. 1. 2013 Naslov: |
|
|
hm... hvala. nije ni bitan tekst.
[size=9][color=#999999]Added after 6 minutes:[/color][/size]
mozhe savjet kako da doradim kod da mi ne rachuna samo za zadnju znamenku nego za svaku? ne znam kaj da probam vishe.
[code:1]#include <stdio.h>
#include <stdlib.h>
int main(){
int a,b,i,d,c=0,t,x=0;
scanf("%d %d",&a,&b);
if(a>b){
t=a;
a=b;
b=t;}
else{
for(i=a;i<=b;i++){
d=i%12;
if(d!=0){
if(d%8==0) {printf("%d ",i);x=1;}}}}
if(x==0) printf("Nema takvih brojeva.");
return 0;
}[/code:1]
hm... hvala. nije ni bitan tekst.
Added after 6 minutes:
mozhe savjet kako da doradim kod da mi ne rachuna samo za zadnju znamenku nego za svaku? ne znam kaj da probam vishe.
Kod: | #include <stdio.h>
#include <stdlib.h>
int main(){
int a,b,i,d,c=0,t,x=0;
scanf("%d %d",&a,&b);
if(a>b){
t=a;
a=b;
b=t;}
else{
for(i=a;i<=b;i++){
d=i%12;
if(d!=0){
if(d%8==0) {printf("%d ",i);x=1;}}}}
if(x==0) printf("Nema takvih brojeva.");
return 0;
} |
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
celeste Forumaš(ica)

Pridružen/a: 31. 10. 2009. (11:56:09) Postovi: (23)16
|
Postano: 19:14 pon, 14. 1. 2013 Naslov: |
|
|
Pomoch. Nisam bash sigurna jel do pointera ili do funkcije ili kaj mu je, ali za br mi vracha 0.
Napišite program koji učitava prirodni broj n≤17, te niz od n cijelih brojeva. Program treba ispisati sumu zadnjih 6 neparnih elemenata niza.
Ako neparnih brojeva ima manje od 6, ispišite sumu svih neparnih. Ako neparnih brojeva uopće nema u nizu, ispišite 0.
[code:1]#include <stdio.h>
#include <stdlib.h>
int broj(int x[],int n){
int i,br=0;
for(i=0;i<n;i++);{
if(x[i]%2==1) br=br+1;}
return br;
}
int main(){
unsigned int n;
scanf("%d",&n);
int x[18],s=0,i,a,br;
for(i=0;i<n;i++){
scanf("%d",&x[i]);}
br=broj(x[i],n);
printf("%d\n",br);
if(br>=6){
for(i=n;i>n-7;i--){
a=0;
if(x[i]%2!=0) {s=s+x[i];a=1;}}}
if(br<6){
for(i=0;i<n;i++){
a=0;
if(x[i]%2!=0) {s=s+x[i];a=1;}}}
if(a==1) printf("%d,%d",s,br);
else printf("%d",0);
return 0;
}
[/code:1]
Pomoch. Nisam bash sigurna jel do pointera ili do funkcije ili kaj mu je, ali za br mi vracha 0.
Napišite program koji učitava prirodni broj n≤17, te niz od n cijelih brojeva. Program treba ispisati sumu zadnjih 6 neparnih elemenata niza.
Ako neparnih brojeva ima manje od 6, ispišite sumu svih neparnih. Ako neparnih brojeva uopće nema u nizu, ispišite 0.
Kod: | #include <stdio.h>
#include <stdlib.h>
int broj(int x[],int n){
int i,br=0;
for(i=0;i<n;i++);{
if(x[i]%2==1) br=br+1;}
return br;
}
int main(){
unsigned int n;
scanf("%d",&n);
int x[18],s=0,i,a,br;
for(i=0;i<n;i++){
scanf("%d",&x[i]);}
br=broj(x[i],n);
printf("%d\n",br);
if(br>=6){
for(i=n;i>n-7;i--){
a=0;
if(x[i]%2!=0) {s=s+x[i];a=1;}}}
if(br<6){
for(i=0;i<n;i++){
a=0;
if(x[i]%2!=0) {s=s+x[i];a=1;}}}
if(a==1) printf("%d,%d",s,br);
else printf("%d",0);
return 0;
}
|
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 19:20 pon, 14. 1. 2013 Naslov: |
|
|
Ajmo ovo
[code:1] for(i=0;i<n;i++){
scanf("%d",&x[i]);}
br=broj(x[i],n);[/code:1]
preglednije napisati:
[code:1] for(i=0;i<n;i++){
scanf("%d",&x[i]);
}
br=broj(x[i],n);[/code:1]
Je li sad jasno sto se dogadja? :)
Preporucam da pregledno uvlacite kod, jer tako sebi najvise olaksate.
P.S. Funkcija prima niz [tt]int[/tt]-ova, a saljes joj jedan (neinicijalizirani!) [tt]int[/tt]... ne razumijem ideju, ali to nikako ne moze biti dobro.
Ajmo ovo
Kod: | for(i=0;i<n;i++){
scanf("%d",&x[i]);}
br=broj(x[i],n); |
preglednije napisati:
Kod: | for(i=0;i<n;i++){
scanf("%d",&x[i]);
}
br=broj(x[i],n); |
Je li sad jasno sto se dogadja?
Preporucam da pregledno uvlacite kod, jer tako sebi najvise olaksate.
P.S. Funkcija prima niz int-ova, a saljes joj jedan (neinicijalizirani!) int... ne razumijem ideju, ali to nikako ne moze biti dobro.
_________________ 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. 
|
|
[Vrh] |
|
celeste Forumaš(ica)

Pridružen/a: 31. 10. 2009. (11:56:09) Postovi: (23)16
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 21:09 pon, 14. 1. 2013 Naslov: |
|
|
Predavanje 12 prof. Nogo (na webu kolegija), slideovi 10-11
Predavanje 12 prof. Singera (njegov web), slideovi 24-28
Skripta iz vjezbi, poglavlje 11.2.
Samo se normalno pozove:
[code:1]br = broj(x, n);[/code:1]
Inace, uopce ne trebaju 2 slucaja. Dosta je racunati sumu dok se ne prodje 6 neparnih brojeva ili dodje do pocetka niza. Slucajevi su navedeni kao objasnjenja, da bi zadatak bio dovoljno precizan.
Ovaj kod gore je koncipiran tako da ce traziti sumu neparnih brojeva medju elementima [tt]x[n][/tt], [tt]x[n-1][/tt],..., [tt]x[n-7+1][/tt], sto je zadnjih 7 (zapravo zadnjih 6, plus jedan nepostojeci) neparnih brojeva samo ako su svi neparni. Sto se ovog "nepostojeceg" tice, [tt]x[n][/tt] nema definiranu vrijednost.
Predavanje 12 prof. Nogo (na webu kolegija), slideovi 10-11
Predavanje 12 prof. Singera (njegov web), slideovi 24-28
Skripta iz vjezbi, poglavlje 11.2.
Samo se normalno pozove:
Inace, uopce ne trebaju 2 slucaja. Dosta je racunati sumu dok se ne prodje 6 neparnih brojeva ili dodje do pocetka niza. Slucajevi su navedeni kao objasnjenja, da bi zadatak bio dovoljno precizan.
Ovaj kod gore je koncipiran tako da ce traziti sumu neparnih brojeva medju elementima x[n], x[n-1],..., x[n-7+1], sto je zadnjih 7 (zapravo zadnjih 6, plus jedan nepostojeci) neparnih brojeva samo ako su svi neparni. Sto se ovog "nepostojeceg" tice, x[n] nema definiranu vrijednost.
_________________ 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. 
|
|
[Vrh] |
|
celeste Forumaš(ica)

Pridružen/a: 31. 10. 2009. (11:56:09) Postovi: (23)16
|
Postano: 23:20 pon, 14. 1. 2013 Naslov: |
|
|
Hvala puno, jasnije mi je sad puno. :D Pojednostavnila sam kod, istina, nishta mi nije trebalo, ni dodatna funkcija ni for petlja. Sve radi, odlichno.
Hvala puno, jasnije mi je sad puno. Pojednostavnila sam kod, istina, nishta mi nije trebalo, ni dodatna funkcija ni for petlja. Sve radi, odlichno.
|
|
[Vrh] |
|
celeste Forumaš(ica)

Pridružen/a: 31. 10. 2009. (11:56:09) Postovi: (23)16
|
Postano: 18:23 uto, 15. 1. 2013 Naslov: |
|
|
Ne prihvacha mi aplikacija za zadache i ne mogu skuzhiti zashto iz inputa koji mi je poslan na mail jer je prevelik i ne vidi se previshe iz toga. Mozhe neki hint molim.
zadatak: Napišite program koji učitava prirodni broj n<131, te niz od n cijelih brojeva. Program treba pronaći najveći element niza djeljiv s 11, te u originalnom poretku ispisati indekse onih elementa niza kojima je prva znamenka jedna od znamenki pronađenog maksimuma.
Ako traženi maksimum ne postoji, program ne smije ništa ispisati. Ispisane brojeve odvojite razmacima.
[code:1] #include <stdio.h>
#include <stdlib.h>
int maxich(int x[],int n){
int i,max,t;
for(i=0;i<n;i++){
if(x[i]%11==0){
max=x[i];
t=i;
for(i=t+1;i<n;i++){
if(x[i]>max) max=x[i];}}}
return max;
}
void obrnuto(int x[],int n){
int i,c=0,m,d;
for(i=0;i<n;i++){
m=x[i];
c=0;
while(m>0){
d=m%10;
c=c*10+d;
m=m/10;}
x[i]=c;}
}
int main(){
int n,i,x[131],max,t,d,m,z=0,c;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);
if(x[i]<0) x[i]=abs(x[i]);}
m=maxich(x,n);
t=m;
obrnuto(x,n);
for(i=0;i<n;i++){
m=t;
while(m>0){
if(m%10==x[i]%10 && x[i]!= t) {printf("%d ",i);break;}
m=m/10;}}
return 0;
}[/code:1]
Ne prihvacha mi aplikacija za zadache i ne mogu skuzhiti zashto iz inputa koji mi je poslan na mail jer je prevelik i ne vidi se previshe iz toga. Mozhe neki hint molim.
zadatak: Napišite program koji učitava prirodni broj n<131, te niz od n cijelih brojeva. Program treba pronaći najveći element niza djeljiv s 11, te u originalnom poretku ispisati indekse onih elementa niza kojima je prva znamenka jedna od znamenki pronađenog maksimuma.
Ako traženi maksimum ne postoji, program ne smije ništa ispisati. Ispisane brojeve odvojite razmacima.
Kod: | #include <stdio.h>
#include <stdlib.h>
int maxich(int x[],int n){
int i,max,t;
for(i=0;i<n;i++){
if(x[i]%11==0){
max=x[i];
t=i;
for(i=t+1;i<n;i++){
if(x[i]>max) max=x[i];}}}
return max;
}
void obrnuto(int x[],int n){
int i,c=0,m,d;
for(i=0;i<n;i++){
m=x[i];
c=0;
while(m>0){
d=m%10;
c=c*10+d;
m=m/10;}
x[i]=c;}
}
int main(){
int n,i,x[131],max,t,d,m,z=0,c;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);
if(x[i]<0) x[i]=abs(x[i]);}
m=maxich(x,n);
t=m;
obrnuto(x,n);
for(i=0;i<n;i++){
m=t;
while(m>0){
if(m%10==x[i]%10 && x[i]!= t) {printf("%d ",i);break;}
m=m/10;}}
return 0;
} |
|
|
[Vrh] |
|
El_Loco Forumaš(ica)

Pridružen/a: 26. 05. 2012. (15:25:04) Postovi: (31)16
Spol: 
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 19:32 uto, 15. 1. 2013 Naslov: |
|
|
Funkcija [tt]obrnuto()[/tt] je cisti vishak, no kad je vec tu, zasto ne bi bili prihvatljivi elementi niza koji, zapisani unatrag, daju maksimalnog djeljivog s 11 (ref. [tt]x[i]!= t[/tt])? :-k
Usput, nije rijesen slucaj kad u nizu nema brojeva djeljivih s 11.
Funkcija obrnuto() je cisti vishak, no kad je vec tu, zasto ne bi bili prihvatljivi elementi niza koji, zapisani unatrag, daju maksimalnog djeljivog s 11 (ref. x[i]!= t)?
Usput, nije rijesen slucaj kad u nizu nema brojeva djeljivih s 11.
_________________ 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. 
|
|
[Vrh] |
|
celeste Forumaš(ica)

Pridružen/a: 31. 10. 2009. (11:56:09) Postovi: (23)16
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 23:21 uto, 15. 1. 2013 Naslov: |
|
|
1. Ako niti jedan broj nije djeljiv s 11, [tt]maxich()[/tt] vraca vrijednost [b]neinicijalizirane[/b] varijable [tt]max[/tt], sto moze slucajno ispasti ok, a moze ispasti i lose.
2. Trazi se najveci medju brojevima djeljivima s 11, a ne najveci medju apsolutnim vrijednostima tih brojeva. Dakle, ne smiju se racunati apsolutne vrijednosti prije trazenja maksimuma.
Da elaboriram ovo o nepotrebnoj funkciji...
Sto se dobije kad broj (cjelobrojno) podijelimo s 10? Isti broj bez zadnje znamenke.
Sto se dobije kad taj rezultat opet (cjelobrojno) podijelimo s 10? Pocetni broj bez zadnje dvije znamenke.
...
Do kada tako? Dok nije ostala jedna znamenka.
Posto smo uzeli apsolutnu vrijednost, kako znamo da broj ima jednu znamenku? Tako da je manji od 10.
Dakle:
[code:1]function prva_zn(int x) {
while (x >= 10) x /= 10;
return x;
}[/code:1]
vraca prvu znamenku nenegativnog cijelog broja (ako [tt]x[/tt] moze biti i negativan, ubacimo na pocetak [tt]if (x < 0) x = -x;[/tt]). Jednostavno i bez mijenjanja niza.
Ako bude jos pitanja, molim zalijepiti aktualnu verziju programa, da ne pricamo napamet.
1. Ako niti jedan broj nije djeljiv s 11, maxich() vraca vrijednost neinicijalizirane varijable max, sto moze slucajno ispasti ok, a moze ispasti i lose.
2. Trazi se najveci medju brojevima djeljivima s 11, a ne najveci medju apsolutnim vrijednostima tih brojeva. Dakle, ne smiju se racunati apsolutne vrijednosti prije trazenja maksimuma.
Da elaboriram ovo o nepotrebnoj funkciji...
Sto se dobije kad broj (cjelobrojno) podijelimo s 10? Isti broj bez zadnje znamenke.
Sto se dobije kad taj rezultat opet (cjelobrojno) podijelimo s 10? Pocetni broj bez zadnje dvije znamenke.
...
Do kada tako? Dok nije ostala jedna znamenka.
Posto smo uzeli apsolutnu vrijednost, kako znamo da broj ima jednu znamenku? Tako da je manji od 10.
Dakle:
Kod: | function prva_zn(int x) {
while (x >= 10) x /= 10;
return x;
} |
vraca prvu znamenku nenegativnog cijelog broja (ako x moze biti i negativan, ubacimo na pocetak if (x < 0) x = -x;). Jednostavno i bez mijenjanja niza.
Ako bude jos pitanja, molim zalijepiti aktualnu verziju programa, da ne pricamo napamet.
_________________ 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. 
Zadnja promjena: vsego; 4:03 sri, 16. 1. 2013; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
celeste Forumaš(ica)

Pridružen/a: 31. 10. 2009. (11:56:09) Postovi: (23)16
|
Postano: 2:39 sri, 16. 1. 2013 Naslov: |
|
|
ne znam. ne znam gdje da stavim if(x<0) x[i]=-x[i] da funkcionira u ovom kodu.
[code:1]
int maxich(int x[],int n){
int i,max,t;
for(i=0;i<n;i++){
if(x[i]%11==0){
max=x[i];
t=i;
for(i=t+1;i<n;i++){
if(x[i]%11==0 && x[i]>max) max=x[i];}}}
return max;
}
void obrnuto(int x[],int n){
int i,c=0,m,d;
for(i=0;i<n;i++){
m=x[i];
c=0;
while(m>0){
d=m%10;
c=c*10+d;
m=m/10;}
x[i]=c;}
}
int main(){
int n,i,x[131],max,t,d,m,z=0,c;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);}
m=maxich(x,n);
t=m;
obrnuto(x,n);
for(i=0;i<n;i++){
m=t;
while(m>0){
if(m%10==abs(x[i])%10) {printf("%d ",i);break;}
m=m/10;}}
return 0;
}[/code:1]
[size=9][color=#999999]Added after 11 minutes:[/color][/size]
ne razumijem zashto ovo nije dobro.
[code:1]int main(){
int n,i,x[131],max,t,d,m,z=0,c;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);}
m=maxich(x,n);
t=m;
obrnuto(x,n);
for(i=0;i<n;i++){
if(x[i]<0) x[i]=abs(x[i]);
m=t;
while(m>0){
if(m%10==x[i]%10) {printf("%d ",i);break;}
m=m/10;}}[/code:1]
ne znam. ne znam gdje da stavim if(x<0) x[i]=-x[i] da funkcionira u ovom kodu.
Kod: |
int maxich(int x[],int n){
int i,max,t;
for(i=0;i<n;i++){
if(x[i]%11==0){
max=x[i];
t=i;
for(i=t+1;i<n;i++){
if(x[i]%11==0 && x[i]>max) max=x[i];}}}
return max;
}
void obrnuto(int x[],int n){
int i,c=0,m,d;
for(i=0;i<n;i++){
m=x[i];
c=0;
while(m>0){
d=m%10;
c=c*10+d;
m=m/10;}
x[i]=c;}
}
int main(){
int n,i,x[131],max,t,d,m,z=0,c;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);}
m=maxich(x,n);
t=m;
obrnuto(x,n);
for(i=0;i<n;i++){
m=t;
while(m>0){
if(m%10==abs(x[i])%10) {printf("%d ",i);break;}
m=m/10;}}
return 0;
} |
Added after 11 minutes:
ne razumijem zashto ovo nije dobro.
Kod: | int main(){
int n,i,x[131],max,t,d,m,z=0,c;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);}
m=maxich(x,n);
t=m;
obrnuto(x,n);
for(i=0;i<n;i++){
if(x[i]<0) x[i]=abs(x[i]);
m=t;
while(m>0){
if(m%10==x[i]%10) {printf("%d ",i);break;}
m=m/10;}} |
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 2:41 sri, 16. 1. 2013 Naslov: |
|
|
Ovo nikako nije dobro, jer [tt]obrnuto()[/tt] nece okrenuti negativne brojeve (vidi uvjet petlje).
Mozes:
1. neposredno nakon poziva [tt]maxich()[/tt] dodati petlju koja [tt]x[i][/tt] postavlja na apsolutne vrijednosti, ili
2. racunati apsolutnu vrijednost prije okretanja (u [tt]obrnuto()[/tt]).
Ima jos par mjesta/nacina, no mislim da su ova dva najjednostavniji.
Ovo nikako nije dobro, jer obrnuto() nece okrenuti negativne brojeve (vidi uvjet petlje).
Mozes:
1. neposredno nakon poziva maxich() dodati petlju koja x[i] postavlja na apsolutne vrijednosti, ili
2. racunati apsolutnu vrijednost prije okretanja (u obrnuto()).
Ima jos par mjesta/nacina, no mislim da su ova dva najjednostavniji.
_________________ 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. 
|
|
[Vrh] |
|
celeste Forumaš(ica)

Pridružen/a: 31. 10. 2009. (11:56:09) Postovi: (23)16
|
Postano: 3:16 sri, 16. 1. 2013 Naslov: |
|
|
ovo je za neposredno nakon maxich, ne radi ako nijedan chlan u nizu nije pozitivan i djeljiv s 11, tj. ne radi za negativne.
[code:1]int main(){
int n,i,x[131],max,t,d,m,z=0,c;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);}
m=maxich(x,n);
for(i=0;i<n;i++){
if(x[i]<0) x[i]=-x[i];}
t=m;
obrnuto(x,n);
for(i=0;i<n;i++){
m=t;
while(m>0){
if(m%10==x[i]%10) {printf("%d ",i);break;}
m=m/10;}}
return 0;
}[/code:1]
[size=9][color=#999999]Added after 4 minutes:[/color][/size]
Ovo je u obrnuto, isto ne radi ako nema chlana koji je pozitivan i djeljiv s 11.
[code:1]void obrnuto(int x[],int n){
int i,c=0,m,d;
for(i=0;i<n;i++){
if(x[i]<0) x[i]=-x[i];
m=x[i];
c=0;
while(m>0){
d=m%10;
c=c*10+d;
m=m/10;}
x[i]=c;}
}[/code:1]
ovo je za neposredno nakon maxich, ne radi ako nijedan chlan u nizu nije pozitivan i djeljiv s 11, tj. ne radi za negativne.
Kod: | int main(){
int n,i,x[131],max,t,d,m,z=0,c;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);}
m=maxich(x,n);
for(i=0;i<n;i++){
if(x[i]<0) x[i]=-x[i];}
t=m;
obrnuto(x,n);
for(i=0;i<n;i++){
m=t;
while(m>0){
if(m%10==x[i]%10) {printf("%d ",i);break;}
m=m/10;}}
return 0;
} |
Added after 4 minutes:
Ovo je u obrnuto, isto ne radi ako nema chlana koji je pozitivan i djeljiv s 11.
Kod: | void obrnuto(int x[],int n){
int i,c=0,m,d;
for(i=0;i<n;i++){
if(x[i]<0) x[i]=-x[i];
m=x[i];
c=0;
while(m>0){
d=m%10;
c=c*10+d;
m=m/10;}
x[i]=c;}
} |
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 4:02 sri, 16. 1. 2013 Naslov: |
|
|
U oba slucaja si zaboravila izvuci apsolutnu vrijednost od [tt]m[/tt] (treba ti [tex]|\max x_i|[/tex], sto je razlicito od [tex]\max |x_i|[/tex] kojeg si prije racunala).
Ostaje moja stara opaska da ti ne radi ispravno (iako moze slucajno dati tocan rezultat) niti ako nema ucitanih brojeva djeljivih s 11.
Predlazem da ne krpas, nego slozis ispocetka. Evo skica:
0. m = 1;
1. ucitati brojeve; usput (dakle, odmah iza [tt]scanf()[/tt], u istoj petlji) provjeravati djeljivost s 11:
[tt]if (x[i] % 11 == 0 && (m == 1 || x[i] > m)) m = x[i];[/tt]
Ovdje koristim da 1 nije djeljiv s 11, pa mi [tt]m == 1[/tt] zapravo znaci "do sada nije nadjen broj djeljiv s 11".
Uz tu interpretaciju, uvjet [tt]if[/tt]-a znaci "ako je ucitani broj djeljiv s 11 i a) to je prvi takav; ili b) veci je od dosad najveceg".
2. ako je [tt]m != 1[/tt] (dakle, postoji neki djeljiv s 11), protrci po svim brojevima i provjeri im prvu znamenku (pomocu funkcije koju sam gore naveo; dodaj joj racunanje apsolutne vrijednosti, tako da u nizu stalno imas originalne brojeve, sto je i inace dobra praxa ako zadatak bas ne trazi da ih se mijenja).
I to je to. Bitno jednostavnije, a mislim da je jednostavnost bitna i za razumijevanje i za kolokvij (manje koda = manje gresaka i brze se napise).
U oba slucaja si zaboravila izvuci apsolutnu vrijednost od m (treba ti [tex]|\max x_i|[/tex], sto je razlicito od [tex]\max |x_i|[/tex] kojeg si prije racunala).
Ostaje moja stara opaska da ti ne radi ispravno (iako moze slucajno dati tocan rezultat) niti ako nema ucitanih brojeva djeljivih s 11.
Predlazem da ne krpas, nego slozis ispocetka. Evo skica:
0. m = 1;
1. ucitati brojeve; usput (dakle, odmah iza scanf(), u istoj petlji) provjeravati djeljivost s 11:
if (x[i] % 11 == 0 && (m == 1 || x[i] > m)) m = x[i];
Ovdje koristim da 1 nije djeljiv s 11, pa mi m == 1 zapravo znaci "do sada nije nadjen broj djeljiv s 11".
Uz tu interpretaciju, uvjet if-a znaci "ako je ucitani broj djeljiv s 11 i a) to je prvi takav; ili b) veci je od dosad najveceg".
2. ako je m != 1 (dakle, postoji neki djeljiv s 11), protrci po svim brojevima i provjeri im prvu znamenku (pomocu funkcije koju sam gore naveo; dodaj joj racunanje apsolutne vrijednosti, tako da u nizu stalno imas originalne brojeve, sto je i inace dobra praxa ako zadatak bas ne trazi da ih se mijenja).
I to je to. Bitno jednostavnije, a mislim da je jednostavnost bitna i za razumijevanje i za kolokvij (manje koda = manje gresaka i brze se napise).
_________________ 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. 
|
|
[Vrh] |
|
|