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 859 korisnika na forumu :: 22 registrovanih, 8 sakrivenih i 829 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: aleksmajstor, crnitrn, Dimitrise93, djboj, Dovla, hyla, Istman, Komentator, Kubovac, Luka Blažević, mikrimaus, mile23, milimoj, mnn2, ozzy, Rogan33, savaskytec, Srki94, tubular, vathra, virked, zdrebac