-
Zadanie Hamming 2
Kod:
Zadanie Hamming 2
Odległość Hamminga dwóch słów jest to liczba znaków na których te słowa się róznią. Np, odległość słów Hamming ihamiing jest równa 2, poniewą słowa różnią się pierwszym i czwartm znakiem. Jezeli słowa są różnej długości to odległość Hamminga nie jest określona. Napisz funkcję odbliczającą odległość Hamminga dwóch łańcuchów.
Zadaniem głównym jest napianie programu podpowiadającego poprawne słowa, tj. słowa (słów) z zadanego słownika najbliższego wpisanemu słowu. W programie niezbędne jest wykorzystane zdefiniowanej wyżej funkcji.
Wejście
Piersza linia zawiera wpisane słowo.
Druga linia zawiera liczbę n słów w słowniku.
Kolejne n linii zawiera kolejne słowa zw słownika.
Zakładamy, że słowa nie są dłuższe niż 30 znaków oraz 0<=n<=1000.
Wyjście
Jeżeli nie znaleziono podpowiedz pojawia się napis BRAK PODPOWIEDZI.
W przeciwnym wypadku kolejne linie zawierają kolejne słowa o minimalenej odległości od zadanego w kolejności takiej jak znajdują się w słowniku.
Przykład 1
Wejście:
programoanie
3
programming
programowanie
debagowanie
Wyjście:
BRAK PODPOWIEDZI
Przykład 2:
Wejście:
programowanie
0
Wyjście:
BRAK PODPOWIEDZI
Przykład 3:
Wejście:
programowanie
3
Programowanie
PROGRAMOWANIE
programowanie
Wyjście:
programowanie
Jest ktos w stanie zrobic taki program?
-
tak, za papierki kolorowe z portrecikami Kazimierza Wielkiego, Bolesława Chrobrego i Mieszka I. Jeśli chcesz z wyjaśnieniem to papierek z portretem Zygmunta II Augusta.
-
napisalem sobie to na szybko w ramach cwiczenia, z gory sorki za kod ale jestem za leniwy i nie chce mi sie go poprawiac zeby byl ladny ;d
C++
Kod:
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
string Hamming(string* slowa, string slowo, int ilosc)
{
int *bledy = new int[ilosc];
for(int i = 0; i < ilosc; i++)
bledy[i] = 0;
for(int i = 0; i < ilosc; i++)
{
for(int j = 0; j < slowo.length(); j++)
{
if(slowa[i][j] != slowo[j])
{
bledy[i]++;
}
}
}
int min = 9999;
for(int i = 0; i < ilosc; i++)
{
if(bledy[i] < min)
min = bledy[i];
}
int podobne = 0;
for(int i = 0; i < ilosc; i++)
{
if(bledy[i] == min)
podobne = i;
}
return slowa[podobne];
}
int main()
{
string slowo;
int ilosc;
string *slowa;
cout << "Wejscie:" << endl;
cin >> slowo;
if(slowo.length() > 30)
{
cout << "Slowo za dlugie!" << endl;
getch();
return 0;
}
cout << "Ilosc slow w slowniku:" << endl;
cin >> ilosc;
if(ilosc <= 0)
{
cout << "Wyjscie:" << endl << "BRAK PODPOWIEDZI" << endl;
getch();
return 0;
}
slowa = new string[ilosc];
for(int i = 0; i < ilosc; i++)
{
cin >> slowa[i];
}
for(int i = 0; i < ilosc; i++)
{
if(slowa[i].length() != slowo.length())
{
cout << "Wyjscie:" << endl << "BRAK PODPOWIEDZI" << endl;
getch();
return 0;
}
}
cout << "Wyjscie:" << endl << Hamming(slowa, slowo, ilosc);
getch();
return 0;
}
-