Implementacja słownika polsko-angielskiego

0

Witam, mam problem, nie umiem stworzyć słownika w c# ( mieliśmy takie zadanie na ćwiczeniach). Typiarka użyła pętli for, nie umiej jej teraz odtworzyć. Mógłby mi ktoś pomóc?
Zadanie w skrócie:
1: stwórz 2 tablice 3 elementowe, jedna zawiera polskie słowa druga przetłumaczone na angielski.
2. wyświetl tablice z polskimi wyrazami.
3. poproś użytkownika o wpisanie słowa.
4. przy pomocy pętli znajdź przetłumaczone słowo z tab. ang
5. wyświetl przetłumaczone słowo
6.zakończ

Zrobiłem to zadanie w domu uzywając switch/case, ale chciałbym wiedzieć jak to zrobić z pętlą for :> pomocy

0

Chodzi o to by pętla for wyszukała indeks słowa(wpisanego przez użytkownika) z tablicy pl, potem znalazła ten indeks z tym samym
numerem w tablicy ang i dalej już by wypisane zostało to słowo. Mogę to źle pisać ale mam nadzieje, że rozumiesz :c

  1. Utwórz dwie tablice danych typu string (rozmiar 10) o nazwach pl i ang

  2. Wprowadź do tablicy ang 10 słów angielskich (cat, house, itd)

  3. Wprowadź do tablicy pl ich odpowiedniki w języku polskim (kot, dom itd)

  4. Napisz program, który pyta użytkownika o słowo w następujący sposób:
    "jakie słowo dla Ciebie przetłumaczyć?: kot, dom, ......."

  5. Wczytaj słowo, które użytkownik wpisze na konsoli.

np. dom
6. Wypisz komunikat:
"dom w języku angielskim to house"

Znalazłem to zadanie :> nie wiem jak to zrobić, jedynie switch/case mi się udalo, a ona to jakoś z pętlami for robiła. (ps. po co 10 słow wystarczy mniej)

1

Może szukała w ten sposób indeksu?

string[] pol = {"dom", "ogród", "płot"};
var word = "dom";
var index = -1;
for(var i = 0; i < pol.Length; i++)
{
   if (pol[i] == word)
   {
      index = i;
      break;
   }
}

Mając indeks możesz odwołać się do drugiej tablicy i wyciągnąć tłumaczenie.

PS. Normalnie taka implementacja jest niedopuszczalna. Do takiego czegoś stosuje się chociażby słowniki (klasa Dictionary<T>)

PS2. Jest o wiele prostsza metoda znajdowania indeksu w tablicy: https://msdn.microsoft.com/en-us/library/7eddebat(v=vs.110).aspx

0

Spróbuję napisać taki program.

0

namespace ConsoleApplication16
{
class Program
{
static void Main(string[] args)
{
string wyraz;

        string[] pol = { "dom", "ogród", "płot" };
        
        string[] ang = { "house", "garden", "fence" };
        foreach(string element in pol)
        {
            Console.WriteLine(element);
        }
        Console.Write("Wpisz wybrany wyraz:");
        wyraz = Console.ReadLine();
        var slowo = wyraz;
        var index = -1;
        for (var i = 0; i < pol.Length; i++)
        {
            if (pol[i] == slowo)
            {
                index = i;
                Console.WriteLine(ang[i]);
                break;
            }
            
        }
        Console.ReadKey();
    }
}

}

Działa :DDD + jedno pytanie dlaczego var index = -1?

1

Żeby się łatwo dało odróżnić od potencjalnego adresu w tablicy — w ten sposób na pewno nie będzie kolizji z sensownym wynikiem. Inne liczby ujemne też by były OK.

0

Dziękuję za pomoc :)

1

Działa :DDD + jedno pytanie dlaczego var index = -1?

Zastanów się co by było w tym przypadku:

string[] pol = {"dom", "ogród", "płot"};
var word = "walec";
var index = 0;
for(var i = 0; i < pol.Length; i++)
{
   if (pol[i] == word)
   {
      index = i;
      break;
   }
}

Po zakończeniu pętli index miałby wartość 0, czyli wskazywałby że użytkownik wpisał "dom", a to jest nieprawda. Ogólnie przyjęło się, że jeżeli indeks nie został odnaleziony w tablicy, to przyjmuje wartość -1. Znajdziesz to w wielu bibliotekach wielu języków programowania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1