Üdv! Régebben feltettem itt egy kérdést egy könyvkód megfejtéséhez. Hogyan tovább? Többi lent.
A régi kérdésem:Van egy könyv kód, szeretnék egy olyan programot irni ami bekérné a könyvet és a kód alapján megkeresi az adott szót majd ezt egy külön fájlban kimenti. Aki esetleg nem értené, könyv kód pl 5 14 67 367 na most a számok eggyes szavakat jelölnek
Lefelé hajlott a nap. Búcsúzóul betekintett még az erdőbe, hol hosszúra nyúlt az árnyék.Az 5=Búcsúzóul 14=árnyék és igy tovább.
Született egy épkézláb megoldás, de nagyon sok probléma volt vele.Pdf helyett a txt formátumnál kötöttem ki(igy egyszerübb)A program röviden:van 3 txt fájl,1.a kód ebbe mentek a számok,2.a szöveg ebbe került a szöveg,3.a visszafejtett szöveg.A hibái a programnak az volt hogy pl ha egy szám többször szerepelt a kódban akkor hibával kilépett, vagy a szövegben az entert is új szónak vette igy elszúszott az egész igy használhatatlan volt.Szóval nem volt hülye biztos.Annak is örülnék ha objektum orientált lenne pl elinditanánk a programot betallóznánk a szügséges fájlokat és a dekódol gomb megnyomásával már megis kapnánk a kész fájlt bár ez már csak a külcsin.
Szóval kérnék segitséget,ötletet vagy akár kész programot ezekben a dolgokban.Illetve c+ nyelv helyett mi mást tudnátok mondani ami valamivel egyszerübb és objektum orientált is?Ez pedig maga a program:
#include <fstream>
#include <iterator>
#include <algorithm>
using namespace std;
int main()
{
ifstream ifsNumbers("numbers.txt");
ifstream ifsText("text.txt");
ofstream ofs("words.txt");
vector<int> vNumbers( istream_iterator<int>(ifsNumbers), (istream_iterator<int>()) );
sort(vNumbers.begin(), vNumbers.end());
int cnt = 0;
auto cit = vNumbers.cbegin();
copy_if( istream_iterator<string>(ifsText), istream_iterator<string>(), ostream_iterator<string>(ofs, "\n"), [&] (const string&)
{
if (cit != vNumbers.cend() && cnt++ == *cit)
{
cit++;
return true;
}
else
{
return false;
}
});
ifsNumbers.close();
ifsText.close();
ofs.close();
return 0;
}
Az objektum orientáltság nem azt jelenti, hogy van grafikus felület. :)
Ha grafikus felületet szeretnél, akkor a legegyszerűbb, ha fogsz egy Visual Studio-t és az új projektnél olyat választasz, ami Windows form-os alkalmazást csinál. Összekattintgatod a felületet és a gombok eseményeihez hozzárendeled a megfelelő kódrészletet a fenti programból, illetve hozzáguglizod a tallózást.
C++ helyett más nyelv: szinte bármelyikkel megoldhatod, akár GUI-val, akár anélkül. Kipróbálhatnád a Python-t esetleg.
Vagy megcsinálhatnád PHP-val is, és ha kész, még egy webtárhelyre is felrakhatod, hogy bárki tudjon "könyvkódolni". :)
Írtam egy Pascal verziót, nagyjából azt csinálja, amit te akarsz.
Van 2 fájl:
-be.txt:
ebben vannak a számok szöközzel elválasztva
például:
1 2 3 5 2 8 3 8
-szotar.txt
ebben van a "szótár", ilyen formában, különböző sorokban
például:
1=alma
2=körte
stb...
A program egy "ki.txt" állományt csinál, amelyben a dekódolt szöveg van.
Persze biztos lehetne javítani a kódon, de működik. :-)
Ha C++ verziót szeretnél, akkor írd át, legyen valami kis kihívás. :-)
http://pastebin*com/T4s6tK96
(csillag helyett pont)
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!