Hogyan módosítsam ezt a programot, hogy megfeleljen a feladatnak? Egyszerűen nem jövök rá.
class Program
{
static void Main(string[] args)
{
StreamReader sr = new StreamReader("elso.txt", Encoding.Default);
StreamReader sr2 = new StreamReader("masodik.txt", Encoding.Default);
string elsoszoveg = "";
while (!sr.EndOfStream)
{
elsoszoveg += sr.ReadLine();
}
string masodikszoveg = "";
while (!sr2.EndOfStream)
{
masodikszoveg += sr2.ReadLine();
}
sr.Close();
sr2.Close();
LCS feladat = new LCS(elsoszoveg, masodikszoveg);
Console.WriteLine(LCS.plagium(elsoszoveg, masodikszoveg));
Console.ReadLine();
}
}
}
class LCS
{
string x = "";
public string X
{
get { return x; }
set { x = value; }
}
string y = "";
public string Y
{
get { return y; }
set { y = value; }
}
public LCS(string x, string y)
{
this.x = x;
this.y = y;
}
public static string plagium(string a, string b)
{
string leghosszabbkozos = "";
string temp = "";
int tmp = 0;
int ahossz = a.Length - 1;
int bhossz = b.Length - 1;
char utolso = ' ';
for (int i = 0; i < a.Length; i++)
{
for (int z = 0; z < b.Length; z++)
{
tmp = i;
while (a[tmp] == b[z] && z < b.Length - 1 && tmp < a.Length - 1)
{
temp += b[z];
utolso = b[z + 1];
tmp++;
z++;
}
if (temp.Length > leghosszabbkozos.Length)
{
leghosszabbkozos = temp;
}
temp = "";
}
}
leghosszabbkozos += utolso;
return leghosszabbkozos;
}
}
}
Feladat:
Legyen adott egy T szöveg (text fájlból beolvasandó). Keresse meg azt a legrövidebb X
szót, amelyre igaz, hogy T minden szava részsorozata X-nek. Az X szót a képernyőre írja
ki.
Nem vagyok túl produktív fáradtan de most támadt egy 5letem.
Ha van egy függvényünk ami 2 db szóra megmondja mi a legrövidebb részsorozatuk. // Ezt majd meg kell írni
Ekkor előállítjuk T[0] és T[1] legrövidebb részsorozatát a függvénnyel pl A = részsorozat(T[0], [1]). Ezután A = részsorozat(A, T[2])
Most így késő este matekozni jajj... Be kellene látni, hogy részsorozat(részsorozat(T[0], T[1]) T[3]) az egyenlő T1, T2, T3 legrövidebb részsorozatával
Ami sejtésem szerint igaz, csak nem bírok gondolkodni
Nincs meg? Na akkor most leírom normálisan (ha tudom). Próbáld megérteni ha mérnök akarsz lenni.
Van egy függvényed ami visszaad egy szót ami a 2 paraméterként kapott szó legrövidebb részsorozata.
Ezt később megírjuk nem túl bonyolult csak most képzeld el hogy működik.
Fogod az első két szót és megeteted őket a függvénnyel.
Pl az első két szó: "abb", "bbc"
ebből a függvény csinál egy "abbc" -t
Ezután fogod a harmadik szót: "bbb". És azt amit az előbb kiköpött a függvény: "abbc".
Ezeket is megeteted a fv.-el ami kidobja a "abbbc" szót.
És ezt csinálod amíg van még szó.
"Csak nehéz úgymond kódba foglalni." Már kb megvan oldva a feladat...
Az általam említett függvénynek egy C++ implementációját már be is linkeltem.. Oké nem érted a c++ -t de csak rá kellene guglizni valami hasonlóra: Implementation of Shortest Common Supersequence in C#
Csinálsz egy osztályt amiben van valamilyen tároló.
Az osztálynak van olyan metódusa ami beolvassa a file-ból a szavakat és bemásolja a tárolóba.
Van olyan statikus metódus ami 2 sztringet vár és visszatér a szuperszekvenciával.
Ezt linkeltem korábban. Itt minden megvan C++ és java kódban is. A java meg már majdnem C#. [link]
Van egy harmadik fv ami az előző 1-2 válaszomban leírtakat csinálja. Azaz végigmegy a tárolón a egy ciklussal a fenti statikus fv.t használva.
Jóéjt!
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!