Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C++ překlad slov- program.

Zdravím,
Jsem začínající "programátor" a dneska jsem dostal chuť udělat si menší program na překlad slov z čestiny do angličtiny. Jak tušíte jsem opravdu začátečník, zasekl jsem se a potřebuju nějaké to postrčení. Chci udělat překlad takový, že zadám několik slov (4-10...) v čestině zmáčknu enter a nyní zadám anglický překlad. K dispozici budou tři pokusy. Pokud je podmínka (překlad) napsán správně vypíše se ("správně !!"), pokud není ani jeden překlad napsán správně vypíše se ("špatně !!"). Na konci programu chci také vypsan kolik slov jsem přeložil správně a kolik špatně.
Proč píši sem ? Ano, existuje hodně návodů a knížek. Jednu mám i doma C++ za 21 dní, ale knížka je rozdělená na kapitoli tak, že mi neumožňuje tento problém vyřešit hned. Pole a knihovna <string> jsou až na konci knížky, což mi přijde na hlavu.
Nyní k samotnému kodu, který jsem napsal na konci.
Moje znalosti sahají jen do napsání pěti českých slov a následné vyhodnocení pole[0] podmínkou if. Samozřejmě, mohl bych vzít část kodu začínající od while cyklu po podmínku else if, přepsat slovo "dog" a místo proměnné a deklarovat jinou, ale vím, že by to byl jen dlouhý a špatně napsaný kod. Hádám, že budou potřeba přidat funkce možná ukazatele, ale tohle právě nevím přesně a přesně v tomto bych potřeboval pomoct. Co je potřeba na správné řešení a napsaní tohoto kodu ? Stačí napsat tohle pochybuju, že mi někdo pošle celý příklad, i když by to bylo nejlepší.

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string pole[5];
    string slova[5];
    int a=0;
    int b;

    cout<<"zadejte slova, ktera chcete prelozit"<<endl;

    for(b=0;b<5;b++){
        cin>>slova[5];
        }

    while(a<3){
        a++;
        cin>>pole[0];
    if(pole[0]=="dog"){
        a=+3;
        cout<<"spravne !!"<<endl;
        }
    else if(a==3){
        cout<<"spatne !!"<<endl;
        b=+1;
        }
       }

}
Předmět Autor Datum
Vsetko zmaz, citaj knizku celu az do konca, a pomaly, neurobis to hned ani keby si sa na hlavu posta…
MM.. 31.08.2017 21:41
MM..
Resp. necitaj knizku ale najprv sa zamysli ze odkial ma ten pocitac nabrat tie slova, a jak. To musi…
MM.. 31.08.2017 21:43
MM..
Díval si se vůbec na kod ? Slova zadávám já a první s podmínkou překládám.
Dominatorcze 31.08.2017 22:09
Dominatorcze
A jak ho prekladas? Zadam slovo snehulienka, jak mi ho prelozis s if?
MM.. 31.08.2017 22:22
MM..
A jak by si ho z té tvojí databáze porovnával, jestli je správně ty ? Ano, jistěže potřebuju slovník…
Dominatorcze 31.08.2017 22:36
Dominatorcze
Nemoze tam tie slova pisat uzivatel, tie slova musi vybrat pocitac, z nejakeho svojho slovnika a pot…
MM.. 31.08.2017 22:44
MM..
Spravne sa taky program robi tak ze za prve mas nejaky slovnik, t.j. pary slov cesky-anglicky, bud a…
MM.. 31.08.2017 22:27
MM..
Použijete triedu map<string, string>. Na začiatku si do tej mapy uložíte slová namapované na preklad…
moose 31.08.2017 22:46
moose
Konečně normální odpověd. U té třídy mi to hlásí chybu, ale nevadí. Aspoň vím, že musím použít tuto…
Dominatorcze 31.08.2017 23:07
Dominatorcze
Asi chýba include: #include <map> poslední
moose 01.09.2017 00:02
moose

Resp. necitaj knizku ale najprv sa zamysli ze odkial ma ten pocitac nabrat tie slova, a jak. To musis pocitacu povedat ty, pocitac samotny nevie vobec nic (napr. nevie prekladat slova a ani kontrolovat ci su prelozene spravne, to mas tam prave naprogramovat ty, tu kontrolu prekladu. Mas nejaky slovnik v nejakej datovej forme? Jak chces kontrolovat ci je spravny preklad?)

A jak by si ho z té tvojí databáze porovnával, jestli je správně ty ? Ano, jistěže potřebuju slovník, ale já nedělám plnohodnotný program. Chci jen načíst pár slov do pole a potom "pokud je to vůbec možné" z indexu pole porovnat, jestli jsou překlady napsané správně. Mohl by si mi dát nějaký konkrétní napsaný příklad jak by si to dělal ty ? Z toho co si napsal není vůbec poznat co máš na mysli. Prostě napsat program do kterého napíšeš 10 slov do pole a potom ty slova jako překlad vyhodnotíš.

Nemoze tam tie slova pisat uzivatel, tie slova musi vybrat pocitac, z nejakeho svojho slovnika a potom k nim porovnat odpoved, z toho sameho slovnika. Keby tam pisal uzivatel co ho napadne, tak by pocitac musel prehladat nejaky kompletny slovnik s milionmi slov aby nasiel preklad k tomu slovu a vobec by ho ani nemusel najst. Mas slovnik? Jaky a v jakom formate?

string slovnik[][2] =
{ { "ahoj", "halo"},
{ "neco", "english"},
atd
}

opakuj dokedy chces {
vygeneruj nahodne cislo i, z rozsahu 0 az velkost pola sllovnik
cout << slovnik[i][0]
cin >> text
if(text == slovnik[i][1])
cout << "hura"
else
cout << "total blbo"
}

Spravne sa taky program robi tak ze za prve mas nejaky slovnik, t.j. pary slov cesky-anglicky, bud ako staticke pole v programe par desiatok slov, alebo je slovnik v subore a na zaciatku programu sa nacita do pamate, alebo je to v databaze.
Nasledne program nahodne vybere par slov z toho pola a vypise ich, a uzivatel ma zadat k nim preklad a POTOM to ten pocitac vie porovnat, to co napisal pouzivatel, s tym co ma k tomu svojmu slovu v slovniku resp. databaze.

Inac co sa tyka jazykov, slova sa nedaju prekladat samostatne, je enormne mnozstvo slov ktorych vyznam zavisi od kontextu a v inom jazyku su k tomu uplne odlisne slova, podla kontextu. T.j. prekladat 1 slovo je nezmysel, nerealne, blbost.

Použijete triedu map<string, string>. Na začiatku si do tej mapy uložíte slová namapované na preklad a potom už len skontrolujete, či sa dané slovo mapuje na správny preklad.

Nechce sa mi to testovať, tak len zhruba príklad:

map<string, string> slovnik = {
    { "pes", "dog" },
    { "macka", "cat" }
};

if (slovnik[slovo] == preklad)
    cout << "spravne!!" << endl;

Zpět do poradny Odpovědět na původní otázku Nahoru