Program do nauki słówek

Program do nauki słówek
0

Witam. Właśnie przymierzam się do napisania programu, w którym będzie możliwa nauka słówek do angielskiego. Planowałem 2 rodzaje nauki. Pierwszy rodzaj jest to po prostu otworzenie w programie dużego okna, w którym będą wszystkie słówka i po prostu czytamy. Drugi rodzaj polega na przejściu przez losowo wybrane 20 słówek z 1000, zaznaczenie, które słówko znam a którego nie znam, na koniec tych 20 słówek program ma zrobić taki mini sprawdzian, słówka, których nie znałem podczas tego losowania pokażą się w tym teście. Chciałbym też zrobić zapisywanie słówek tych, które już umiemy. Problem mój polega na tym, gdyż nie wiem jak się do tego zabrać, gdzie mam te wszystkie słówka zapisać i jak je wyczytywać po kolei. Przykładowo jedna zmienna musi posiadać słówko angielskie i przetłumaczone aby to się nie pomieszało użyłbym zmiennej dwuwymiarowej. Możecie mi trochę objaśnić drogę i sprawę jak to ma wyglądać? nie pogardzę jakimś przykładem. Naprawdę mi zależy na tym programiku, gdyż za rok będę już miał maturę, na którą chciałbym się solidnie przygotować + przy tym ćwiczyć programowanie.

Z góry dziękuje i pozdrawiam

JU
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:149
0

Hmm a więc to zależy od Ciebie jak chcesz zapisać takie informacje, jest trochę tych możliwości, np:

  1. Baza danych
  2. Plik (np. txt)
  3. połączenie kilku tablic
    Przy każdym z tych rozwiązań możesz po prostu dodawać informacje typu bool (prawda czy fałsz - umiem czy nie umiem)
    W sumie możesz stworzyć nawet tablice struktur lub obiektów stworzonej przez siebie klasy i zapisywać je w jeden wybrany sposób - które proponowałem powyżej.

Pseudo kod struktury:

Kopiuj
struct slowko
{
int id
string ang
string pol
bool umiem
}

Jeżeli chodzi o przydatność stwórz klasę dla słowa i zapisz do bazy danych (dla ćwiczeń będzie chyba najciekawiej)

0

Wcześniej jak takie coś próbowałem zrobić to zapisywałem opcją tablic dwuwymiarowych, lecz to dziwnie wychodziło. Nie dość, że muszę zapisać jakoś te 1000 słówek to jeszcze później w trakcie testu gdy nie wiemy danego słówka to też trzeba zapisać do tablicy, przypuśćmy stworzę tą tablicę na 10 wyrazów a użytkownik zapisze tylko 8 lub 11 i wyskoczy błąd :/

pythonpythonpythonpython
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 11 lat
0
Kopiuj
require "sequel"


class Program

  def initialize
    @db = Sequel.connect('sqlite://dictionary.sqlite3')
    @db.create_table? :dictionary do
      primary_key :id
      String :polish
      String :english
    end
    @dictionary = @db[:dictionary]
  end

  def start
    loop do
      puts '1. dodaj slowo'
      puts '2. rob test'
      puts 'inny. wyjscie'
      action_id = gets.to_i
      if action_id == 1
        add_word_from_user
      elsif action_id == 2
        make_test
      else
        exit
      end
    end
  end

  def add_word_from_user
    puts 'podaj angielskie slowo'
    english = gets.chop
    puts 'a teraz podaj polskie slowo'
    polish = gets.chop
    @dictionary.insert(:english => english,:polish => polish)
  end

  def show_words
    @dictionary.select.each do |r|
      puts "#{r[:id]}. |  #{r[:english]} | #{r[:polish]}"
    end
  end

  def make_test
    test = Test.new(@dictionary)
    test.start
  end

end


class Test

  def initialize(dictionary)
    @record_limit = 20
    @record_ids = []
    @record_limit.times do
      @record_ids << rand(1...dictionary.count)
    end
    @records = []
    @record_ids.each do |id|
      dictionary.where(:id => id).each do |r|
        @records << r
      end
    end
  end

  def start
    scores = 0
    @records.each do |r|
      puts r[:polish]
      english = gets.chop
      if r[:english] == english
        puts 'ok'
        scores += 1
      else
        puts "Zle, powinno byc #{r[:english]}"
      end
    end
    puts "twoj wynik to #{scores}/#{@record_limit}"
  end

end

p = Program.new
p.start

Od trzech dni uczę się ruby i widząc ten temat stwierdziłem, że w ramach nauki fajnie byłoby to napisać. Może choć trochę to Ci się przyda. Z drugiej strony fajnie byłoby, gdyby ktoś wiedział w jaki sposób można zapisać w ruby listy składane, bo ten zapis jakim się posługuje jest niezbyt wygodny.

edytowany 1x, ostatnio: pythonpythonpythonpython
JU
hmm może i się przyda jednak, z gotowca raczej się kolega nie pouczy..., tym bardziej ze pytanie dotyczy C# lub .Net
Sarrus
Przykład czy gotowiec w phyton się tutaj nie przyda, bo język jest zbyt odmienny od C#. Dla mnie ten post jest OT
n0name_l
to nie python...
Sarrus
Ruby faktycznie - zmyliła mnie nazwa autora postu ;)
0

Najgorszy problem jest z zapisaniem tych wszystkich słówek, pobieraniem ich jeżeli są potrzebnę. Żeby to było słówko bez tłumaczenia to byłoby łatwiej, a tak jedna zmienna musi pasować drugiej np angol[0] = "yes" , polak[0] = "tak", lub może tak można zrobić slowka[1,0] = "yes" slowka[1,1] = "tak". Naprawdę mam wielki problem z tym zapisywaniem, nie wiem w czym to zrobić a nie jestem pewny czy w takich zmiennych uda mi się to zrobić, natomiast w bazie jeżeli miałoby zapisać te 1000 słówek to ok, ale gdyby miało zrobić każdemu użytkownikowi test i zapisać w bazie znane mu słówka? a przypuśćmy, że byłoby 100 użytkowników.

JU
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:149
0

ok podpowiem więcej, skoro zaczynasz:

  1. Stwórz plik z kilkoma słówkami, który niech wygląda tak:
    1,yes,tak,0; ( id słówka, ang, pol, czy umiem?)
    2,no,nie,1;

2.Teraz odczyt danych z pliku TextReader i StreamReader (poczytaj o tym)

  1. Wyświetlanie na ekranie i wymaganie odpowiedzi od użytkownika

  2. TextWriter i StreamWriter żeby zapisywać informacje do pliku

Na początek zadziałaj na plikach, a jak wstawisz kod spróbujemy przerobić na bazę danych i obiekty ;)
no i poprawimy błędy ;)

edytowany 1x, ostatnio: juniorchat
somekind
Ad. 2. A wystarczy File.ReadAllLines. Ad. 4. Analogicznie File.WriteAllLines.
JU
podstawy... mistrzu podstawy. Niech się pobawi i nauczy interpretować zawartość pliku.
somekind
To co ja napisałem, to też są podstawy, podstawowe klasy frameworka trzeba znać. Ale wiem o co Ci chodzi, i przyznaję rację - strumieni też się trzeba nauczyć.
JU
Kliknął bym Ci lubię to ale nie ma tu takiej opcji ;P
0

Z odczytywaniem nie byłoby problemu myślę ale gorzej byłoby z zapisaniem, gdyż zawsze mi to nie wychodziło, podwajało zapisywany tekst lub wszystko było w jednej linijce dlatego rzadko korzystam z pliku, czesciej ze zmiennych, baz danych. Zaraz będę zaczynał to robić, jak coś nie będzie wychodzić to zgłoszę się do was

JU
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:149
0

Może zacznij więc od tego, że wpis trzeba czymś identyfikować (id) i edytować go (jeżeli korzystasz z bazy) lub usunąć i zrobić nowy wpis (jeżeli korzystasz z operacji na pliku) - jednak jeżeli chciał byś korzystać z operacji na plikach, dla własnego ułatwienia zapisuj wszystko w nowej linii.
Oczywiście lepszym rozwiązaniem była by baza danych - wtedy tylko dobre zapytania ;)
Powodzenia - czekamy na efekty ^^

0

Ale jak będę zapisywał w bazie wszystko to ta baza chyba wybuchnie xd, skoro będę musiał dla każdego użytkownika użytkownika zapisywać czego się nauczył to będzie ogromna baza. Program tworzę także dla kolegów i koleżanek dlatego mówię użytkownicy. Przykładowo jakbym miał w pliku .txt takie linijki
**
1.yes,tak,0
2.no,nie,0
3.how,jak,1**

Z tej linijki umiem tylko jedno słówko więc dajemy na końcu 1, pozostałych dwóch linijek nie umiem więc stawiamy 0. Zaraz pomyślę nad tym jak te wyczytywanie ma wyglądać bo na razie nie mam na to pomysłu, myślałem, żeby każdą rzecz dać po czymś innym (,.|) aby łatwiej było odróżniać co jest do czego.

0

Nie mam kompletnie pomysłu jak wyczytywać to po id. czyli jeżeli potrzebuje słówek spod id. 4 to nie wiem jak mam to zrobić aby znalazło mi słówka spod id. 4 i słowo angielskie i polskie zapisało pod dwie różne zmienne. Wiem tylko, że trzeba zrobić readtoend, dalej nie mam pomysłu, substring też nie pójdzie chyba, że tylko id wyczytać, gdyż słówka nie będą tej samej długości, ale jak później się odnieść do konkretnej linijki :/

0
Kopiuj
            string [] tekst = File.ReadAllLines(@"C:\Angielski.txt");
            string linia = tekst[nr_linii_od_zera];
            MessageBox.Show(linia.Substring(0, 1));

Zrobiłem coś takiego aby dobrać się do konkretnej linii i odczytuje index poprzez substring bo tak będzie najprościej.
Teraz tylko możecie mi pomóc, gdyż nie wiem jak mam wyodrębnić z tej linijki słówko polskie i angielskie do oddzielnych zmiennych. Będzie też problem z zapisaniem tych słówek a co najgorsze zedytowanie konkretniej linijki w celu zmiany (umiem,nie umiem)

JU
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:149
0

podpowiem ;) jest taka funkcja jak split - może Ci się przydać ;D
A co do bazy danych - wcale by nie wybuchła ;)
baza danych ma dużą przepustowość ;) a przecież możesz pobierać np całą tabele z bazy i zapisywać id użytkownika i id słówka wtedy dodając do tego czy użytkownik umie ;)
Wyglądało by to tak:
tabela użytkownik:
-id
-login
-haslo
tabela słówka:
-id
-ang
-pol
tabela czy umiem:
-uzytkownik.id
-słówka.id
-czy umiem ( 1 lub 0)

do tego proste zapytanie ;)

edytowany 1x, ostatnio: juniorchat
0

Sprwadzę tą funkcje ale raczej będę korzystał z bazy mysql. Jeszcze tylko muszę wymyślić jak to wszystko ma działać

JU
Jak coś to pytaj ;) Tylko łatwiej będzie jak w końcu zaczniesz pokazywać kod co naskrobałeś :P
0

Wstyd cokolwiek pokazywać jak nic konkretnego nie mam :D. Muszę myśleć jak te losowanie słówek, cały ten mechanizm ma wyglądać

n0name_l
Nie pisz tyle postow pod soba, poloz sie, przemysl i wtedy dopiero napisz, albo sie zarejestruj(!).
JU
pir..le więcej się nie wypowiadam, skoro ktoś zmiksowawszy wszystkie moje posty.. nawet nie napisał co mu się nie podoba
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)