Jak zrobić generator słów?


(Keab99) #1

Witam.

Chciałbym zapytać czy zrobienie generatora słów (napisanych przeze mnie) jest trudne i czy potrzebna jest do tego znajomość języków programowania itp. W jakim programie można coś takiego zrobić?


(Sawyer47) #2

Podaj jakiś przykład o co Ci chodzi, bo nie do końca rozumiem jak z jednej strony mają być generowane, a z drugiej strony pisane przez Ciebie,

Niezbędna pewnie nie jest, ale może wiele ułatwić.

Dowolny język programowania powinien się nadać.


(Keab99) #3

Chodzi mi o takie coś że zrobię listę słów a program będzie wybierał któreś z nich losowe.


(Sawyer47) #4

No to losowanie, a nie generowanie.

Cóż, nada się prawie dowolny język programowania i jest to raczej banalne. Mogą też się nadać inne programy mające możliwość generowania liczb losowych jak arkusze kalkulacyjne czy bazy danych. To, czego użycie jest sensowniejsze zależy już od tego gdzie i po co potrzebna Ci taka funkcja.


(floyd) #5

(Keab99) #6

floyd , zrobiłem tak jak napisałeś i po otwarciu pliku .htm jest tylko przycisk losuj cytat i jak na niego kliknę nic się nie dzieje. Ale właśnie o takie coś mi chodziło, tylko żeby działało :slight_smile: A można zrobić taki program np. w pliku .exe a nie .htm?


(Sawyer47) #7

U mnie działa. Jesteś pewien, że masz włączony JavaScript?

Oczywiście, że można.


(Keab99) #8

W Chrome mi nie działa w IE działa. A czy zrobienie z tego pliku.exe albo .bat jest trudne? Może ktoś napisać mi gotowy skrypt?


(floyd) #9

W każdej przeglądarce działa w Chrome też (sprawdziłem) o ile włączona jest obsługa JavaScript.

Jasne, że można zrobić w pliku wykonywalnym xxxx.exe. Taka kiepska pogoda, że chyba dzisiaj Ci napiszę. :slight_smile:


(Sawyer47) #10

Na przykład w C++:

W pliku words.txt w nowej linii wpisujesz kolejne słowa/frazy

raz

dwa

trzy

I kod do skompilowania:

#include 

#include 

#include 

#include 

#include 

#include 


int main()

{

	using namespace std;

	srand(time(0));

	vector words;

	ifstream file("words.txt");

	string tmp;


	while(getline(file, tmp))

		words.push_back(tmp);


	if(!words.empty())

	{

		size_t i = rand() % words.size();

		cout << words[i] << endl;

	}


	return 0;

}

(Keab99) #11

Jak to skompilować w Dev C++ ?


(floyd) #12

Tu masz gotowy programik:

Po kliknięciu klawisza edycja otwiera się okno notatnika i wpisujesz interesujące Cię słowa czy teksty które mają być losowane (każdy w oddzielnej linii). Zapisujesz pod nazwą:teksty.txt


(Keab99) #13

Bardzo dziękuję :slight_smile:

A gdybym w przyszłości chciałbym edytować ten program (tekst przycisków, kolor tła) to da się to zrobić?


(floyd) #14

Zrobić to by szło, ale nie wydaje mi się to takie ważne. :slight_smile:

Zmieniłem natomiast sposób losowania na losowanie bez zwracania (Jak w totolotku gdzie po wylosowaniu kuli nie jest ona wrzucana do bębna i kolejne losowanie już jest bez tej kuli.)


(Keab99) #15

Nie rozumiem co zrobiłeś w tej nowej wersji. Chodzi ci o to że słowa się nie powtarzają?

A na tej starej wersji dałoby się zrobić białe tło zamiast tego łososiowego? I taka mała uwaga: przy każdym uruchomieniu programu on losuje w takiej samej kolejności, da się to zmienić?


(floyd) #16

To rzeczywiście było moje niedopatrzenie z tymi samymi losowaniami przy każdym uruchomieniu i poprawiłem.

Co to jest losowanie bez powtórzeń? Jeżeli mam zbiór liter: "a,b,c,d" i w pierwszym losowaniu wylosowana została np. litera b, to w następnym losowaniu losowana jest litera ze zbioru: "a,c,d" gdy wylosowane zostaną już wszystkie litery, to wszystko zaczyna się od początku czyli zbiór liter będzie znowu: "a,b,c,d". Masz teraz do wyboru: Losowanie z powtórzeniami lub bez powtórzeń. Jeżeli łososiowy kolor jest kiepski, to zmieniłem według życzenia. :slight_smile:


(Keab99) #17

Strasznie ci dziękuje jesteś królem!! :smiley:


(Sq3hlb) #18

Witam!

Można jeszcze raz zamieścić link do tego programiku - już jest nieaktywny, a chce go wykorzystać do losowego wyboru słów ze zbioru utworzonego przeze mnie do nauki telegrafii.


(Wojciech Sowa) #19

Do generowania zdań można użyć łańcuchów Markowa http://pl.wikipedia.org/wiki/%C5%81a%C5%84cuch_Markowa - jeśli będziesz potrzebował implementacji daj znać - kiedyś pisałem taki generator zdań na podstawie przykładowego tekstu.