witam. mam pytanie;p jak zrobic dzielenie liczb, liczby sa losowane, i zeby mi losowalo tak zeby wynik byl calkowity. zeby np nie wylosowalo 15:7 bo wynik nie bedzie calkowity.
wynik ten pozniej trzeba wpisac i sprawdza czy jest dobry. prosze o pomoc;)
pozdrawiam mistrin
Ja bym to zrobił tak jak poniżej:
var
Liczba1, Liczba2 : integer;
begin
Liczba1 := Random(10) + 1;
repeat
Liczba2 := Random(10) + 1;
until Liczba1 mod Liczba2 = 0;
Edit1.Text := IntToStr(Liczba1);
Edit2.Text := IntToStr(Liczba2);
end;
Poza tym jeżeli to Ty piszesz ten program "Mały Matematyk" to zobacz na temat pod
adresem http://4programmers.net/Forum/626038?h=#id626038 i
pewnie teraz ten Twoj temat również trafi do Kosza, bo byle jaki temat, a z treści to
sam powinieneś wywnioskowac, że powinieneś napisać z takim banałem do Newbie.
Losuj dzielnik i wynik dzielenia, a dzielną obliczaj. Np. dzielna = 9, wynik = 8. Pytasz o wynik dzielenia 72/9.
do olesio: nie pisze programu jakiegos tam co ty wymieniles, robie program z samym dzieleniem, i nie bede pobieral tych plikow bo nie wiadomo czy jakiegos syfu tam nie ma.
dzieki za pomoc zaraz bede probowal, pozdrawiam
i mam jeszcze pytanie ;p
kumpel mi mowi ze moge to zrobic z pomoca tablicy, czy takie rozwiazanie bedzie dobre?
mistrin: dlaczego mnie obrażasz skoro ja Ciebie nie obraziłem tylko Tobie tłumaczę, bo była dzisiaj na
forum osoba która pisała program w ktorym brakowało tylko dzielenia. Dlaczego miałbym wrzucić coś,
co jest zawirusowane. Zobacz sobie moje wcześniejsze posty na forum czy kiedy kolwiek komuś coś
zawirusowanego wysłałem. Poza tym jakbyś zobaczył rara to byś widział, że jest źródło i że możesz
sobie przekompilować jak się Tobie nie podoba i otrzymać nowy exe i dcu, a wtedy jeżeli Twoje IDE
nie jest zawirusowane to masz pewność że nie masz wirusa. Poza tym @bo ma trochę racji, można
i losowanie zrobić tak jak poniżej wtedy wylosujesz takie liczby które przy podziale będą calkowite,
ale ja z matmy jestem noga i do tego się przyznaje, więc być może (lub na pewno?) istnieją inne
sposoby na osiągnięcie tego co chcesz zrobić - czyli dzielenia liczb tak aby mieć liczby całkowite.
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Dzielna, Dzielnik, Wynik : integer;
begin
Dzielna := 1;
Wynik := Random(10) + 1;
Dzielnik := Random(10) + 1;
repeat
Dzielna := Dzielna + 1;
until Dzielna = Dzielnik * Wynik;
Edit1.Text := IntToStr(Dzielna);
Edit2.Text := IntToStr(Dzielnik);
end;
A co do użycia tablicy, to pewnie masz na myśli tablice stałych, to nie wiem czy jest sens taką
tworzyć, według mnie najprościej jest sposobem z użyciem mod albo tak jak pisał wcześniej @bo.
nie obrazam cie, czy ja napisalem ze to w twoich linkach moze byc syf?
mowilem o linkach autora postu;)
dzieki za pomoc ;)
Nie no spoko, może ja to źle odebrałem, bo już mi się zdarzyło że na jednym forum
gosciu który nic od siebie nie wstawił na nie, a do tego forum owo służy i służyło w
samodzielnie przeze mnie "poprawionej" grze (miała taki feler że chciała cd wtedna
od gracza albo obraz płyty zamontowany :)) bezpodstawnie twierdził ze jest wirus.
no ok:) ja juz zrobilem ;p wszystko smiga ;) dziekowa ;)
olesio mam jeszcze jedno pytanko;p
bo jak zrobilem to co mi tam wyslales to wszystko ladnie losuje, wstawilem sobie Tedita do wpisywania wyniku i nie wiem jak mam ustawic na przycisk zeby mi sprawdzal czy jest dobrze? pomozesz:)?
Pewnie, że pomogę, tylko jak mogę coś doradzić to poczytaj sobie jakieś kursy o podstawach Delphi.
Może być ten na 4programmers.net. A jak rozmumiem chcesz sprawdzić, czy ktoś podał prawidłowy
wynik w polu edycyjnym. Załóżmy, że w Edit1 i Edit2 jest dzielna oraz dzielnik, a w Edit3 wynik, to:
if StrToInt(Edit3.Text) = StrToInt(Edit1.Text) div StrToInt(Edit2.Text) then
begin
ShowMessage('OK.');
end
else
begin
ShowMessage('Źle!');
end;
Oczywiście kod zadziała jak należy pod warunkiem, że w polach edycyjnych będą wpisane faktycznie
liczby całkowite oraz dzielnikiem nie będzie zero. Poprawność liczb sprawdzić można przy użyciu Val,
ktora to procedura opisana jest tutaj: Val no to chyba all jasne :)
o tak teraz jest ok ;p a jak zabezpieczyc ten przycisk co sobie dalem, u mnie akurat "sprawdz", zeby nie mozna go bylo wcisnac pÓÓÓÓki wszystkie pola nie beda wypelnione
Zanim coś napiszesz korzystaj z www.so.pwn.pl bo to "pÓÓÓÓki" razi po oczach i nóż się w kieszeni otwiera.
Zapamiętaj p<font size="4">ó</span>ki i jak będziesz chciał już kiedykolwiek napisać inaczej to wcześniej poproś kogoś (albo zrób to
sam jak dasz radę) i strzel się z pięści w twarz :P A teraz do rzeczy. Co do ustawienia aktywności Buttona w
ależności od tego czy są pola eydyjne wypełnione to dla jednego z Editów przypisujesz taki kod w OnChange,
dla pozostalych z tych których ma dotyczyć sprawdzenie ustawiasz tę samą procedurę, jak dla pierwszego czyli
w Object Inspectorze wybierasz z listy tę samą procedurę przy OnChange, co dla pierwszego Edita zrobileś już.
SprawdzajBtn.Enabled := (Edit1.Text <>) and (Edit2.Text <> '') and (Edit3.Text);
Można też tak jak poniżej, deklarując wcześniej taki typ najlepiej w tym samym module po sekcji uses:
type
TZbiorZnakow = set of (zzCyfry, zzPL, zzLitery, zzSpacja, zzDomenowe, zzSpecjalne);
Później w sekcji implementation taką funkcję dodajesz:
function CzyTekstOk(Tekst : string; Znaki : TZbiorZnakow) : boolean;
const
Cyfry : set of Char = (['0'..'9']);
PLZnaki = ['ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ż', 'ź', 'Ą', 'Ć', 'Ę', 'Ł', 'Ń', 'Ó', 'Ś', 'Ż', 'Ź'];
Litery = ['a'..'z', 'A'..'Z'];
Spacja = [#32];
Domena = ['.', '-'];
Specjalne = ['/', '!', '@', '_', '$'];
var
I : integer;
OkZnaki : set of Char;
begin
OkZnaki := [];
Result := False;
if Length(Tekst) = 0 then
Exit;
if zzCyfry in Znaki then
OkZnaki := OkZnaki + Cyfry;
if zzPl in Znaki then
OkZnaki := OkZnaki + PLZnaki;
if zzLitery in Znaki then
OkZnaki := OkZnaki + Litery;
if zzSpacja in Znaki then
OkZnaki := OkZnaki + Spacja;
if zzDomenowe in Znaki then
OkZnaki := OkZnaki + Domena;
if zzSpecjalne in Znaki then
OkZnaki := OkZnaki + Specjalne;
for I := 1 to Length(Tekst) do
begin
if (Tekst[I] in OkZnaki) = False then
Exit;
end;
Result := True;
end;
A póxniej w OnChange dla Edita:
SprawdzajBtn.Enabled := CzyTekstOk(Edit1.Text, [zzCyfry]) and CzyTekstOk(Edit2.Text, [zzCyfry]);
I tak dalej, mam nadzieję że wszystko jasne.
oj tam nie czepiaj sie ;D pisalem szybko i nieraz zrobie jakis blad ;)
dzieki zaraz bede probowal ;)
Nie czepiam się, na błedy ortograficzne i to w takim słowie nalezy zwracać uwagę, a
jest to wskazane, tak jak nie robienie błędów. Poczytaj http://bykom-stop.avx.pl :)