jak zliczyć dane z pętli for

2010-12-30 17:08
0

Witam , mam problem z zliczaniem liczb .

program liczby_pierwsze_zanuzone;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var i,c,b,a,n,x:Integer;
    r:array of Integer;

begin
   writeln('Wpisz liczbe ...');
   readln(a);

   for i:=1 to a do
   begin
   x:=0;
   for n:=1 to i do
   begin
   if i mod n=0 then
   x:=x+1;
   end;
   if x=2 then
   begin
   SetLength(r,i);
   b:=0;
   for c:=low(i) to high(i) do
   begin
   b:=b+1;
   end;
   end;
   writeln('W liczbie ',a,' miesci sie ',b,' liczb pierwszych');
   end;
   readln;
end.

Chodzi mi głównie o ostatnią pętlę typu for . Nie wiem czy poprawnie użyłem low/high . Ma ona wyszukane liczby pierwsze dodać np. jeżeli mam liczby 2,3,5,7 to ma wyswietlić ze są 4 liczby . Program prosi uzytkownika o wpisanie liczby i wyswietla ile liczb pierwszych zmieści się w tej liczbie podanej przez użytkownika , ale nie mogą się te liczby pierwsze powtarzać .

Pozostało 580 znaków

2010-12-30 17:15
0

Kod niesformatowany i bez odpowiednich znaczników to się czytać nie chce i do tego te "zanuzone".


Pozostało 580 znaków

2010-12-30 18:07
rogal180
0
program liczby_pierwsze_zanuzone;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var i,c,b,a,n,x:Integer;
    r:array of Integer;

begin
   writeln('Wpisz liczbe ...');
   readln(a);

   for i:=1 to a do
   begin
   x:=0;
   for n:=1 to i do
   begin
   if i mod n=0 then
   x:=x+1;
   end;
   if x=2 then 
// tutaj są już gotowe liczby pierwsze 
   begin
   SetLength(r,i);
   b:=0;
   for c:=low(i) to high(i) do
        begin
        b:=b+1;
        end;
   end;
   writeln('W liczbie ',a,' miesci sie ',b,' liczb pierwszych');
   end;
   readln;
end.

Pozostało 580 znaków

2010-12-30 18:20
0

Kod nadale niesformatowany

edytowany 1x, ostatnio: jawor1104, 2010-12-30 18:20

Pozostało 580 znaków

2010-12-30 19:03
0

Pomoge mu ;p

program liczby_pierwsze_zanuzone;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var i, c, b, a, n, x : Integer;
    r : array of Integer;

begin
   writeln('Wpisz liczbe ...');
   readln(a);

   for i:=1 to a do
   begin
     x:=0;
     for n:=1 to i do
     begin
       if i mod n=0 then
       x:=x+1;
     end;
     if x=2 then
     // tutaj są już gotowe liczby pierwsze
     begin
       SetLength(r,i);
       b:=0;
       for c:=low(i) to high(i) do
       begin
         b:=b+1;
       end;
     end;
     writeln('W liczbie ',a,' miesci sie ',b,' liczb pierwszych');
   end;
   readln;
end.

Pozostało 580 znaków

2010-12-30 19:39
rogal180
0

dzięki losowy .

Ma ktoś pomysł ??

Pozostało 580 znaków

2010-12-30 19:43
0

Błąd ortograficzny w nazwie programu? Ale to chyba nie ma wpływu na działanie kodu, a może ma ;/
A jak chcesz zrobić pętlę dla wielkości tablicy to rób ją dla wielkości tablicy, a nie wielkości zmiennej
typu integer tak jak w tym momencie. Więcej nie pomogę, bo nie wiem co to są te liczby nurkujące.


edytowany 2x, ostatnio: olesio, 2010-12-30 19:48
xD . 'zanuzone' --> co to za wyraz ? 'liczby pierwsze zanużone' ? - Patryk27 2010-12-30 19:46

Pozostało 580 znaków

2010-12-30 19:48
0

Najbrutalniejszy algorytm:
dla każdej liczby "i" z przedzialu 1..a sprawdzasz, czy liczba "i" jest liczba pierwsza - polecam stworzenie do tego oddzielnej funkcji :> jesli tak, to zwiekszasz licznik liczb pierwszych o 1.
W dodatku, przy sprawdzaniu pierwszosci liczby wystarczy sprawdzic czy nie dzieli sie przez jakas z liczb z przedzialu 2..sqrt(x).

Pozostało 580 znaków

2010-12-30 19:58
Autor postu
0

No to może i ja coś pomogę

rogal180 napisał(a)

...
var i: Integer;
...
for c:= low(i) to high(i) do


Chodzi mi głównie o ostatnią pętlę typu for . Nie wiem czy poprawnie użyłem low/high .

Odpowiem w następujący sposób: i tak, i nie. Tak, bo kompilator nie zgłasza błędu, natomiast nie, bo
Low(i) = Low(Integer) = -2147483648
High(i) = High(Integer) = 2147483647

więc ta pętla będzie wyglądać tak

for c:= -2147483648 to 2147483647 do

a zapewne nie o to Ci chodziło. Jeśli juz to powinno być:

for c:= Low(r) to High(r) do

Pozostało 580 znaków

2010-12-30 22:40
0
program liczby_pierwsze_zanuzone;

znużone czy zanurzone?

Pozostało 580 znaków

2010-12-30 22:40
rogal180
0

program liczby_pierwsze_zanuzone;

{$APPTYPE CONSOLE}

uses
SysUtils;

var i, c, b, a, n, x : Integer;
r : array of Integer;

begin
writeln('Wpisz liczbe ...');
readln(a);

for i:=1 to a do
begin
x:=0;
for n:=1 to i do
begin
if i mod n=0 then
x:=x+1;
end;
if x=2 then
// tutaj są już gotowe liczby pierwsze
begin
SetLength(r,i);
b:=0;
for c:=low(r) to high(r) do
begin
b:=b+1;
end;
end;
end;
writeln('W liczbie ',a,' miesci sie ',b,' liczb pierwszych');
readln;
end.



Dla podanej liczby np. 10 wyświetla się że jest takich liczb 7 , a powinien wyświetlić 3 bo w 10 mieści się 2,3 oraz 10

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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