Liczba postów: 2
Liczba wątków: 1
Dołączył: 05.11.2019
05.11.2019, 21:47
Programowanie windy (problem) w C++
Witam. Mam za zadanie napisać program do windy. 3 dni nie śpię bo jestem początkująca i muszę go oddać na studia (stresik) i wiadomo, że nie chce zawalić

. Dlatego proszę was o pomoc. Program niby działa, ale zauważyłam, że co jakiś czas łapie mi błąd np. piszę że jestem na 4 piętrze, przyjeżdża winda nr 2 (mimo że winda nr 1 jest bliżej) i jak daję, że jadę na piętro nr 2 to pisze mi komunikat UP

. Proszę pomóżcie mi wychwycić błąd w kodzie bo ja już na oczy nie widzę

ewentualnie nie pogardzę paroma radami jak usprawnić (mój w sumie pierwszy prawdziwy, napisany własnymi ręcoma kod) lub poprawić jak wyłapiecie jakieś błędy.
Link do kodu:
https://pastebin.com/mbiyRGg8
Liczba postów: 2466
Liczba wątków: 17
Dołączył: 12.11.2007
06.11.2019, 22:43
RE: Programowanie windy (problem) w C++
Cześć, czy masz dokładną treść zadania? Zwróć uwagę na warunek
Kod:
if (b.twoje_pietro > w1.aktualne_pietro)
Podając piętro niższe zawsze przyjedzie winda nr 2. Powinnaś raczej badać różnicę piętra użytkownika i piętra, na której znajduje się winda, np.
Kod:
#include <iostream>
#include <cstdlib>
using namespace std;
enum kierunek
{
DOWN, UP
};
struct winda
{
int pietro;
int przebieg;
kierunek kierunek_jazdy;
winda(int pietro=0, int przebieg=0, kierunek kierunek_jazdy=DOWN)
: pietro(pietro), przebieg(przebieg), kierunek_jazdy(kierunek_jazdy)
{
}
};
struct budynek
{
const int liczba_pieter;
winda w1, w2;
budynek() : liczba_pieter(5), w1(1, 14), w2(1, 17)
{
}
};
int main()
{
return 0;
budynek b;
int twoje_pietro, nowe_pietro;
while (true)
{
cout << "Podaj, na ktorym pietrze jestes: ";
cin >> twoje_pietro;
// faworyzowana winda z mniejszym przebiegiem
const int w1_roznica = abs(b.w1.pietro-twoje_pietro) + b.w1.przebieg,
w2_roznica = abs(b.w2.pietro-twoje_pietro) + b.w2.przebieg;
if (w1_roznica <= w2_roznica)
{
// winda pierwsza pojedzie
cin >> nowe_pietro;
b.w1.przebieg += abs(nowe_pietro-b.w1.pietro);
b.w1.pietro = nowe_pietro;
}
else
{
// winda druga pojedzie
cin >> nowe_pietro;
b.w2.przebieg += abs(nowe_pietro-b.w2.pietro);
b.w2.pietro = nowe_pietro;
}
}
return 0;
}
Co do reszty kodu: czy obiektowość jest dozwolona (bo dodałem konstruktor)?
Liczba postów: 2
Liczba wątków: 1
Dołączył: 05.11.2019
06.11.2019, 23:04
RE: Programowanie windy (problem) w C++
Wydaje mi się, że nie. Jestem dopiero na I roku studiów i tego jeszcze nie przerabialiśmy. Mieliśmy się raczej opierać na pętlach, warunkach