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

Program "odpowiednie słowa"

Object Storage Arubacloud
0 głosów
241 wizyt
pytanie zadane 25 marca 2016 w C i C++ przez amator123 Nowicjusz (150 p.)

Witam programistów laugh

Mam do zrobienia na zaliczenie z Programowania program i nie wiem zabardzo jak się za niego zabrać.

Program ten po wpisaniu do niego pewnej ilości znaków i wpisaniu jak długi jest wyraz powinien dopasować pasujące słowo z pliku .

np:

ilość liter=3
litery : k,t

Pasujące słowa to : kot,kat, itd..

Proszę o jakieś wskazówki,pomoc.

Z góry dziękuje.

2 odpowiedzi

0 głosów
odpowiedź 25 marca 2016 przez Dash Nałogowiec (29,650 p.)
wybrane 25 marca 2016 przez amator123
 
Najlepsza
Dziel i rządź, słyszałeś?

Ja podzieliłbym to najpierw na podstawie ilości liter. Tablica/wektor i w każdym polu przechowujesz strukturę słów danej długości. Jeden problem z głowy.

Słowa z liter. Osobiście użyłbym grafu. rozbijałbym słowa na litery, a następnie umieszczał w grafie. Pozwoliło by to zmniejszyć złożoność algorytmu, unikając iterowania całego słownika.

W najprostszej wersji (wybacz, nie chce mi się w święta nadto główkować, to zadanie domowe nie mil-wan :P ), każdy węzeł składa się z mapy 32 węzłów (jeden na literę alfabetu), wskaźników na słowa i własnej reprezentacji literowej. słowa dodajesz składając kolejne nazwy węzłów.

Słowa są przechowywane gdzieś obok. Klasa węzła ma tylko wskaźniki na nie. Wyobraź to sobie jako piramidę. Każdy obiekt reprezentuje litere i ma w sobie alfabet. Jeżeli w pierwszym piętrze wybrałeś literę a w drugim literę b, to obiekt w którym się znajdujesz będzie zawierał wskaźniki na słowa zawierające oba te znaki.

Zeby to rozjaśnić, na przykładzie który podałeś. 3 litery, 'k' i 't'. Lecimy do szufladki 3 naszego wektora/tablicy, interesują nas tylko wyrazy 3 literowe. Szufladka ta zawiera 0-32 elementy. Załóżmy że masz dużo słów i każda litera alfabetu występuje chociaż raz, więc masz 32 obiekty węzła.  Szukasz obiektów reprezentujących 'k' i 't'. Następnie w obiekcie 'k' szukasz 't' a w 't' szukasz 'k'. Słowa w tych obiektach będą spełniały wszystkie trzy wymagania.

Kodu nie skrobnę bo sporo tego, ale jeżeli potrzebujesz jaśniej to wieczorem mogę Ci to jakoś rozrysować :P. Jeżeli profesorek nie jest uparty to takie rozwiązanie przejdzie, niestety może zjadać sporo ramu i dodawanie kolejnych wyrazów słownika trochę trwa.
komentarz 25 marca 2016 przez amator123 Nowicjusz (150 p.)
Byłbym wdzięczny za to rozrysowanie musze to sobie poukładać w głowie :p Nie jest to dla mnie takie łatwe amator jeszcze ze mnie jak widać :D
komentarz 25 marca 2016 przez Dash Nałogowiec (29,650 p.)
Uhhh. wybacz, nie mam talentu plastycznego ani pedagogicznego :P

http://i.imgur.com/Jz414JU.jpg

Jest tam pseudokod i zasada działania. W bardzo podobny sposób zaimplementowany jest SceneGraph w tuturialu tworzenia gier pod SFML. Nie musisz raczej znać tej biblioteki żeby go zrozumieć :

https://github.com/SFML/SFML-Game-Development-Book/tree/master/04_Input

Patrz na wszystko z Graph i Node w nazwie :)

W razie wszelkich pytań służę pomocą!
0 głosów
odpowiedź 25 marca 2016 przez Fenix Nałogowiec (26,750 p.)
Plik pewnie tekstowy, więc pobierasz linie, wpisujesz do stringa oraz sprawdzasz ich długość. Jeśli długość równa jest wyrazowi podanemu przez użytkownika, wpisujesz wyraz do dynamicznej tablicy. Po przejściu przez cały plik, wyświetlasz wyniki z tablicy. Będziesz potrzebował biblioteki fstream.
komentarz 25 marca 2016 przez katolik6 Dyskutant (8,140 p.)
Trzeba jeszcze użyć std::string::find(char) do sprawdzenia występowania liter. Najlepsza odpowiedź powinna być wydajniejsza, ale... żre ogromne ilości RAM jak na taką błachostkę.

Podobne pytania

0 głosów
1 odpowiedź 655 wizyt
pytanie zadane 16 grudnia 2015 w C i C++ przez Barus Stary wyjadacz (14,120 p.)
+1 głos
1 odpowiedź 136 wizyt
pytanie zadane 14 marca 2021 w Algorytmy przez SALVADOR Początkujący (310 p.)
0 głosów
0 odpowiedzi 333 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...