Zadatak u C-u

Zadatak u C-u

offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3898
  • Gde živiš: Novi Sad,Klisa

Napisano: 26 Sep 2012 15:32

Duž kružnog puta nalazi se N gradova i u svakom od njih postoji prodavnica bele tehnike. Poznata je cena zamrzivača u svakom gradu, i cena vožnje do sledećeg grada sa povratkom. Za meštane svakog grada odredidi grad u kome će najekonomičnije proći prilikom kupovine zamrzivača (da bi minimizirali trošak), i u kom smeru da
putuju do njega.
#include<stdio.h> #include<conio.h> #define MAX 40 int main() {    int cena[MAX],karta[MAX],i,n,poz,xu,yu,s[MAX],j,z[MAX],q[MAX],min,t,pozk;    for(i=0;i<n;i++) cena[i]=karta[i]=0;    do    {       printf("Broj gradova i broj zamrzivaca:");       scanf("%d",&n);       if(n>0 && n<MAX) break;       clrscr();    }            while(1);     printf("Unesite cenu zamrzivaca");     xu=wherex();     yu=wherey();     xu=1;     yu++;    for(i=0;i<n;i++)    {      gotoxy(xu,yu);      scanf("%d",&cena[i]);      xu+=5;      if(xu>80) xu=1,yu++;    }    printf("Unesite cenu karte");     xu=wherex();     yu=wherey();     xu=1;     yu++;    for(i=0;i<n;i++)    {       gotoxy(xu,yu);      scanf("%d",&karta[i]);      xu+=5;      if(xu>80) xu=1,yu++;    }    printf("\n\nUnesite vas grad:");    do{        xu=wherex();        yu=wherey();    scanf("%d",&poz);    if(poz>0 && poz<n) break;    gotoxy(xu,yu);    printf("         ");    gotoxy(xu,yu);    }while(1);    s[0]=min;    for(i=0;i<n;i++)    {         s[i]=karta[i]+cena[i];         if(s[i]<min) min=s[i],pozk=j;    }    printf("Karta:%d\n Cena zamrzivaca:%d ",karta[pozk],cena[pozk]);    getch(); }

ja sam ovako nesto krenuo da radim ali ne valja...treba mi najeftinija putanja za sve gradove i zamrzivace... Sad

Dopuna: 27 Sep 2012 9:45

inace zadatak je bio postavljen i na Fakultetu tehinckih nauka u Novom Sadu. Skoro svi studenti su pali zato sto im je ovaj zadatak postavljen bio Mr. Green



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Jul 2011
  • Poruke: 5424

Evo ovako napamet kako bih ja to uradio.

Imao bih 2 niza, jedan za cene zamrzivača, a jedan za cene puta. Onda bih pomoću dva for ili while ciklusa (jedan rastući, drugi opadajući) odredio najmanje cene, u dve zasebne varijable smeštao dva index-a najmanjeg za oba ciklusa. Na kraju bih uporedio te cene i ispisao rezultat (dve varijable koje će se uporediti, i na osnovu njih ispisati smer). Upoređivanje bih radio pod pretpostavkom da je početni najjefiniji, ali bih imao i jednu varijablu gde se smešta put (na početku 0, a posle se vremenom sabira sa predhodnim).

Ovo je možda malo konfuzno (a možda i ne radi). Mr. Green Videću večeras da napišem kod.



offline
  • Pridružio: 10 Mar 2009
  • Poruke: 101
  • Gde živiš: Podgorica

Mislim da je u pitanju dinamicko. Radio sam slican zadatak, Laundry ali mislim da je to na istu foru
Ideja kod laundry zadatka je bila da imas N hotela i M perionica. Neki hoteli nemaju perionice i oni idu do prvog najblizeg hotela koji ima, ali to kosta. Zadatak je bio da se rasporedi M perionica u N hotela tako da je trosak sto manji.

Evo kod: paste2.org/p/2274203

Resenje je bilo da se uzme matrica N*M, i prva kolona popuni tako sto da ako imas 1 hotel dje ces da stavis jednu masinu, ako imas dva hotela, dje se najbolje isplati, ako imas 3 gdje ces da postavis jednu perionicu i sve tako. Kada popunis prvu kolonu kreces da racunas za drugu kada imas 2 perionice. Ali kreces od polja 2x2 (2 hotela i 2 perionice), i racunas koliko ti treba je trebalo za 1 hotel 2 perionice + koliko ti treba za ostatak hotela. i sve tako redjas. Drugim rijecima, svaku sledecu cijenu dobijas preko prethodne + min od preostalih.... Na kraju ces u donjem desnom cosku matrice (mem[N-1][M-1] ako indeksi idu od 0) da imas resenje... Malo je komplikovano Smile
Ali mislim da je ovo slican zadatak tome, a mozda je ideja slicna, uglavnom 80% sam siguran da je ovo dinamicko programiranje Smile

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Mislim da je ovde rec o algoritmima za nalazenje najkraceg/najbrzeg puta. Pada mi na pamet Dijkstra algoritam, koji se koristi u navigacionim uredjajima (gde se recimo u obzir uzima duzina puta i dozvoljena brzina).
http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3898
  • Gde živiš: Novi Sad,Klisa

Napisano: 27 Sep 2012 21:57

Da li postoji sansa da se to uradi na jednostavniji nacin posto mi to radimo samo jednodimenzionalne nizove? Confused

Ko je trenutno na forumu
 

Ukupno su 1084 korisnika na forumu :: 28 registrovanih, 8 sakrivenih i 1048 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Rade, A.R.Chafee.Jr., aramis s, bojcistv, bokisha253, dekir, doom83, Duh sa sekirom, GandorCC, Georgius, Komentator, Kubovac, Marko Marković, moldway, nemkea71, nesa1962, oldtimer, ozz, Povratak1912, procesor, royst33, Sir Budimir, TalicniTom, Vajat, vathra, VJ, Vlada1389, Yellow Pinky