Dziwne działanie pętli

0

struct Miasto
{
    const char *hotel;
    int km;
};

Miasto Barcelona[]=
{
    {"Ibis Poznan			 ", 332},
    {"Ibis Berlin			 ", 501},
    {"Apart Magdeburg			 ", 716},
    {"Rose Norymberga			 ", 996},
    {"Hotel Heildelberg		", 1187},
    {"Hotel Karlsruhe			", 1236},
    {"Apart Belfort			", 1449},
    {"Hotel Cahlon-sur-Saone		", 1664},
    {"Ibis Lyon			", 1789},
    {"Amber Valence			", 1889},
    {"Apart Avignon			", 2013},
    {"Hotel Montpellier		", 2089},
    {"Hotel Barcelona			", 2422},
};
 
...

for(int b=0;b<13;b++)
         {
                 if(Barcelona[b].km <= limit && Barcelona[b+1].km >limit || Barcelona[b].km==2422)
            {
                cout<<liczba<<'\t'<<Barcelona[b].hotel<<'\t'<<Barcelona[b].km - odleglosc<<'\t'<<Barcelona[b].km<<endl;
                liczba++; 
                odleglosc=Barcelona[b].km+odleglosc;
            }
         } 

Program wylicza najkrotsza drogę do Barcelony, limit oczywiscie wczesniej podany, odleglosc poczatkowa = 0. Moja pętla działa tylko dla pierwszego i ostatniego hotelu np.

limit = 550

1 Ibis Berlin 501 501
2 Hotel Barcelona 1927 2422

Po chwili zobaczyłem błąd, lecz dalej nie działa:


int c=0;
       for(int b=0;b<13;b++)
         {
                 if(Barcelona[b].km -c <= limit && Barcelona[b+1].km -c >limit || Barcelona[b].km==2422)
            {
                cout<<liczba<<'\t'<<Barcelona[b].hotel<<'\t'<<Barcelona[b].km - odleglosc<<'\t'<<Barcelona[b].km<<endl;
                liczba++; 
                odleglosc=Barcelona[b].km+odleglosc;
                c=Barcelona[b].km;
            }
         }  
0

Ale że co to ma liczyć?

0

Pętla ma obliczyć i pokazać najkrótszą drogę do miasta:

dzien hotel km(przebyte od ostatniego hotelu, w którym się zatrzymaliśmy) km(od wyruszenia)
1
2
...

1

No ale to jest tablica, a nie graf, więc tutaj nie ma żadnej drogi/ścieżki/whatever, więc o co chodzi?

0

To jak to mam zrobić, by otrzymać żądany efekt ?
http://i.imgur.com/FToyrSV.jpg
Przy czymś takim pokazuje poprawną drogę, lecz źle liczy liczbę km od ostatniego hotelu, w którym wyliśmy.

0

Jaka droga jest "poprawna" i co to jest "droga" w tym wypadku? Kolejne miasta?

0

Podając limit km np. 550 mamy określić najszybszą drogę do końcowego miasta. Podajemy drogę od hotelu do hotelu.

0

Najszybszą czy najkrótszą?
Jeżeli to pierwsze, podane jest za mało danych.
Jeżeli to drugie, zadanie nie ma sensu, bo skoro można odnaleźć najkrótszą drogę np. dla limitu na tysiąc kilometrów, wpisując limit 2000km droga pozostanie ta sama (bo będzie najkrótsza).

0

Podam przykłady:

a) limit = 550

  1. Ibis Berlin 501 501
  2. Rose Norymberga 495 996
  3. Apart Belfort 453 1449
  4. Amber Valence 440 1889
  5. Hotel Barcelona 533 2422

b) limit = 3000

  1. Hotel Barcelona 2422 2422

c) (też chciałbym coś takiego)

limit = 300

"Limit zbyt maly"


Udało mi się, temat można zamknąć :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1