Kod: |
#include<stdio.h>
#include<stdlib.h> int C(int n) { if(n=0) return 4; if(n>0) return (((3*n + 7)/(7*n + 7))*C[n-1]); } int main(void){ int n; scanf("%d", &n); printf("%g\n",C[n] ); return 0; } |
Kod: |
# include <stdio.h>
int main() { void scan_matrix ( double (*)[], int, int, char ); int m, n; printf ( "Ucitaj m i n: \n" ); scanf ( "%d %d", &m, &n ); double a[ m ][ n ], b[ m ][ n ]; scan_matrix ( a, m, n, 'A' ); scan_matrix ( b, m, n, 'B' ); return 0; } void scan_matrix ( double x[][10], int m, int n, char name ) { int i, j; printf ( "\nUcitajte elemente matrice %c", name ); for ( i = 0; i < m; i++ ) for ( j = 0; j < n; j++ ) { printf ( "\n%c[%d][%d] = ", name, i, j ); scanf ( "%lg", &x[ i ][ j ] ); } } |
vsego (napisa): |
Tvoje matrice su reda mxn (u memoriji), ali ih u funkciju saljes kao nestox10. To dovede do toga da brljas po memoriji koja toj matrici ne pripada. Ako "zagrebes" po dijelu koji ne pripada niti programu, stvar se srusi (inace "samo" daje krive rezultate).
Dok sam ja bio na kolegiju, deklaracije tip ime[varijabla][varijabla] nismo dozvoljavali. Ne znam "prolazi" li to sada, no preporucam da to NE radite, nego da zadajete tip ime[konstanta][konstanta]. Ako dimenzije nisu znane, zadatak cilja na dinamicku alokaciju. |
Kod: |
# include <stdio.h>
int main() { void scan_matrix ( double (*)[], int, char ); int m; scanf ( "%d", &m ); double a[ m ][ 10 ]; scan_matrix ( a, m, 'A' ); return 0; } void scan_matrix ( double x[][10], int m, char name ) { ... } |
Countess (napisa): |
Znači, ovako može (za osobnu upotrebu)... |
Countess (napisa): |
Odnosno, program se rušio jer sam spremala elemente u memoriju na mjesto i * 10 + j, a originalna matrica ni blizu 10 stupaca? |
Countess (napisa): |
Naravno da se to ne bi dogodilo da školski deklariram sve dimenzije s konstantama, ali sad ću sigurno bolje zapamtiti zašto se to ne preporuča, jer je očito "Daj nemoj to tak radit!" samo rezultiralo velikom znatiželjom |
vsego (napisa): |
Da, do na opasku da na kolokviju, pretpostavljam, i dalje ne moze. |
vsego (napisa): |
Tocno tako. |
vsego (napisa): |
Istini za volju, predavanja to objasne (kako se vidi iz mog proslog posta), no cinjenica je da je previse tih tehnickih zackuljica da ih covjek sve (ili cak vecinu) pohvata iz materijala i/ili nastave. Za programiranje treba iskustvo, nema tu spasa, i zato je isprobavanje itekako dobro, dapace pozeljno, pa cak i s "krivim" nacinima kodiranja (dok se ima na umu sto prolazi na kolokviju, a sto ne). Puno korisnije od suhog listanja skripte i/ili slideova s predavanja. |
vsego (napisa): |
Mogu samo cestitati na pristupu gradivu. |
Countess (napisa): |
primijetila sam da u većini slučajeva ne mogu shvatiti što program radi ako samo čitam kôd. Jel to dođe s iskustvom? |
Countess (napisa): |
Nekako mi ta predavanja uopće nisu "sjela"; u biti, primijetila sam da u većini slučajeva ne mogu shvatiti što program radi ako samo čitam kôd. Jel to dođe s (godinama) iskustvom? |
mdoko (napisa): | ||
Djelomično. Jednostavnije kodove ćeš nakon nekog vremena sigurno moći razumjeti čitajući ih, ali za bilo što ozbiljnije, to jednostavno nije način na koji se kod može kvalitetno razumjeti. |
pllook (napisa): |
Može li mi netko objasniti što će se ispisati u ova dva primjera? |
pllook (napisa): |
prvi mi ispiše 2,3, ali ne razumijem zašto je to tako.
a za drugi ne znam ni kako treba unijeti ove brojeve ili šta već.. |
output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.