delphi dzielenie

0

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

0

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.

0

Losuj dzielnik i wynik dzielenia, a dzielną obliczaj. Np. dzielna = 9, wynik = 8. Pytasz o wynik dzielenia 72/9.

0

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

0

i mam jeszcze pytanie ;p
kumpel mi mowi ze moge to zrobic z pomoca tablicy, czy takie rozwiazanie bedzie dobre?

0

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.

0

nie obrazam cie, czy ja napisalem ze to w twoich linkach moze byc syf?
mowilem o linkach autora postu;)
dzieki za pomoc ;)

0

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.

0

no ok:) ja juz zrobilem ;p wszystko smiga ;) dziekowa ;)

0

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:)?

0

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 :)

0

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

0

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.

0

oj tam nie czepiaj sie ;D pisalem szybko i nieraz zrobie jakis blad ;)
dzieki zaraz bede probowal ;)

0

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 :)

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