zadace 2012/13
Select messages from
# through # FAQ
[/[Print]\]

Forum@DeGiorgi -> Programiranje 1 i 2

#1: zadace 2012/13 Autor/ica: nicki minaj PostPostano: 17:32 sri, 12. 12. 2012
    —
u cetvrtoj zadaci mi je jedan zadatak sljedeci:
"Napišite program koji učitava cijeli broj n, te ispisuje sumu svih prostih djelitelja (uvažavajući kratnost) svih cijelih brojeva različitih od nule koji se nalaze između n i -2 (uključivo)."

prilicno me zbunjuje zadatak pa nisam sigurna ako sam ga dobro razumijela... shvacam da gledamo brojeve izmedu n i -2, a s obzirom da je n cijeli broj, moramo imati slucajeve kada je n manji, veci ili jednak -2.
no, je li se sumiraju prosti faktori od svih cijelih brojeva u tom intervalu, u jednu sumu, ili se ispisuju sume prostih faktora izracunate za svaki cijeli broj posebno, to jest vise suma? takoder, ako uvazavamo kratnost faktora, znaci dodajemo faktor u sumu onoliko puta kolika mu je kratnost?
mozda mi nije jasno nesto totalno banalno, ali mi treba nekad dulje da dode do Idea sa nekim zadacima. hvala.

#2: Re: zadace 2012/13 Autor/ica: mdokoLokacija: Heriot-Watt University, Edinburgh PostPostano: 17:48 sri, 12. 12. 2012
    —
nicki minaj (napisa):
no, je li se sumiraju prosti faktori od svih cijelih brojeva u tom intervalu, u jednu sumu, ili se ispisuju sume prostih faktora izracunate za svaki cijeli broj posebno, to jest vise suma?

Uočite da zadatak kaže da se ispisuje suma, a ne sume.

Citat:
takoder, ako uvazavamo kratnost faktora, znaci dodajemo faktor u sumu onoliko puta kolika mu je kratnost?

Točno tako.

#3:  Autor/ica: nicki minaj PostPostano: 18:03 sri, 12. 12. 2012
    —
hvala na pomoci!

#4:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 19:18 sri, 12. 12. 2012
    —
Zadace se rijetko mijenjaju (zadnjih barem 2-3 godine su iste). Koga nesto muci, mozete pogledati i stare topice. Smile

#5:  Autor/ica: acuksi PostPostano: 16:54 čet, 13. 12. 2012
    —
može pomoć jer oko zadatka iz zadaće jer sam već pokušao sve moguće kombinacije i ne mogu skontat što mi je krivo... hvala =)

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 10, 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>
int prvaznam(int n)
{
int z=0,m;
m=n;
while(n!=0) {n/=10; z++;}
while(z!=1) {m/=10; z--;}
return m;
}
int main()
{
int n,i,max=0,t,j,c;
scanf("%d",&n);
int a[131];
for(i=0;i<n;i++)
{scanf("%d",&a[i]);
if(a[i]%10==0) max=a[i];}
for(i=0;i<n;i++)
if(a[i]>max && a[i]%10==0) max=a[i];
for(i=0;i<n;i++)
{
j=max;
t=prvaznam(a[i]);
while(j!=0)
{
if(j%10<0 && j%10!=j) c=-j%10; else c=j%10;
if(c==t) {printf("%d ",i); break;}
j/=10;
}
}
return 0;
}

#6:  Autor/ica: Phoenix PostPostano: 17:37 čet, 13. 12. 2012
    —
Ako se ne varam, kod ti ne radi za negativne brojeve, a za ostale radi, zar ne?
Greška je u funkciji prvaznam. U slučaju negativnog broja, prva znamenka će zapravo biti prva znamenka s minus predznakom, dakle negativan broj, što nije dobro.
(Vidim da si u kodu negdje već pazio na takvo nešto, no u funkciji isto to treba.)

#7:  Autor/ica: acuksi PostPostano: 18:25 čet, 13. 12. 2012
    —
nop...opet javlja da nije dobro. Ja sam stvarno sve te kombinacije s pozitivnim i negativnim prošao, al mi je sve javilo za krivo. -.-"

#include<stdio.h>
int prvaznam(int n)
{
int z=0,m;
m=n;
while(n!=0) {n/=10; z++;}
while(z!=1) {m/=10; z--;}
if (m>0) return m; else return -m;
}
int main()
{
int n,i,max=0,t,j,c;
scanf("%d",&n);
int a[131];
for(i=0;i<n;i++)
{scanf("%d",&a[i]);
if(a[i]%10==0) max=a[i];}
for(i=0;i<n;i++)
if(a[i]>max && a[i]%10==0) max=a[i];
for(i=0;i<n;i++)
{
j=max;
t=prvaznam(a[i]);
while(j!=0)
{
if(j%10<0) c=-j%10; else c=j%10;
if(c==t) {printf("%d ",i); break;}
j/=10;
}
}
return 0;
}

#8:  Autor/ica: Phoenix PostPostano: 18:56 čet, 13. 12. 2012
    —
Još ti je preostalo popraviti kod za one primjere kada je jedan od brojeva u nizu jednak nuli - tada zapneš u beskonačnu petlju i program se ne izvrši do kraja.

Ako se radi o zadatku iz web zadaće, bilo bi dobro da proučiš primjer na kojem ti je pao program (a onda ga i napisati ovdje ako se još uvijek ne snalaziš).
Inače, kod mi ne izgleda pogrešan, ali je malo kompliciraniji nego što bi trebao biti i meni osobno na dijelove nejasan. Ne krivim te, ionako ćeš to kroz vježbu i kroz iduće gradivo na faksu izvježbati i naučiti. Smile Ali ovo navodim jer će se možda tu potkrasti još koja greška, a ja je na prvo oko ne vidim upravo zbog toga. Razz

Pogledat ću još jednom tijekom večeri ako ti ne uspije kod. Ti svakako napiši test primjer na kojem kod ne prolazi ako već sam ne popraviš kod. Smile
I sretno s kodom! Wink

#9:  Autor/ica: acuksi PostPostano: 19:18 čet, 13. 12. 2012
    —
Puno hvala! =) Nije mi nula uopće pala na pamet. xDD

Znam da sam ga zakomplicirao bespotrebno, ali kad je sto puta javio da je krivo pa se onda malo izgubi čovjek xDD

Hvala još jednom =)

#10:  Autor/ica: gianluigiana PostPostano: 20:34 sub, 22. 12. 2012
    —
ja imam problem sa zadatkom iz zadaće koji glasi ovako:

Napišite program koji učitava tri realna broja x, y i z, te ispisuje vrijednost izraza
f=m^4+M^2,
pri čemu je
m=min{x,y,z} i M=max{x,y,z}.
Rezultat obavezno ispišite koristeći format %g!

moj kod:

#include<stdio.h>

int main () {

float x,y,z,m,M,f;

scanf("%f",&x);
scanf("%f",&y);
scanf("%f",&z);

m=x;
M=x;
if(y<m) m=y;
if(z<m) m=z;
if(y>M) M=y;
if(z>M) M=z;

f=(m*m*m*m)+(M*M);

printf("%g",f);
return 0;
}

dobro mi ispisuje za neke manje brojeve, ali mi je u mailu da je netočno za input: 4433.7529, 5862.9902, 7118.6813...ja sam probala sve, probala sam i s double i sve. točno mi ispiše minimum i maksimum, ali rezultat nikako. utipkala sam na kalkulator i ispadne mi sličan rezultat kao u porgramu pa sam mislila da su možda preveliki brojevi...pa eto, ako bi mi netko mogao malo pomoć ili ispravit Smile

#11:  Autor/ica: tiborr PostPostano: 23:28 ned, 23. 12. 2012
    —
zašto mi ovo radi uredno za max a za min vraća zadnji član?

Kod:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(){
int i;
double a[7],max,min;

for(i=0;i<8;i++){
scanf("%lg",&a[i]);
if (i==0) {max=a[0]; min=a[0];}
if (fabs(a[i])>fabs(max)) max=fabs(a[i]);
if (fabs(a[i])<fabs(min)) min=fabs(a[i]);
}
printf("%g %g",max,min);
return 0;
}

#12:  Autor/ica: AtomisedLokacija: Exotica PostPostano: 23:48 ned, 23. 12. 2012
    —
Misliš za max? Uglavnom, zato što ti u a stane sedam brojeva a ti ih pokušavaš staviti osam (pa valjda osmi član prebriše max, ili što se već dogodi)...

#13:  Autor/ica: tiborr PostPostano: 11:34 pon, 24. 12. 2012
    —
mislim za min, za max vraća uredno

#14:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 12:44 pon, 24. 12. 2012
    —
Atomised ti je dobro odgovorio. Zasto min, a ne – ocekivano – max, ovisi i o tome kako compiler, OS i tko zna tko jos rasporede varijable u memoriji. Poanta: indexu 7 (i < 8) ne smijes pristupati ako taj niz ima duljinu 7 (a[7]) jer mu legalni indeksi idu od 0 do 6.

#15:  Autor/ica: celeste PostPostano: 10:55 uto, 8. 1. 2013
    —
Oke, mozhe pomoch oko ovog zadatka:
Napišite program koji učitava 6 realnih brojeva, te ispisuje umnožak broja koji ima najveću apsolutnu vrijednost s brojem koji ima najmanju apsolutnu vrijednost. Ako dva broja imaju jednaku apsolutnu vrijednost, za većeg/manjeg uzimate onog koji je prije učitan.
Rezultat obavezno ispišite koristeći format %g!
Kod mi radi ali kazhe provjera zadacha da nije dobro.
#include <stdio.h>
#include <stdlib.h>

int main(){
double a,b,max,min;
int n=6;
scanf("%lg",&a);
if(a<0) a=a*(-1);
min=max=a;
while(n>0){
scanf("%lg", &b);
if(b<0) b=b*(-1);
if(b>max) max=b;
if(b<min) min=b;
b=a;
n=n-1;}
printf ("%g",min*max);
return 0;
}

#16:  Autor/ica: beuler PostPostano: 11:04 uto, 8. 1. 2013
    —
celeste (napisa):
Oke, mozhe pomoch oko ovog zadatka:
Napišite program koji učitava 6 realnih brojeva, te ispisuje umnožak broja koji ima najveću apsolutnu vrijednost s brojem koji ima najmanju apsolutnu vrijednost. Ako dva broja imaju jednaku apsolutnu vrijednost, za većeg/manjeg uzimate onog koji je prije učitan.
Rezultat obavezno ispišite koristeći format %g!
Kod mi radi ali kazhe provjera zadacha da nije dobro.
}


Cini mi se da moras na kraju pomnozit sa prvobitnom formom broja, npr. ako ukucas negativan broj i njegova apsolutna vrijednost je najveca, kad se na kraju mnozi (max*min) on mora biti negativan.

#17:  Autor/ica: celeste PostPostano: 11:38 uto, 8. 1. 2013
    —
Skuzhila sam da mi je n=6 krivo i stavila sam n=5, ali mi je doshlo na mail da kod ne radi za inuput za koji radi, tak da nisam sigurna shto se dogodilo.
Za input 63.129 14.2235 -49.6929 -27.0612 -23.3582 -74.0464 najmanju apsolutnu vrijednost ima 14.2235, najvechu ima -74.0464, a umnozhak im je 1053.2. I to je tochno, tako da ne znam stvarno u chemu je stvar.

#18:  Autor/ica: filipi PostPostano: 11:48 uto, 8. 1. 2013
    —
Trebaš pomnoziti početne brojeve, a ne njihove apsolutne vrijednosti

#19:  Autor/ica: celeste PostPostano: 12:34 uto, 8. 1. 2013
    —
Da, skuzhila sam. Hvala.

#20:  Autor/ica: Leolinus PostPostano: 3:07 čet, 10. 1. 2013
    —
Može li netko objasniti što je tu krivo?

Za 5 1782 611 3347 732 2750 ← na ovom javlja grešku.
Izbacuje 7.
Probalo se i s indeksom od 1 do n i s indeksima od 0 do n - 1.
Zadatak je toliko jednostavan, nemam pojma zašto neće uhvatiti rješenje.

EDIT: Ma, zadatak sigurno radi, evaluator je glup ili zadatak nije dobro formuliran.

Kod:
/* 2. zadatak */
 
/* Napisite program koji ucitava prirodni broj n < 39 te niz od 'n' cijelih brojeva.
 * Program treba ispisati sumu indeksa prvih 8 parnih elemenata niza.
 * Ako parnih brojeva ima manje od 8, ispisite sumu indeksa svih parnih brojeva.
 * Ako parnih brojeva uopce nema u nizu, ispisite nulu.
 */
 
/* Rjesenje:
 * Treba biljeziti koliko je parnih brojeva ucitano i naravno cuvati sumu indeksa.
 * I ovisno o uvjetima u zadatku provjeravati sto vrijedi, a sto ne.
 */
 
#include <stdio.h>
 
 
int main()
{
    int n;
    int brojParnih = 0;
    int sumaParnih = 0;
    int i;
    int broj; // ovdje ce se ucitavati varijabla
    // printf("Ucitaj prirodni broj n: ");
    // komentar stavljen jer nesto pise u vezi ukrasa
   
    scanf("%d", &n);
    if (n >= 39) { printf("Upisan krivi n!\n"); exit(1); } // greska
   
    // stavljen indeks na nulu(prvi element)
    for(i = 0; i < n; i++)
    {
        scanf("%d", &broj);
        if (broj % 2 == 0) { brojParnih++; sumaParnih += i; }
        if (brojParnih == 8) break;
    }
    if (brojParnih == 0) printf("0"); // nema parnih brojeva u nizu
    else                 printf("%d", sumaParnih);
    // ako je brojParnih < 8 onda ce se petlja odvrtiti i sumirati sve
    // indekse, ako je brojParnih == 8, izlazi van iz petlje da ne zbraja
    // dalje i ispisuje sumu parnih
    return 0;
}

#21:  Autor/ica: zaruljicaLokacija: Split/Zagreb PostPostano: 17:39 čet, 10. 1. 2013
    —
u mail-u mi odgovara da je netočan kod za input 43... može neko pojasnit što je krivo??
Kod:
/* Zadatak 1:
Napišite program koji učitava prirodni broj n, te "crta" vodoravnu liniju sastavljenu od n znakova plus ("+") i minus ("-"), s time da svaki 4. znak treba biti plus, a svi ostali minus (dakle, prvih 3 su minusi, zatim jedan plus, pa opet 3 minusa i tako dalje).*/
#include<stdio.h>

int main () {
int n,i;
scanf("%d", &n);
while(n>0) {

    printf("---+");
    n--; }
return 0;
}

#22:  Autor/ica: AtomisedLokacija: Exotica PostPostano: 17:48 čet, 10. 1. 2013
    —
Jesi probao pokrenuti?
Ne trebaš n puta ispisati tri minusa pa plus nego trebaš n puta ispisati po jedan znak...

#23:  Autor/ica: zaruljicaLokacija: Split/Zagreb PostPostano: 18:01 čet, 10. 1. 2013
    —
probala sam pokrenuti, ali nije mi jasan zadatak... koliko sam ja shvatila, za bilo koji učitani broj npr 7, ispis treba biti;
—+---+—+---+—+---+—+

odnosno, 3 minusa 7 puta i 1 plus 7 puta Shocked

Added after 2 minutes:

nvm, glupa sam, shvatila sam Very Happy

#24:  Autor/ica: Chardog PostPostano: 18:34 čet, 10. 1. 2013
    —
Trebao bih pomoc oko ovog zadatka iz 4 zadace:

Kod:
Napišite program koji učitava prirodne brojeve a i b, te u rastućem poretku ispisuje sve cijele brojeve oblika 2⋅4^i-58 koji se nalaze između a i b (bez a i b). 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!


Imao sam slicne zadatke sa drugacijim uvjetima i ti su tocni tako da nije problem u cjelokupnom zadatku vec u shvacanju ovog uvjeta, sto je tocno taj i? Jeli to brojac koji ide od a do b ili nesto drugo. Ako bi mi netko pojasnijo kakav to broj ja moram provjeravat bio bih mu iznimno zahvalan.

#25:  Autor/ica: AtomisedLokacija: Exotica PostPostano: 18:49 čet, 10. 1. 2013
    —
i ti ide po skupu prirodnih brojeva. Za npr. a = 60 i b = 80 jedini broj koji trebaš ispisati je 70, jer je traženog oblika (za i = 3) i nalazi se između 60 i 80.

#26:  Autor/ica: Chardog PostPostano: 20:29 čet, 10. 1. 2013
    —
Hvala, skuzio sam Smile

#27:  Autor/ica: kikotaLokacija: Dalmacijaa <3 PostPostano: 0:20 pet, 11. 1. 2013
    —
Napišite program koji učitava cijeli broj n, te ispisuje sumu svih prostih djelitelja (ignorirajući kratnost) svih cijelih brojeva različitih od nule koji se nalaze između n i 22 (uključivo).

Kod:
#include<stdio.h>
int prost (int i) {
int j, br=1;
for(j=2;j<i;j++) {
if(i%j==0) br=0;
}
if(br==0) return 0;
else return 1;
}
int main () {
int n, sum=0, k, i, sum2=0, pamti;
scanf("%d", &n);
for(i=n;i<=22;i++) {
    if(i<0) pamti=-i;
    else pamti=i;
    sum=0;
   for(k=2;k<=pamti;k++) {

   if(pamti%k==0 && prost(k)) {
   sum=sum+k;
   }

    }

    printf("%d ", sum);
    }


return 0;
}
**moze pomoć??' čak mi je nejasan i tekst zadatka, trazi li se jedna suma ili za svaki broj suma?

#28:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 0:38 pet, 11. 1. 2013
    —
Pise "suma", u jednini, sto znaci da se trazi jedna suma. No, nigdje u zadatku ne pise da je [tex]n \le 22[/tex]. Sto ti verifikator kaze, za koji broj stvar pada?

Usput, ovdje bi stvarno dobro dosao onaj algoritam koji broj dijeli s njegovim djeliteljima.

#29:  Autor/ica: kikotaLokacija: Dalmacijaa <3 PostPostano: 1:24 pet, 11. 1. 2013
    —
piše da pada za input 44.. sad sam popravila:

Kod:
/*Napišite program koji učitava cijeli broj n, te ispisuje sumu svih prostih djelitelja (ignorirajući kratnost)
svih cijelih brojeva različitih od nule koji se nalaze između n i 22 (uključivo).*/
#include<stdio.h>
int prost (int i) {
int j, br=1;
for(j=2;j<i;j++) {
if(i%j==0) br=0;
}
if(br==0) return 0;
else return 1;
}
int main () {
int n, sum=0, k, i, sum2=0, pamti;
scanf("%d", &n);
if(n>22) {
for(i=22;i<=n;i++) {
sum=0;
   for(k=2;k<=i;k++) {

   if(i%k==0 && prost(k)) {
   sum=sum+k;
   }

    }

    sum2=sum2+sum;
    }
    printf("%d", sum2);}
    else {
for(i=n;i<=22;i++) {
    if(i<0) pamti=-i;
    else pamti=i;
    sum=0;
   for(k=2;k<=pamti;k++) {

   if(pamti%k==0 && prost(k)) {
   sum=sum+k;
   }

    }

    sum2=sum2+sum;
    }
    printf("%d", sum2); }

return 0;
}

valjda ovako treba valjat Confused

#30:  Autor/ica: Leolinus PostPostano: 22:21 pet, 11. 1. 2013
    —
Program radi s malim preinakama. Umjesto Ne-array-a koristim array i prolazi... čudno... a možda i ne...

Leolinus (napisa):
Može li netko objasniti što je tu krivo?

Za 5 1782 611 3347 732 2750 ← na ovom javlja grešku.
Izbacuje 7.
Probalo se i s indeksom od 1 do n i s indeksima od 0 do n - 1.
Zadatak je toliko jednostavan, nemam pojma zašto neće uhvatiti rješenje.

EDIT: Ma, zadatak sigurno radi, evaluator je glup ili zadatak nije dobro formuliran.

Kod:
/* 2. zadatak */
 
/* Napisite program koji ucitava prirodni broj n < 39 te niz od 'n' cijelih brojeva.
 * Program treba ispisati sumu indeksa prvih 8 parnih elemenata niza.
 * Ako parnih brojeva ima manje od 8, ispisite sumu indeksa svih parnih brojeva.
 * Ako parnih brojeva uopce nema u nizu, ispisite nulu.
 */
 
/* Rjesenje:
 * Treba biljeziti koliko je parnih brojeva ucitano i naravno cuvati sumu indeksa.
 * I ovisno o uvjetima u zadatku provjeravati sto vrijedi, a sto ne.
 */
 
#include <stdio.h>
 
 
int main()
{
    int n;
    int brojParnih = 0;
    int sumaParnih = 0;
    int i;
    int broj; // ovdje ce se ucitavati varijabla
    // printf("Ucitaj prirodni broj n: ");
    // komentar stavljen jer nesto pise u vezi ukrasa
   
    scanf("%d", &n);
    if (n >= 39) { printf("Upisan krivi n!\n"); exit(1); } // greska
   
    // stavljen indeks na nulu(prvi element)
    for(i = 0; i < n; i++)
    {
        scanf("%d", &broj);
        if (broj % 2 == 0) { brojParnih++; sumaParnih += i; }
        if (brojParnih == 8) break;
    }
    if (brojParnih == 0) printf("0"); // nema parnih brojeva u nizu
    else                 printf("%d", sumaParnih);
    // ako je brojParnih < 8 onda ce se petlja odvrtiti i sumirati sve
    // indekse, ako je brojParnih == 8, izlazi van iz petlje da ne zbraja
    // dalje i ispisuje sumu parnih
    return 0;
}

#31:  Autor/ica: GinoLokacija: Pula PostPostano: 22:59 pet, 11. 1. 2013
    —
Leolinus (napisa):
Umjesto Ne-array-a koristim array i prolazi... čudno... a možda i ne...


sta to znaci?

i koja je razlika u odnosu na prije?
ja vec zadnji put nisam vidio sta je krivo, osim sto, tehnicki gledano, nekad ne ucitas cijeli niz, pa ne znam dal to na neki nacin stvara probleme...

Added after 3 minutes:

@kikota
jel tebi taj kod zaista izgleda tako? jer... nema puno koristi od code/code blokova bez da ti je kod adekvatno uvucen...

#32:  Autor/ica: zaruljicaLokacija: Split/Zagreb PostPostano: 23:31 pet, 11. 1. 2013
    —
može netko pojasnit, javlja mi da je krivo u zadaći, a za moje primjere radi.. konkretno, javlja za input:
14 9160 867 4743 4727 3019 8836 3507 6995 8191
2947 9834 3434 1350 5169

zadatak glasi:
Napišite program koji učitava prirodni broj n≤17, te niz od n cijelih brojeva. Program treba ispisati sumu zadnjih 8 neparnih elemenata niza.
Ako neparnih brojeva ima manje od 8, ispišite sumu svih neparnih. Ako neparnih brojeva uopće nema u nizu, ispišite 0.


Kod:
#include<stdio.h>


int main(){
  unsigned int n,j=8;
  int i, suma=0, br=0,niz[18];
scanf("%u", &n);
    for(i=0; i<n;i++) {
          scanf("%u", &niz[i]);
           }
       for(i=n;i>=0;i--) {
           if(niz[i]%2==(-1) || niz[i]%2==1) {
               suma=suma+niz[i]; br++;
               if(br==j) break;
                     }
                    }
     if(br<j) {
         suma=0;
          for(i=n;i>=0;i--) {
                if(niz[i]%2==(-1) || niz[i]%2==1)
                       suma=suma + niz[i];
                        }
                        }
           printf("%d", suma);
return 0;}


Added after 5 minutes:

btw sad sam provjerila za taj input i izbacuje točno Confused

#33:  Autor/ica: AtomisedLokacija: Exotica PostPostano: 23:55 pet, 11. 1. 2013
    —
Kod:

 for(i=n;i>=0;i--) {
           if(niz[i]%2==(-1) || niz[i]%2==1) {
               suma=suma+niz[i]; br++;
               if(br==j) break;
                     }


Ovdje pristupaš neučitanom članu niza niz[n] pa se na tom mjestu može nalaziti svašta.

#34:  Autor/ica: zaruljicaLokacija: Split/Zagreb PostPostano: 23:57 pet, 11. 1. 2013
    —
da, da, to je to Smile hvala! javim jel točno kad provjere Very Happy

#35:  Autor/ica: Leolinus PostPostano: 1:06 sub, 12. 1. 2013
    —
Gino (napisa):
Leolinus (napisa):
Umjesto Ne-array-a koristim array i prolazi... čudno... a možda i ne...


sta to znaci?

i koja je razlika u odnosu na prije?
ja vec zadnji put nisam vidio sta je krivo, osim sto, tehnicki gledano, nekad ne ucitas cijeli niz, pa ne znam dal to na neki nacin stvara probleme...


Kao što možeš vidjeti kod ne koristi niz. Samo uzima ulaz i zbraja indekse parnih brojeva. Iz nekog razloga, ako prvo spremim cijeli ulaz u niz, a onda prođem kroz taj niz i zbrojim indekse brojeva, onda priznaje rješenje.

#36:  Autor/ica: GinoLokacija: Pula PostPostano: 2:29 sub, 12. 1. 2013
    —
Leolinus (napisa):
Kao što možeš vidjeti kod ne koristi niz. Samo uzima ulaz i zbraja indekse parnih brojeva. Iz nekog razloga, ako prvo spremim cijeli ulaz u niz, a onda prođem kroz taj niz i zbrojim indekse brojeva, onda priznaje rješenje.


Nisam skuzio sta je Ne-array, ali mislio sam da mislis na to. Jesi li razmisljao o tome da je taj neki razlog mozda cinjenica da u tom slucaju ucitas cijeli niz, a u ovom ne. Npr. ako je n=23 i svi brojevi su 0, ti ces ih ucitati 8, a ne 23. Mislim, ne znam kako je tocno sego napravio da tad ne valja, ali cinjenica je da formalno nisi tocno rijesio zadatak.... Naravno, mozda je krivo iz nekih drugih razloga, nije da sam previse gledao taj kod...

V?

#37:  Autor/ica: Leolinus PostPostano: 2:52 sub, 12. 1. 2013
    —
Gino (napisa):
Leolinus (napisa):
Kao što možeš vidjeti kod ne koristi niz. Samo uzima ulaz i zbraja indekse parnih brojeva. Iz nekog razloga, ako prvo spremim cijeli ulaz u niz, a onda prođem kroz taj niz i zbrojim indekse brojeva, onda priznaje rješenje.


Nisam skuzio sta je Ne-array, ali mislio sam da mislis na to. Jesi li razmisljao o tome da je taj neki razlog mozda cinjenica da u tom slucaju ucitas cijeli niz, a u ovom ne. Npr. ako je n=23 i svi brojevi su 0, ti ces ih ucitati 8, a ne 23. Mislim, ne znam kako je tocno sego napravio da tad ne valja, ali cinjenica je da formalno nisi tocno rijesio zadatak.... Naravno, mozda je krivo iz nekih drugih razloga, nije da sam previse gledao taj kod...

V?


Naravno da mi je upravo ta ideja pala na pamet. Bilo mi je malo čudno da se evaluator zeza sa svojim ispisom, valjda bi bilo lijepo da se bavi mojim.

Sigurno je problem u tome što nisu učitani svi podatci. Zapravo, kada bolje razmislim, možda i nije tako, pisalo mi je čak da program ne valja i za 5 1782 611 3347 732 2750. Što znači da imam samo 5 brojeva, i za njih gledam sumu.

A i kod se ne treba previše gledati da bi se uočila kakva greška u logici, zadatak je poprilično jasan i trivijalan.

#38:  Autor/ica: GinoLokacija: Pula PostPostano: 3:32 sub, 12. 1. 2013
    —
Leolinus (napisa):
Sigurno je problem u tome što nisu učitani svi podatci. Zapravo, kada bolje razmislim, možda i nije tako, pisalo mi je čak da program ne valja i za 5 1782 611 3347 732 2750. Što znači da imam samo 5 brojeva, i za njih gledam sumu.

A i kod se ne treba previše gledati da bi se uočila kakva greška u logici, zadatak je poprilično jasan i trivijalan.


Dobro, program za ono ispisuje tocno...

I uvijek treba gledati kod, u najlaksem zadtku se moze napravi jako glupa greska, koju je tesko uociti...

Kad vec pricamo, ovaj dio koji slijedi je malo redundantan.

if (brojParnih == 0) printf("0"); // nema parnih brojeva u nizu
else printf("%d", sumaParnih);

Kad je brojParnih = 0, onda je i sumaParnih = 0, dakle mozes samo ispisivati sumu, if je viska...

#39:  Autor/ica: zaruljicaLokacija: Split/Zagreb PostPostano: 12:52 sub, 12. 1. 2013
    —
dakle, zadatak glasi:
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 12; ako neka dva različita broja imaju jednaku sumu znamenaka u bazi 12, onda ih uspoređujete na uobičajeni način. Ispisane brojeve odvojite razmacima.
a kod izgleda:
Kod:
#include<stdio.h>

int sum_zn(int broj){
 int sum=0, zn;

  if(broj<0) broj=-broj;
     while(broj>0) {
       zn=broj%12;
       sum=sum+zn;
       broj=broj/12;
       }
    return sum;
}

int main( )
     {
  unsigned int n;
  int niz[31];
  int i,j,temp,zamjena, k, zamjena1, temp1;

scanf("%d",&n);
   if(n<31) {
     for(i=0;i<n;i++)
       scanf("%d",&niz[i]);

j=n;

  do {
   zamjena=0;
for(i=0;i<j;i++){
   if(sum_zn(niz[i])<sum_zn(niz[i+1])) {
   
     temp=niz[i];
     niz[i]=niz[i+1];
     niz[i+1]=temp;
     zamjena=1;
       }

     }
   j--;
  }

  while(zamjena);


     for(i=0;i<n;i++)
        printf("%d ", niz[i]);
 }
return 0;
}

i sad, moje pitanje je, zašto ne radi za nulu?? odnosno, kod upisa brojeva npr:
5 4 5 0 36 7
ispisuje:
7 5 4 36 36
i još jedno pitanje, koliko sam shvatila uobičajan način sortiranja ako je suma znamenaka jednaka je uspoređivanje koji je broj veći, tako bi npr, za input 2 3 36 trebalo ispisat:
36 3
moje pitanje je, kako to postić? Smile

#40:  Autor/ica: El_Loco PostPostano: 13:09 sub, 12. 1. 2013
    —
zaruljica (napisa):
i još jedno pitanje, koliko sam shvatila uobičajan način sortiranja ako je suma znamenaka jednaka je uspoređivanje koji je broj veći, tako bi npr, za input 2 3 36 trebalo ispisat:
36 3
moje pitanje je, kako to postić? Smile


tako što umjesto

Kod:
if(sum_zn(niz[i])<sum_zn(niz[i+1]))


staviš

Kod:
if(sum_zn(niz[i])<sum_zn(niz[i+1]) || (sum_zn(niz[i])==sum_zn(niz[i+1]) && niz[i]<niz[i+1]))



a za sami program, ako i poprima vrijednosti 0,...,n-1, tada i+1 poprima 1,...,n, pa se dogodi da imaš niz[n], što nije član tvog niza

#41:  Autor/ica: Leolinus PostPostano: 14:22 sub, 12. 1. 2013
    —
Gino (napisa):
Leolinus (napisa):
Sigurno je problem u tome što nisu učitani svi podatci. Zapravo, kada bolje razmislim, možda i nije tako, pisalo mi je čak da program ne valja i za 5 1782 611 3347 732 2750. Što znači da imam samo 5 brojeva, i za njih gledam sumu.

A i kod se ne treba previše gledati da bi se uočila kakva greška u logici, zadatak je poprilično jasan i trivijalan.


Dobro, program za ono ispisuje tocno...

I uvijek treba gledati kod, u najlaksem zadtku se moze napravi jako glupa greska, koju je tesko uociti...

Kad vec pricamo, ovaj dio koji slijedi je malo redundantan.

if (brojParnih == 0) printf("0"); // nema parnih brojeva u nizu
else printf("%d", sumaParnih);

Kad je brojParnih = 0, onda je i sumaParnih = 0, dakle mozes samo ispisivati sumu, if je viska...


Ne vidim zašto je taj komentar uopće potreban? Ovo ne utječe na rad programa, a tu je upravo zato jer je u jednom trenutku razvoja programa bio potreban. Zašto sam ga stavio? Pa zato jer sam mislio da možda na neki nenormalni nevidljivi način suma nije 0, jer mi je, kao što sam već rekao, za očita rješenja na evaluatoru izbacivalo da je krivo.

#42:  Autor/ica: white_butterfly PostPostano: 12:37 uto, 15. 1. 2013
    —
piše mi da je krivo za 5 3 3 1 10.
ne znam šta bi trebalo promijenit...

zadatak:Napišite program koji učitava 5 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.

#include <stdio.h>
int main () {
int sadasnji, prethodni, i;
for (i=1; i<=4; i++) {
scanf ("%d ", &sadasnji);
{if(i!=1 && prethodni!=0) {
if(sadasnji%prethodni==0) { printf ("%d ", sadasnji); }
}}

prethodni=sadasnji;
}
return 0;
}

#43:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 12:42 uto, 15. 1. 2013
    —
Izvedi program na svom racunalu i unesi brojeve koje ti je verifikator dao, pa vidi sto se desava. Valjda znas na papiru izvuci sto program treba ispisati (ovo: 3 10).

#44:  Autor/ica: PoparaLokacija: Zadar/Zagreb PostPostano: 12:49 uto, 15. 1. 2013
    —
Kolega ti je želio reći da kad učitavaš brojeve da ne pišeš onaj razmak tj. možeš samo staviti scanf ("%d", &sadasnji); i da moraš učitati 5 brojeva a ne 4 kao što ti učitaš Smile

#45:  Autor/ica: white_butterfly PostPostano: 12:51 uto, 15. 1. 2013
    —
Uspjela sam! hvala Smile

#46:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 13:01 uto, 15. 1. 2013
    —
Popara (napisa):
Kolega ti je želio reći da kad učitavaš brojeve da ne pišeš onaj razmak tj. možeš samo staviti scanf ("%d", &sadasnji); i da moraš učitati 5 brojeva a ne 4 kao što ti učitaš Smile


Ne, kolega je zelio reci da isprobavate programe, jer nije moguce ucitati 4 broja umjesto njih 5 i ne primijetiti gresku ako je program isproban na racunalu. Djabe domace zadace ako se tretiraju kao "programiranje na papiru" ("napisem, pa kud puklo" princip). Doci ce tezi zadacu, pa zadace iz SPA i RP1,... Ako sada ne naucite isprobavati vlastite programe, kasnije ce vam to znanje jako faliti.

#47:  Autor/ica: white_butterfly PostPostano: 15:16 uto, 15. 1. 2013
    —
isprobavala sam ja svašta, ali s različitim primjerima na kojima je radio, tek kad sam ga predala, sam isprobala na taj primjer i onda mi nije bilo jasno u čemu je greška. Ali sad sam shvatila gdje sam pogriješila.

#48:  Autor/ica: math_student PostPostano: 0:56 čet, 17. 1. 2013
    —
pitanje(zadatak iz zadaće):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 14, 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.

moj kod: http://pastebin.com/GJAJu7Fg
uglavnom, ne radi za n=130 i ne razumijem zašto. dala sam si toliko truda da utipkam primjer za koji ne radi i sve indekse pobrojila i sve je štimalo. molim pomoć. Smile

#49:  Autor/ica: El_Loco PostPostano: 1:06 čet, 17. 1. 2013
    —
a što ako uneseš n=3, a={0,1,7}
najveći djeljiv sa 14 je 0, fja vrati 0, i ništa se ne ispiše
ostatak koda mi djeluje dobar

#50:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 1:16 čet, 17. 1. 2013
    —
To sto El_Loco kaze + uz trazene brojeve, program ti ispisuje i maksimum.

#51:  Autor/ica: math_student PostPostano: 15:24 čet, 17. 1. 2013
    —
hvala Very Happy

#52:  Autor/ica: ena! PostPostano: 18:31 čet, 17. 1. 2013
    —
do kad treba rijesit zadacu??

#53:  Autor/ica: 4017 PostPostano: 23:24 čet, 17. 1. 2013
    —
Muku mučim s ovim zadatkom već dugo, pa bih molila za pomoć: Napišite program koji učitava prirodne brojeve a i b, te u padajućem poretku ispisuje sve cijele brojeve koji se nalaze između a i b (bez a i b), a u zapisu s bazom 7 imaju samo znamenke između 2 i 6 (uključivo i granice). 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!



zadatak.c
 Description:

Download
 Filename:  zadatak.c
 Filesize:  599 Bytes
 Downloaded:  129 Time(s)


#54:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 1:09 pet, 18. 1. 2013
    —
Pa kako se gledaju znamenke broja u bazi? Shocked Onaj while u baza7() ce biti laz odmah u startu, za bilo koji broj osim 2, 3, 4, 5 i 6. Valjda broj treba dijeliti sa 7 dok ne padne na nulu, a x%7 je znamenka, tj. ono sto treba biti izmedju 2 i 6.

#55:  Autor/ica: shakespeare PostPostano: 23:08 pet, 18. 1. 2013
    —
Znači, dokad se zadaće mogu slati? Very Happy

#56:  Autor/ica: Shirohige PostPostano: 23:12 pet, 18. 1. 2013
    —
shakespeare (napisa):
Znači, dokad se zadaće mogu slati? Very Happy


Slajd 9:
http://web.math.pmf.unizg.hr/~singer/P1_1213/13.pdf

Citat:

Bitno: Aplikacija za “zadace” se
zakljucava s pocetkom drugog kolokvija.
Nakon toga,
nema vise novih prijava, ni predaje zadataka.
U tom trenu vrijedi:
Tko je “unutra” i koliko je predao/la . . . , to je to,
i nema iznimaka!



Forum@DeGiorgi -> Programiranje 1 i 2


output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.

Stranica 1 / 1.

Powered by phpBB © 2001,2002 phpBB Group
Theme created by Vjacheslav Trushkin