• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pomoc w pisaniu programu - martwy punkt

VPS Starter Arubacloud
+1 głos
218 wizyt
pytanie zadane 25 czerwca 2021 w C i C++ przez nierozumiem Początkujący (250 p.)
Witam!

mam taki maly problem z pisaniem programu. Otóż tworze aplikacje, w której można robić drabinkę Euro(faza grupowa, potem pucharowa wraz ze wszystkimi warunkami wyjscia z grupy, rowniez dla trzecich miejsc). Całość stworzona jest na listach jednokierunkowych. Dodanie drużyny do turnieju odbywa się poprzez wczytywanie od użytkownika nazwy reprezentacji, i sprawdzeniu na drugiej liście czy taka reprezentacja może brać udział w ojro. Mam problem z zabezpieczeniem programu przed podwójnym wprowadzeniem tej samej reprezentacji. Prosiłbym o wskazówkę, jakiej pętli do tego użyć lub sposób na to, z resztą sobie poradzę.
komentarz 25 czerwca 2021 przez urbix01 Gaduła (3,290 p.)
pomocny byłby fragment kodu żeby mieć coś przed oczami, ale ja proponuje pętle for(i=0; i<długość_listy; i++) a w ciele if() z porównaniem jeżeli nazwy reprezentacji są przechowywane jako stringi to zdaje się że jest gotowa funkcja porównująca do siebie dwie zmienne. Jak nazwa się powtórzy to break
komentarz 25 czerwca 2021 przez tkz Nałogowiec (42,000 p.)
Sam break nic nie powie. Musisz mieć jakąś flagę lub substytut takiej flagi.

1 odpowiedź

0 głosów
odpowiedź 25 czerwca 2021 przez Wiciorny Ekspert (269,120 p.)

Przechowywać gdzieś wprowadzone reprezentacje i postawić warunek. np

jeśli TABLICA -> ZAWIERA element który aktualnie został wprowadzony, to zwrócić informacje, że nie można tego zrobić

Nie wiem jak zapisujesz dane, w jakiej strukturze to trzymasz, to trudno mi doradzić, bo algorytm może być banalny, ale też może być nie co trudniejszy w implementacji dla twojego API

 na listach jednokierunkowych

możesz je przeglądać iteratorem, generalnie nie wiem czy C++ ma funkcje wbudowaną, która pozwoliłaby na to, aby na tej liście sprawdzić czy zawiera coś bez iteracji  

Jest jeszcze inna opcja, jeśli nie chcesz PRZEGLĄDAĆ CAŁEJ KOLEKCJI, możesz ograniczyć się do analizy TYLKO OSTATNIEGO ELEMENTU W MOMENCIE DODAWANIA -> coś na bazie stosu, dodajesz reprezentacje do kolejki i przy każdym dodawaniu sprawdzasz czy poprzednio dodana już nie istnieje, ale to tez nie rozwiąże problemu dla przypadku 
A, B ,A ... więc odpada 

Dlatego pozostaje iterator po liście sprawdzający element z tym który pozostał , dobrym sposobem jest użycie funkcji FIND ...

auto it = std::find(lst.begin(), lst.end(), x);
if ( it != lst.end() )
{
   //x znaleziono... 
}

https://en.cppreference.com/w/cpp/algorithm/find odsyłam 

komentarz 25 czerwca 2021 przez nierozumiem Początkujący (250 p.)
edycja 25 czerwca 2021 przez nierozumiem
dzieki wielkie, poczytam
komentarz 25 czerwca 2021 przez Wiciorny Ekspert (269,120 p.)
poprawiłem co nie co, dodałem ci przykład dla funkcji find.
1
komentarz 25 czerwca 2021 przez tkz Nałogowiec (42,000 p.)

@nierozumiem, Jeżeli to Twoja implementacja listy, to i tak będziesz musiał zdefiniować iteratory. Pomysł z zwykłym for'em, moim zdaniem był lepszy. 

Podobne pytania

0 głosów
4 odpowiedzi 220 wizyt
pytanie zadane 17 lipca 2020 w HTML i CSS przez TheCaysen Nowicjusz (120 p.)
0 głosów
1 odpowiedź 622 wizyt
pytanie zadane 4 grudnia 2016 w Offtop przez korba123 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 5,898 wizyt

92,452 zapytań

141,262 odpowiedzi

319,080 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...