zadatak
Select messages from
# through # FAQ
[/[Print]\]

Forum@DeGiorgi -> Programiranje 1 i 2

#1: zadatak Autor/ica: ludamath PostPostano: 17:38 čet, 3. 4. 2014
    —
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;
    }


Stalno mi u funkciji javlja grešku fod drugog if-a i kod printf-a u programu.
Pomoć!!

#2:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 17:53 čet, 3. 4. 2014
    —
C nije niz nego funkcija, pa se ne moze indeksirati.

Dobro je procitati sto compiler prigovara, jer on ima lijep obicaj objasniti sto ga muci. Ako ti i dalje nije jasan prigovor, prepisi ga ovdje kad prijavljujes problem, jer to bitno olaksava trazenje greske.

Na Forumu si ukljuci podrsku za BBcode, inace ti se kodovi nece dobro prikazivati cak niti kad zapakrias u [code]...[/code].

P.S. Ni prvi if ti nije dobar. Hint: pogledaj malo bolje "uvjet" koji imas napisan tamo.

#3:  Autor/ica: Countess PostPostano: 19:40 sri, 30. 4. 2014
    —
Zadatak 3.1.3 iz skripte: (zapravo, nije bitan zadatak, ali neka.. Confused )
Napišite program koji učitava dva prirodna broja , te matrice . Program treba izračunati sumu matrica c = a + b i ispisati ju ... itd.

Izgleda da imam nekakvih problema s kodom ili s laptopom... Jel netko voljan iskopirati kôd kod sebe i provjeriti jel sve štima? Ili barem provjeriti jesam li napravila neku kardinalnu grešku koju ne vidim?

Uglavnom, program mi se ruši kod učitavanja brojeva u drugu matricu (matrica B). Pozovem funkciju scan_matrix prvi put, učitam elemente od A, pozovem ju drugi put, i program se sruši odmah kod prve for-petlje.

Zanimljivo je ( Question ) da se program NE ruši ako zamjenim poredak matrica (ako prvo učitavam elemente od B, pa onda od A).

Confused

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 ] );
        }
}


#4:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 20:50 sri, 30. 4. 2014
    —
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.

#5:  Autor/ica: Countess PostPostano: 21:08 sri, 30. 4. 2014
    —
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.


Hvala!

Da, deklaracije s varijablama ne prolaze ni sada - ovako deklariram samo u programima za "osobnu" upotrebu Embarassed

Mislila sam da su 2-dim polja slična 1-dim u ovom slučaju, jer s nizovima tipa x[n] u memoriji i poslanim x[nešto] u funkciju nisam naišla na probleme (ali to očito ne znači da problemi ne postoje Laughing )

Hvala još jednom, odoh ispravit greške.

#6:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 23:29 sri, 30. 4. 2014
    —
Ako smijem preporuciti trece predavanje profesora Singera, slideovi 62-66 (posebno primjer koji pocinje pri dnu slidea 65).

Vjerujem da ce biti jasno sto se dogadja i zasto treba paziti na deklarirani broj stupaca (tj. duljine redaka) u matrici. Iz istog razloga ne moramo navoditi prvu dimenziju matrice koja je argument funkcije, dok ostale dimenzije moraju biti zadane.

I utoliko je slicno 1D polju: niti jednome ne treba paziti na prvu dimenziju. Kvaka je u tome da je 1D polju to i jedina dimenzija, dok 2D polje ima jos jednu i na nju treba itekako paziti.

#7:  Autor/ica: Countess PostPostano: 10:02 čet, 1. 5. 2014
    —
Znači, ovako može (za osobnu upotrebu): (zanemarimo na trenutak što se preporuča, a što ne Smile )

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 )
{
    ...
}


Odnosno, program se rušio jer sam spremala elemente u memoriju na mjesto i * 10 + j, a originalna matrica ni blizu 10 stupaca? O, kuku meni...

Hvala na strpljenju!
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 Very Happy

#8:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 14:52 čet, 1. 5. 2014
    —
Countess (napisa):
Znači, ovako može (za osobnu upotrebu)...


Da, do na opasku da na kolokviju, pretpostavljam, i dalje ne moze.

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? O, kuku meni...


Tocno tako. Smile Recimo, za m=2 i n=3, element a[1][1] zapise na 12. mjesto (tj. na mjesto s indeksom 11) niza a koji ima samo 2*3=6 mjesta u memoriji.

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 Very Happy


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.

Mogu samo cestitati na pristupu gradivu. Applause

#9:  Autor/ica: Countess PostPostano: 8:15 pet, 2. 5. 2014
    —
vsego (napisa):
Da, do na opasku da na kolokviju, pretpostavljam, i dalje ne moze.


Naravno. Svejedno, cilj je znati, a ne samo proći kolokvij, zato hvala na detaljnim objašnjenjima Smile

vsego (napisa):
Tocno tako. Smile

Yes

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.

Nažalost, do sad sam s predavanja i vježbi pohvatala gotovo ništa. 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? Very Happy

vsego (napisa):
Mogu samo cestitati na pristupu gradivu. Applause

Nda, dan prije kolokvija Krezubi Mr. Green

#10:  Autor/ica: mdokoLokacija: Heriot-Watt University, Edinburgh PostPostano: 9:37 pet, 2. 5. 2014
    —
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?

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.

#11:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 18:05 pet, 2. 5. 2014
    —
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? Very Happy


S iskustvom (ne s godinama; imali smo zbilja uporne "musterije" na Prog i godine im nisu pomogle). Ovo sto si napisala je ono sto stalno tvrdim: treba isprobavati na racunalu, i to ne copy/paste iz skripte ili slideova, cak ne niti prepisivanje (mada je korisnije od copy/pastea), nego rjesavanje. U pocetku ne ide, pa se baci oko u skriptu/predavanja, no treba sto vise samostalno. Jednom kad krene, dalje ide relativno lako.

mdoko (napisa):
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?

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.


Iz tvoje i moje perspektive da. No, mislim da je nekome tko nikad nije programirao, bas svaki kod u "teskoj" kategoriji.

Citanje daje (cesto lazni) dojam "meni je jasno". Dok student samostalno ne napise odredjenu kolicinu programa koji se uredno compiliraju i rade sto treba, nema govora o tome da je stvarno "jasno'.

#12:  Autor/ica: pllook PostPostano: 17:59 pon, 19. 5. 2014
    —
Može li mi netko objasniti što će se ispisati u ova dva primjera?

1. struct ime {unsigned int a:3, b:2; } x={10,11};
printf("%d,%d\n",x.a,x.b ;


2. struct list { int broj; struct list *next;};
void ispis(struct list *el)
{
if(el==NULL) return;
printf("%d", el->broj);
ispis(el->next);
}

za 1,2,3,4

#13:  Autor/ica: mdokoLokacija: Heriot-Watt University, Edinburgh PostPostano: 18:47 pon, 19. 5. 2014
    —
pllook (napisa):
Može li mi netko objasniti što će se ispisati u ova dva primjera?


Confused

Kompajliraj, pokreni, pa vidi.

#14:  Autor/ica: pllook PostPostano: 18:55 pon, 19. 5. 2014
    —
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ć..

#15:  Autor/ica: mdokoLokacija: Heriot-Watt University, Edinburgh PostPostano: 19:08 pon, 19. 5. 2014
    —
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ć..


Za prvi, pogledaj ovdje: http://www.cs.cf.ac.uk/Dave/C/node13.html

Što se drugog tiče, program nije potpun. Funkcija ispis sama po sebi ništa ne ispisuje - potrebno je imati neki konkretan poziv te funkcije.



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