|
[ ilDuceo @ 12.11.2006. 22:40 ] @
| Dobio sam sledeci zadatak:
Duz kruznog puta nalazi se N gradpva i u svakom od njih postoji prodavnica televizora.
Poznata je cena televizora u svakom gradu, i cena voznje do sledeceg grada sa povratkom.
Za mestane svakog grada odrediti grad u kome ce najekonomicnije proci prilikom kupovine televizor,
kao i u kom smeru mestani treba da putuju do njega.
Ovo je bio neuspeli pokusaj da ga resim:
Code:
#include <stdio.h>
#define MAX_NIZ 100
main ()
{
int n,t,p,i,x,min,x[MAX_NIZ],y[MAX_NIZ],z[MAX_NIZ];
for (i=0;i<MAZ_NIZ;i++)
do{
printf("\n\tProgramizracunava najisplativiju kupovunu\n");
printf("\nUnesite broj gradova za poredjenje\n");
scanf("%d",&n);
printf("\nUnesite redne brojeve gradova\n");
for i=0;i<n;i++) scanf("%d,&x[i]);
printf("\nUcesite cene televizora\n");
scanf("%d",&t);
printf("\nUnesite cenu puta");
scanf("%d",&p);
}while (n<1||n>MAX_NIZ);
min=x[0];
for(i=0;i<n;i++)
{
&u=p+t
if(x[u]<min) min=x[u]
}
printf("Najisplativija kupovina je %d",min);
printf("U gradu pod rednim brojem %d",i);
}
Moze li mi neko pomoci? (ne resiti ceo zadatak, da ne bude zabune, pa da mi opet obrisu temu) |
[ Buffy @ 13.11.2006. 16:18 ] @
sta mislis da si ovu temu postavio u Art of Programming?
Mozda bi ti tamo neko mogao pomoci.
PozdraV
[ del-boy @ 13.11.2006. 19:26 ] @
Ja sam imao skoro isti zadatak samo sa friziderima... Uraido sam ga, ali sam iskomplikovao previše... Kasnije sam se setio da sam mogao iskoristiti operator %., pa ti prepravi program kako ti odgovara! U svakom slučaju zakačio sam ti ga...
I da, ova verzija što sam sakačio računa samo za jedan grad... Ako hoćeš za sve gradove da ti izračuna ubaci sve u petlj.žu.
[ ilDuceo @ 14.11.2006. 00:44 ] @
Hvala ti na pomoci, valjda ce sve biti ok sa programom! Pa nije ni cudo sto smo dobili slican zadatak kad idemo na isti fax!:) pozz.
[ X Files @ 14.11.2006. 12:19 ] @
Pozdrav,
Evo ti malo koda koga sam sklepao ne brzinu i nisam ga bas istestirao, pa su
moguće i anomalije. Program namerno nisam dovršio, a doveden je do trenutka
kada možeš u već postojećoj petlji da odrediš minimum niza, što je elementarni
zadatak.
Code:
#include <stdio.h>
#include <stdlib.h>
#define MAX_GRADOVA 10
int main(int argc, char* argv[])
{
int n;
int grad_cena_tv[MAX_GRADOVA];
int grad_cena_povratna[MAX_GRADOVA];
printf( "Koliko ima gradova?" );
scanf( "%d", &n );
if ( n > 0 && n < MAX_GRADOVA )
{
int i;
for ( i=0; i<n; i++ )
{
do
{
printf( "Upisite cenu TV-a u gradu %d?", i+1 );
scanf( "%d", &grad_cena_tv[i] );
} while( grad_cena_tv[i] < 1 );
do
{
printf( "Upisite povratnu kartu do grada %d?", i+1 );
scanf( "%d", &grad_cena_povratna[i] );
} while ( grad_cena_povratna[i] < 1 );
}
int j;
for ( i=0; i<n; i++ )
{
int suma_l = grad_cena_tv[i];
int suma_d = grad_cena_tv[i];
printf ( "REZULTATI ZA GRAD (%d), inicijalna cena u mestu polaska = %d\n", i+1, suma_l );
suma_l=0;
suma_d=0;
for ( j=1; j<n; j++ )
{
int sledeci_grad_l = ( ( i+j ) %n ) + 1;
int sledeci_grad_d = ( ( i+(n-j) ) %n ) + 1;
suma_l += grad_cena_povratna[sledeci_grad_l - 1];
suma_d += grad_cena_povratna[sledeci_grad_d % n];
int cena_l = suma_l+grad_cena_tv[sledeci_grad_l-1];
int cena_d = suma_d+grad_cena_tv[sledeci_grad_d-1];
printf( "- do grada (%d), l, tv+povratak = %d\n", sledeci_grad_l, cena_l );
printf( "- do grada (%d), d, tv+povratak = %d\n", sledeci_grad_d, cena_d );
// ... OVDE TREBA MALO TVOG KODA KOJI TRAZI MIN, ISKORISTI: cena_l, cena_d, sledeci_grad_l, sledeci_grad_d
}
}
}
else
{
printf( "Greška u unosu\n" );
}
system( "PAUSE" );
return 0;
}
Ovako izgleda izlaz na ekran:
Koliko ima gradova?4
Upisite cenu TV-a u gradu 1?1
Upisite povratnu kartu do grada 1?1
Upisite cenu TV-a u gradu 2?2
Upisite povratnu kartu do grada 2?2
Upisite cenu TV-a u gradu 3?3
Upisite povratnu kartu do grada 3?3
Upisite cenu TV-a u gradu 4?4
Upisite povratnu kartu do grada 4?4
REZULTATI ZA GRAD (1), inicijalna cena u mestu polaska = 1
- do grada (2), l, tv+povratak = 4
- do grada (4), d, tv+povratak = 5
- do grada (3), l, tv+povratak = 8
- do grada (3), d, tv+povratak = 8
- do grada (4), l, tv+povratak = 13
- do grada (2), d, tv+povratak = 10
REZULTATI ZA GRAD (2), inicijalna cena u mestu polaska = 2
- do grada (3), l, tv+povratak = 6
- do grada (1), d, tv+povratak = 3
- do grada (4), l, tv+povratak = 11
- do grada (4), d, tv+povratak = 7
- do grada (1), l, tv+povratak = 9
- do grada (3), d, tv+povratak = 10
REZULTATI ZA GRAD (3), inicijalna cena u mestu polaska = 3
- do grada (4), l, tv+povratak = 8
- do grada (2), d, tv+povratak = 5
- do grada (1), l, tv+povratak = 6
- do grada (1), d, tv+povratak = 6
- do grada (2), l, tv+povratak = 9
- do grada (4), d, tv+povratak = 10
REZULTATI ZA GRAD (4), inicijalna cena u mestu polaska = 4
- do grada (1), l, tv+povratak = 2
- do grada (3), d, tv+povratak = 7
- do grada (2), l, tv+povratak = 5
- do grada (2), d, tv+povratak = 9
- do grada (3), l, tv+povratak = 9
- do grada (1), d, tv+povratak = 10
Press any key to continue . . .
[Ovu poruku je menjao X Files dana 14.11.2006. u 18:34 GMT+1]
[ ilDuceo @ 14.11.2006. 19:53 ] @
Ok, sredicu to. Hvala na pomoci!!
[ night-shift @ 17.11.2006. 00:51 ] @
Evo ga moje rešenje, ne radi dobro kad kompajliram sa Turbo C, dok na Linuxu sa gcc radi lepo...
Code: #include <stdio.h>
typedef struct grad
{
double tv, bus, put;
int gde, smer;
}Tgrad;
int main()
{
int n=0, i, j, k;
Tgrad g[20];
double temp, min;
// ----------Unos podataka----------
printf("\nUnesite broj gradova\n");
do
{
printf("\t\t n [<20]: ");
scanf("%d", &n);
}while(n>20);
for(i=0;i<n;i++)
{
printf("\nUnesite cenu televizora u %d. gradu -> ", i+1);
scanf("%lf", &g[i].tv);
if(i!=n-1) printf("\nUnesite cenu od %d. do %d. grada -> ", i+1, i+2);
else printf("\nUnesite cenu od %d. do 1. grada -> ", i+1);
scanf("%lf", &g[i].bus);
}
// ----------Ispitivanje najiplativije kupovine----------
for(i=0;i<n;i++)
{
// ---------Ciklus za kretanju u suprotnom smeru od kretanja kazaljke na satu--------
g[i].gde=i;
min=g[i].tv;
temp=0;
for(j=0;j<n;j++)
{
k=(i+j);
temp+=g[k%n].bus;
if(temp+g[(k+1)%n].tv<min)
{
g[i].gde=(k+1)%n;
g[i].smer=1;
min=temp+g[(k+1)%n].tv;
g[i].put=temp;
}
}
// ----------Ciklus za kretanje u smeru kazaljke na satu----------
temp=0;
for(j=n;j>0;j--)
{
k=(i+j);
temp+=g[(k-1)%n].bus;
if(temp+g[(k-1)%n].tv<min)
{
g[i].gde=(k-1)%n;
g[i].smer=0;
min=temp+g[(k-1)%n].tv;
g[i].put=temp;
}
}
// -----------Ispis podataka------------
if(min==g[i].tv) printf("\n - Kupac iz %d. grada je kupio tv u svom gradu po ceni od %.2lf\n", i+1, g[i].tv);
else
{
printf("\n - Kupac iz %d. grada je kupio tv u %d. gradu po ceni od %.2lf", i+1, g[i].gde+1, g[g[i].gde].tv);
if(g[i].smer==1) printf("\n - U smeru kretanja suprotnom od kazaljke na satu je potrosio %.2lf. na put\n", g[i].put);
if(g[i].smer==0) printf("\n - U smeru kretanja kazaljke na satu je potrosio %.2lf. na put\n", g[i].put);
}
}
printf("/////////////////////////////////////////////////////////////////////\n\n");
getch();
return(0);
}
[Ovu poruku je menjao night-shift dana 17.11.2006. u 02:05 GMT+1]
[Ovu poruku je menjao night-shift dana 17.11.2006. u 02:08 GMT+1]
[Ovu poruku je menjao night-shift dana 17.11.2006. u 02:10 GMT+1]
[ ShadowMind @ 17.11.2006. 21:25 ] @
Ne slusaj ovog NightShifta gari nema pojma samo se pravi pametan :)
Ako ti neki od sledecih zadataka iz programskih jezika i struktura podataka bude predstavljao problem slobodno postavi temu na forum i probacemo da ti pomognemo ili pokusaj da kontaktiras nekoga sa smera ko to zna kolega :)
[ ilDuceo @ 17.11.2006. 21:29 ] @
Hvala kolega na volji da pomognete! Prodje i ta odbrana rada....dobih 9....sta sad... vise srece drugi put! U svakom slucaju hvala svima i ne brinite, bice jos pitanja!:))
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|