Mam problem z zadaniem - Napisz program, który wypisuje
tylko te liczby, które występują w obu plikach. Można założyć, że liczby w ramach jednego pliku są różne. Dodatkowo liczby są posortowane .
Nie wiem jak napisać część odpowiadającą za porównywania liczb nie mam pomysłu innego niż porównywanie ich indeksów ale wiem że to jest błędne .
C++ praca na plikach tekstwych
- Rejestracja: dni
- Ostatnio: dni
0
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5025
1
Wczytaj je do zbiorów, a potem Użyj std::set_intersection
- Rejestracja: dni
- Ostatnio: dni
1
Poczytaj o metodzie Merge i na podstawie przeczytanego łatwo skombinujesz własną metodę - na takę wypisywane koszt pamięciowy O(1)
- Rejestracja: dni
- Ostatnio: dni
1
Skoro pliki są posortowane, to jest to całkiem proste i liniowe względem ich długości:
- Czytasz po 1 liczbie z każdego pliku (
aib) - Porównujesz je:
- jeśli są równe to wypisujesz i czytasz z obu plików
- jeśli są różne to czytasz następną liczbę z pliku, w którym była mniejsza
- wracasz do punktu 2
- Rejestracja: dni
- Ostatnio: dni
1
Zadanie jest proste jak konstrukcja cepa.
Zmieściłem się w 25 liniach licząc wszystko (puste linie, include), bez ścieśniania lub innego zaciemniania (używając std::set_intersection).
IMO po odpowiedzi @lion137 powinien być koniec tematu (a sam coś dopisuje :)).
- Rejestracja: dni
- Ostatnio: dni
- Postów: 134
0
- Wczytaj pierwszą liczbę z pliku 1
- Wczytaj pierwszą liczbę z pliku 2
- Porównaj liczby:
3.1 Jeżeli (liczba z pliku 1 == liczba z pliku 2) => wpisujesz do pliku 3 oraz wczytujesz następne liczby z obu plików
3.2 Jeżeli (liczba z pliku 1 < liczba z pliku 2) => wczytaj kolejną liczbę z pliku 1
3.3 Jeżeli (liczba z pliku 1 > liczba z pliku 2) => wczytaj kolejną liczbę z pliku 2 - Sprawdź czy nie doszedłeś do końca, któregoś z plików przerwij