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

Pojašnjenje zadatka iz dz3
WWW:

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


Pridružen/a: 07. 10. 2013. (01:37:06)
Postovi: (1F)16
Sarma = la pohva - posuda
= 3 - 2

PostPostano: 0:28 ned, 23. 3. 2014    Naslov: Pojašnjenje zadatka iz dz3 Citirajte i odgovorite

Napišite program koji učitava prirodni broj n ≤ 17 i niz od n cijelih brojeva. Program treba kreirati donjetrokutastu matricu M reda n kojoj se učitani brojevi nalaze na dijagonali (redom kojim su učitani), a za elemente ispod dijagonale vrijedi:
Mi,j=(−5Mi−1,j−4Mi,j+1) mod 9697617,
gdje mod označava nenegativni ostatak pri dijeljenju lijevog broja s desnim.
Program treba ispisati elemente posljednjeg retka matrice M (ispisane brojeve odvojite razmakom).

Da li je to umnozak tri broja ili je Mi,j bas taj ostatak, a i 9697617 je stvarno velik broj pa taj x%9697617 za x<9697617 je bas x ako se ne varam.. Ne znam stvarno, kod je na mjestu i radi onako kako sam ja shvatio, ali mi ne priznaje.

[code:1]#include <stdio.h>
int g(int a, int b){
return (-5*a-4*b)%9697617<0 ? -(-5*a-4*b)%9697617 : (-5*a-4*b)%9697617;
}
int main(){
int n,i,j,k;
scanf ("%d",&n);
int a[n],M[n][n];
for (i=0;i<n;i++)
scanf("%d",&a[i]);
for (i=0;i<n;i++)
for (j=0;j<n;j++){
if (i==j) M[i][j]=a[i];
else M[i][j]=0;
}
for (k=0;k<n-1;k++)
for (i=n-1;i>k;i--)
M[i][i-k-1]=g(M[i-1][i-k-1],M[i][i-k]);
for (i=0;i<n;i++)
printf ("%d%s",M[n-1][i], i==n-1 ? "" : " ");
}[/code:1]
Napišite program koji učitava prirodni broj n ≤ 17 i niz od n cijelih brojeva. Program treba kreirati donjetrokutastu matricu M reda n kojoj se učitani brojevi nalaze na dijagonali (redom kojim su učitani), a za elemente ispod dijagonale vrijedi:
Mi,j=(−5Mi−1,j−4Mi,j+1) mod 9697617,
gdje mod označava nenegativni ostatak pri dijeljenju lijevog broja s desnim.
Program treba ispisati elemente posljednjeg retka matrice M (ispisane brojeve odvojite razmakom).

Da li je to umnozak tri broja ili je Mi,j bas taj ostatak, a i 9697617 je stvarno velik broj pa taj x%9697617 za x<9697617 je bas x ako se ne varam.. Ne znam stvarno, kod je na mjestu i radi onako kako sam ja shvatio, ali mi ne priznaje.

Kod:
#include <stdio.h>
int g(int a, int b){
return (-5*a-4*b)%9697617<0 ? -(-5*a-4*b)%9697617 : (-5*a-4*b)%9697617;
}
int main(){
int n,i,j,k;
scanf ("%d",&n);
int a[n],M[n][n];
for (i=0;i<n;i++)
    scanf("%d",&a[i]);
for (i=0;i<n;i++)
    for (j=0;j<n;j++){
        if (i==j) M[i][j]=a[i];
        else M[i][j]=0;
    }
for (k=0;k<n-1;k++)
    for (i=n-1;i>k;i--)
    M[i][i-k-1]=g(M[i-1][i-k-1],M[i][i-k]);
for (i=0;i<n;i++)
printf ("%d%s",M[n-1][i], i==n-1 ? "" : " ");
}


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


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

PostPostano: 2:50 ned, 23. 3. 2014    Naslov: Citirajte i odgovorite

Da, [tt]mod[/tt] je tocno to, ali kod nije dobar. Hint:

[code:1]for (k=0;k<n-1;k++)
for (i=n-1;i>k;i--)
M[i][i-k-1]=g(M[i-1][i-k-1],M[i][i-k]);[/code:1]

Recimo, za [tt]i = n-1[/tt], ti racunas [tt]M[i][nesto][/tt] pomocu [tt]M[i-1][nesto][/tt], a taj jos nije izracunat (bit ce u nekom buducem koraku).

Usput, gradivo Prog 1: niz i matrica se u C-u ne deklariraju tako.
Da, mod je tocno to, ali kod nije dobar. Hint:

Kod:
for (k=0;k<n-1;k++)
  for (i=n-1;i>k;i--)
    M[i][i-k-1]=g(M[i-1][i-k-1],M[i][i-k]);


Recimo, za i = n-1, ti racunas M[i][nesto] pomocu M[i-1][nesto], a taj jos nije izracunat (bit ce u nekom buducem koraku).

Usput, gradivo Prog 1: niz i matrica se u C-u ne deklariraju tako.



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


Pridružen/a: 07. 10. 2013. (01:37:06)
Postovi: (1F)16
Sarma = la pohva - posuda
= 3 - 2

PostPostano: 12:50 ned, 23. 3. 2014    Naslov: Citirajte i odgovorite

[quote="vsego"]Da, [tt]mod[/tt] je tocno to, ali kod nije dobar. Hint:

[code:1]for (k=0;k<n-1;k++)
for (i=n-1;i>k;i--)
M[i][i-k-1]=g(M[i-1][i-k-1],M[i][i-k]);[/code:1]

Recimo, za [tt]i = n-1[/tt], ti racunas [tt]M[i][nesto][/tt] pomocu [tt]M[i-1][nesto][/tt], a taj jos nije izracunat (bit ce u nekom buducem koraku).

Usput, gradivo Prog 1: niz i matrica se u C-u ne deklariraju tako.[/quote]

Kako nije izracunat?? Za k=0 ja racunam dijagonalu ispod glavne dijagonale, a glavnu dijagonalu znam.. Ustvari po k petlji ja racunam male dijagonalice ispod glavne

Znam znam, ali su mi rekli da je u redu dokle god ucitam n prije deklariranja.
vsego (napisa):
Da, mod je tocno to, ali kod nije dobar. Hint:

Kod:
for (k=0;k<n-1;k++)
  for (i=n-1;i>k;i--)
    M[i][i-k-1]=g(M[i-1][i-k-1],M[i][i-k]);


Recimo, za i = n-1, ti racunas M[i][nesto] pomocu M[i-1][nesto], a taj jos nije izracunat (bit ce u nekom buducem koraku).

Usput, gradivo Prog 1: niz i matrica se u C-u ne deklariraju tako.


Kako nije izracunat?? Za k=0 ja racunam dijagonalu ispod glavne dijagonale, a glavnu dijagonalu znam.. Ustvari po k petlji ja racunam male dijagonalice ispod glavne

Znam znam, ali su mi rekli da je u redu dokle god ucitam n prije deklariranja.


[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: 14:22 ned, 23. 3. 2014    Naslov: Citirajte i odgovorite

[quote="markann"][quote="vsego"]
Usput, gradivo Prog 1: niz i matrica se u C-u ne deklariraju tako.[/quote]
Znam znam, ali su mi rekli da je u redu dokle god ucitam n prije deklariranja.[/quote]

Zavisi po kojem standardu radiš. Po C90 (a.k.a. ANSI), to ne valja. Po C99 i C11 (a.k.a. C0xb), stvar je posve legalna.

Evo i kratkog eksperimenta:

[code:1]
$ cat proba.c
#include <stdio.h>

int main(){
int n;
scanf ("%d",&n);
int a[n],M[n][n];
return 0;
}

$ gcc --version
gcc (Gentoo 4.7.3-r1 p1.4, pie-0.5.5) 4.7.3
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ gcc -std=c90 -pedantic-errors proba.c; echo "Compiler exit status: $?."
proba.c: In function 'main':
proba.c:6:3: error: ISO C90 forbids variable length array 'a' [-Wvla]
proba.c:6:3: error: ISO C90 forbids variable length array 'M' [-Wvla]
proba.c:6:3: error: ISO C90 forbids variable length array 'M' [-Wvla]
proba.c:6:3: error: ISO C90 forbids mixed declarations and code [-pedantic]
Compiler exit status: 1.

$ gcc -std=c99 -pedantic-errors proba.c; echo "Compiler exit status: $?."
Compiler exit status: 0.

$ gcc -std=c11 -pedantic-errors proba.c; echo "Compiler exit status: $?."
Compiler exit status: 0.
[/code:1]
markann (napisa):
vsego (napisa):

Usput, gradivo Prog 1: niz i matrica se u C-u ne deklariraju tako.

Znam znam, ali su mi rekli da je u redu dokle god ucitam n prije deklariranja.


Zavisi po kojem standardu radiš. Po C90 (a.k.a. ANSI), to ne valja. Po C99 i C11 (a.k.a. C0xb), stvar je posve legalna.

Evo i kratkog eksperimenta:

Kod:

$ cat proba.c 
#include <stdio.h>

int main(){
  int n;
  scanf ("%d",&n);
  int a[n],M[n][n];
  return 0;
}

$ gcc --version
gcc (Gentoo 4.7.3-r1 p1.4, pie-0.5.5) 4.7.3
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ gcc -std=c90 -pedantic-errors proba.c; echo "Compiler exit status: $?."
proba.c: In function 'main':
proba.c:6:3: error: ISO C90 forbids variable length array 'a' [-Wvla]
proba.c:6:3: error: ISO C90 forbids variable length array 'M' [-Wvla]
proba.c:6:3: error: ISO C90 forbids variable length array 'M' [-Wvla]
proba.c:6:3: error: ISO C90 forbids mixed declarations and code [-pedantic]
Compiler exit status: 1.

$ gcc -std=c99 -pedantic-errors proba.c; echo "Compiler exit status: $?."
Compiler exit status: 0.
                                                           
$ gcc -std=c11 -pedantic-errors proba.c; echo "Compiler exit status: $?."
Compiler exit status: 0.


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


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

PostPostano: 14:44 ned, 23. 3. 2014    Naslov: Citirajte i odgovorite

[quote="markann"]Kako nije izracunat?? Za k=0 ja racunam dijagonalu ispod glavne dijagonale, a glavnu dijagonalu znam.. Ustvari po k petlji ja racunam male dijagonalice ispod glavne[/quote]

Yes, u pravu si. No, nasao sam jos jednu gresku.
[tex]-1 \operatorname{mod} 3 \ne 1 \operatorname{mod} 3[/tex],
nego
[tex]-1 \operatorname{mod} 3 = (-1+3) \operatorname{mod} 3 = 2 \operatorname{mod} 3[/tex].

Rijesi i deklaraciju niza. Za ispit je zdravije drzati se onoga sto se uci na predavanju/vjezbama, nego onoga sto "su ti rekli". U konacnici, na ovo tvoje se gube bodovi na kolokviju, cak i ako prolazi verifikaciju u zadaci (sto mislim da ne prolazi, no davno sam pisao verifikator, pa se ne sjecam vise). Probaj sloziti taj dio kako spada, pa zapomazi ako i dalje ne prihvaca.

Sitne opaske:
- zadnji [tt]printf[/tt] moze samo ispisivati razmak nakon broja (onaj iza zadnjeg nece zbuniti verifikator),
- treba ti inicijalizaicja dijagonale, no ne i ostalih elemenata matrice (dakle, za taj dio je dosta jedna petlja).
markann (napisa):
Kako nije izracunat?? Za k=0 ja racunam dijagonalu ispod glavne dijagonale, a glavnu dijagonalu znam.. Ustvari po k petlji ja racunam male dijagonalice ispod glavne


Yes, u pravu si. No, nasao sam jos jednu gresku.
[tex]-1 \operatorname{mod} 3 \ne 1 \operatorname{mod} 3[/tex],
nego
[tex]-1 \operatorname{mod} 3 = (-1+3) \operatorname{mod} 3 = 2 \operatorname{mod} 3[/tex].

Rijesi i deklaraciju niza. Za ispit je zdravije drzati se onoga sto se uci na predavanju/vjezbama, nego onoga sto "su ti rekli". U konacnici, na ovo tvoje se gube bodovi na kolokviju, cak i ako prolazi verifikaciju u zadaci (sto mislim da ne prolazi, no davno sam pisao verifikator, pa se ne sjecam vise). Probaj sloziti taj dio kako spada, pa zapomazi ako i dalje ne prihvaca.

Sitne opaske:
- zadnji printf moze samo ispisivati razmak nakon broja (onaj iza zadnjeg nece zbuniti verifikator),
- treba ti inicijalizaicja dijagonale, no ne i ostalih elemenata matrice (dakle, za taj dio je dosta jedna petlja).



_________________
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
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.
Stranica 1 / 1.

 
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