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

Program Wspomagający Rozwiązywanie Krzyżówek

Object Storage Arubacloud
0 głosów
552 wizyt
pytanie zadane 17 czerwca 2015 w C i C++ przez Marcinos Nowicjusz (120 p.)
edycja 17 czerwca 2015 przez Marcinos
Witam

Jestem Studentem i za zadanie dostałem napisać program  który tak jak mamy w krzyżówkach z paru liter dopasować pasujące słowa czyli podajemy pare liter a między nimi znaki

np. K*A*

wynik : program z podajen bazy słów ma wybrać te które pasują

klas,kwas,kran, itp.

słowa mają być pobierane z pliku <Słownik języka Polskiego> kompletnie nie wiem jak się za to zabrać a mam to oddać na sobotę

Proszę o jakieś wskazówki,pomoc

Z góry dziękuje.

2 odpowiedzi

0 głosów
odpowiedź 17 czerwca 2015 przez Pinio Gaduła (3,520 p.)
ja widze pare sposobow przedstawie schemat myslowy dla mnie najprostszy:

- pobieram z pliku getlinem kazdy wiersz i sprawdzam go z szukanym wyrazem. Sprawdzamy, czyli na poczatku porownuje jego dlugosc(1 warunek), nastepnie czy widoczne znaki sa tozsame z tym co mamy w pliku(2 warunek). Te dwa warunki sprawia ze znajdziemy dopasowanie. Dalej to kwestia wypisania.

Co do porownywania samych wyrazow pamietaj ze kazdy string jest tablica:) wiem że nie jest to może najszybsze i bardzo pro ale powinno zadziałac
0 głosów
odpowiedź 17 czerwca 2015 przez draghan VIP (106,230 p.)

Wczytujesz sobie z pliku te słowa, zapisujesz w vectorze. Dobrze by było zrobić kilka takich vectorów, każdy przechowywałby słowa o zadanej długości - dzięki temu będziesz miał mniej roboty z wyszukiwaniem.

Możesz w pętli po kolei sprawdzać, czy dane słowo pasuje do odpowiadającego z indeksu.

Nieidealny przykład:

#include <string>
#include <vector>
#include <iostream>

using namespace std;

int main()
{
    // pomijam wczytywanie z pliku, pomijam inne vectory dla innych długości słów
    vector <string> words4 {"kawa", "koka", "koło", "ryba", "woda"};


    // pomijam wczytanie wzorca, sprawdzenie jego długości i poprawności
    string key = "*o**";
    bool correct; // flaga oznaczająca czy aktualnie przetwarzane słowo z vectora jest zgodne ze wzorcem

    for(const auto &s: words4) // iteruję po odpowiednim vectorze
    {
        correct = true; // zakładam, że dane słowo jest poprawne
        for(int i = 0; i < key.length(); ++i) // iteruję po znakach w słowie i kluczu
        {
            if(key[i] == '*') continue;

            if(key[i] != s[i]) // jeśli chociaż jeden znak się nie zgadza, to całe słowo się nie zgadza
            {
                correct = false;
                break;
            }
        }

        if(correct)
        {
            // whatever, wydrukuj albo coś:
            cout<<s<<endl;
        }
    }
}

 

Podobne pytania

0 głosów
2 odpowiedzi 1,840 wizyt
0 głosów
4 odpowiedzi 731 wizyt
pytanie zadane 12 września 2017 w C i C++ przez oczko Nowicjusz (230 p.)
0 głosów
1 odpowiedź 71 wizyt

92,576 zapytań

141,425 odpowiedzi

319,650 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!

...