Dobar dan,
Tek sam se sad registirao jer ima neke stvari koje jos ne shvacam , a mislim da tu ima dosta ljudi koji ovakve trivijalne stvari znaju i mogli bi mi objasniti. Uglavnom totalni sam nab za programiranje ( tek sam sad poceo radit zbog kolegija na faksu ). Imam sljedeci problem.
kod pokretanja programa moram unjeti argumente. To sam vec nasao prek googla " int main (int argc, char *argv[]){ }" i shvatio sam kak funkcinira...
argc je broj koji kaze koliko argumenata ima, a argv je array koji ima vrijednosti arugmenata po poljima upisane.
Recimo da se program zove test.c kad ga kompajliram i pokrenem sa naredbom "./a.out 15 16 17 18"
argc = 5
argv[0] = ./a.out
argv[1] = 15
argv[2] = 16
argv[3] = 17
argv[4] = 18
tako sam ja to shvatio da funkcionira..
cilj zadatka je izracunati povrsinu i opseg jednakostranicnog mnogokuta i vrijednosti argumenata su : prvi argument ( 15 ) je broj stranica prvog mnogokuta , a drugi argument ( 16 ) je duljina stranice prvog mnogokuta itd... maksimalno je dozovoljeno imati 5 mnogokuta. To sam nekako logicki mislio napravit sa naredbom if gdje cu ispitat argc je li veci od 11 .. ak je znaci ima vise od 5 mnogokuta....prekini program.
ja sam to ovako zamislio.... kako cu spremiti argumente i njih koristit. napravio sam for petlju koja ide ovako
int i,bs,ds;
for ( i =1 ; i<argc<i=i+2) {
bs = argv[i];
ds = argv[i+1];
switch (fork()){
case 0: {
proces(broj_str, dulj_str);
break;
}
case -1: {prinft ("Greska");
break;
}
default: break;
}
}
Sad ono sto mene pati su greske sa koliko sam shvatio pokazivacima. za linije
bs = argv[i];
ds = argv[i+1];
mi kaze gresku " warning: cast from pointer to integer of different size " . Moze netko objasnit zasto to kaze i kako to rjesit. Moja pretpostavka je da je to zbog tipa podataka.. gore sam reko char , a bs i ds sam kao int deklarirao i jel to mora ici ovako mozda? bs = (int) argv[i]; i ds = (int) argv[i+1];
Prije sve toga imo sa konstantnu gresku " Segmentation failed" kod pokretanja programa i isto mi nije jasno zasto to izbacuje.
Pod case 0 sam stavio da za svaki mnogokut pokrene "proces " koji ce za taj mnogokut izracunavat opseg i povrsinu .. Stvari koje me zanimaju kod pokretanje funkcija su vrijednosti koje se salju pisu ovako u zagradama kak sam ja napravio ili na neki drugi nacin? i jel bitno da kod funkcije void proces(int br, int ds) da se unutar zagrade stavlja int da se deklarira varijbala posto nije globalna?
Ujedno ako netko imam kakvih materijala za te stvari na hrvatskom molim link :)
Neznam jesam li sve dobro objasnio , ali ne smijem cijeli kod programa stavit da slucajno ne bi netko doso uzeo program predao ga pa dobijemo oboje negativne bodove. Te neke stvari mi nisu jasno oko pozivana funkcije i oko pokazivaca... negdje gresku radim i ubija me to...
Ako ima kakvih pitanja vezanih da mi pomognete slobodno pitajte.
Hvala
Poz