Wypisywanie liczb w listboxie

0

Mam problem z takim zadaniem.Program który wypisuje 100 liczb pierwszych i grupuje je po 20.
Wiem jak napisac funkcje pierwszą ale nie wiem jak zrobic aby wypisywało liczby w listboxie(nie znalazłem podobnego tematu na tym forum)...
Proszę o pomoc.

0
ListBox1.Items.Add(IntToStr(Liczba));
0

Pozwól że ci pomogę:

ListBox.Items.Add(IntToStr(Liczba));

0

Wiem jak zrobić zeby wypisywało "coś" w listboxie ale nie potrafie aby grupowało liczby po 20??

0

wstawiaj pustą linię po każdych dwudziestu? ;-)

0

Dobry pomysł nie pomyslałem zaraz wkleje program mom nadzieje że będzie działał.

0

.........................
function pierwsza (arg:integer):Boolean;
var I :Integer;
begin
pierwsza :=true;
for I:=2 to round(sqrt(arg)) do
if(arg mod I)=0 hten pierwsza := false
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender:TObject);
var i,x,y:Integer
begin
// tutaj trzeba jakąś pentle bo zrobić ale nie zabardzo wiem jak

0

Może tak:

function pierwsza (arg:integer):Boolean;
var I :Integer;
begin
   pierwsza :=true;
   for I:=2 to round(sqrt(arg)) do
      if(arg mod I)=0 then pierwsza := false
end;

procedure TForm1.Button1Click(Sender:TObject);
Const IleLiczbZnalezc=100;
      CoIleEnter=20;
Var I, Q: Integer;
Begin
 I := 0;
 Q := 0;
 While (I < IleLiczbZnalezc+1) Do 
 Begin
  Inc(Q);
  if Pierwsza(Q) Then
  Begin
   Inc(I);
   ListBox1.Items.Add(IntToStr(Q));
   if (I Mod CoIleEnter) = 0 Then
    ListBox1.Items.Add('');
  End;
 End;
End;

Sprawdzone i działa ;)

 if(arg mod I)=0 hten pierwsza := false

To się nie skompiluje...
'hten' --> 'then'

0

Wszystko fajnie tylko jeszcze jak bym mógł prosic o wytłumaczenie zasady działania tego(Dopiero zaczynam nauke pascala/delphi i bardziej żależy mi na zrozumieniu)

I := 0;
Q := 0;
While (I < IleLiczbZnalezc+1) Do
Begin
Inc(Q);
if Pierwsza(Q) Then
Begin
Inc(I);
ListBox1.Items.Add(IntToStr(Q));
if (I Mod CoIleEnter) = 0 Then
ListBox1.Items.Add('');

z góry dziekuje...

0

Kolejny post z banałami w złym dziale. Zapamiętajcie ludzie, że z banałami pisać należy ZAWSZE do działu NEWBIE [!!!]

I := 0; // <- Zmiennej I przypisz liczbę 0;
 Q := 0; // <- Zmiennej Q przypisz liczbę 0;
 While (I < IleLiczbZnalezc+1) Do // <- podczas gdy wartość zmiennej I jest mniejsza od zmiennej IloscLiczb powiększonej o 1 rób...
 Begin // <- konieczne w sytuacji gdy w pętli ma zostać wykonana więcej niż jedna instrukcja
  Inc(Q); // <- zwiększ wartość zmiennej Q (przy braku drugiego parametru zwiększa o jeden).
  if Pierwsza(Q) Then // <- jeżeli funkcja Pierwsza z parametrem Q zwróci Prawdę (True) to...
  Begin // <- wyjaśniłem wcześniej - patrz wyżej...
   Inc(I); // <- Zwiększ wartość zmiennej I (o jeden)
   ListBox1.Items.Add(IntToStr(Q)); // <- do komponentu ListBox1 własności Lines dodaj wartość zmiennej Q przekonwertowanej z liczby na tekst
   if (I Mod CoIleEnter) = 0 Then // <- jeżeli reszta z dzielenia wartości zmiennej I przez wartośc zmiennej CoIleEnter wynosi 0 to...
    ListBox1.Items.Add(''); // <- dodaj pustą linię tekstu do własności Items komponentu ListBox1

Ufff... aż cięzko pisać takie to są banały, oczywiste oczywistości nie powinno się tłumaczyć. Kod Delphi i Pascal przypominają
troszkę jakby taki list po angielsku pisany do kogoś kto chce ogarniać te podstawy, a u Ciebie z tym cieńko - musisz się uczyć.

0

Dobrze nastepnym razem swoje pytanie umieszcze w odpowiednim miejscu.
Ale mam jeszcze pytanie

  1. Chciałbym aby aby grupowanie po 20 wypisywało liczby pierwsze w wierszu a nie kolumnie?

dziękuje za odpowiedz w poprzednim pytaniu

0

Ech - chyba nemal wszyscy pytający tutaj kurcze idą na łątwiznę zamiast samodzielnie chwilę pomyślec, a i w ogóle
to do przechowywania danych w kolumnach nadaje się bardziej TListView, ale jak go używać i ustawić, patrz google.

//...
function Pierwsza(Arg : integer) : boolean;
var
  I : Integer;
begin
  Pierwsza := True;
  for I := 2 to round(sqrt(Arg)) do
    if (Arg mod I) = 0 then
      pierwsza := False
end;

procedure TForm1.Button1Click(Sender : TObject);
const
  CoIleEnter = 20;
  IleLiczbZnalezc = 100;
var
  S : string;
  I, Q : Integer;
begin
  I := 0;
  Q := 0;
  S := '';
  ListBox1.Items.Clear;
  while (I < IleLiczbZnalezc + 1) do
  begin
    Inc(Q);
    if Pierwsza(Q) then
    begin
      Inc(I);
      S := S + IntToStr(Q) + ' ';
      if (I mod CoIleEnter) = 0 then
      begin
        ListBox1.Items.Add(S);
        S := '';
      end;
    end;
  end;
end;
0

Modyfikowałem ten program troche ale nie sziała tak jak potrzeba.
Program miał wypiusywać liczby pierwsze mniejsze od jakiegoś N (którego uzytkownik wpisze do edita)

function Pierwsza(Arg : integer) : boolean;
var
I : Integer;
begin
Pierwsza := True;
for I := 2 to round(sqrt(Arg)) do
if (Arg mod I) = 0 then
pierwsza := False
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

const
CoIleEnter = 20;
var
S : string;
I, Q : Integer;
x: Integer;
pom:Integer;
begin
I := 0;
Q := 1;
S := '';
x:=StrToInt(Edit1.Text);
For pom:=1 to x-1 do
begin
Inc(Q);
if Pierwsza(Q) then
begin
Inc(I);
S := S + IntToStr(Q) + ' ';
if (I mod CoIleEnter) = 0 then
begin
ListBox1.Items.Add(S);
S := '';
end;
end;
end;
end;

Ten program działa poprawnie kedy wpisuje się do edita liczbe wiekszą od 71 nie wiem dlaczego??

0

Fakt, nie przetestowalem dla mniejszej ilości liczb, po prostu program doda Tobie do
ListBoxa liczby dopiero kiedy będzie ich 20. Ale przecież już podałem prawidlowy kod
w temacie: Modyfikacja programu w delphi(2 pytania)

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