matematykaszkolna.pl
Programowanie Klodzia: Mam mały problem. Chcę napisać program w pascalu, który będzie wypisywał liczby pierwsze mniejsze od wczytanej n oraz ich liczbę. Liczby pierwsze wypisuje mi normalnie, ilość ich również, ale nie wiem czemu w nowej linijce jest napisane 0 . O to mój pseudokod function liczby(n:integer):integer; var i,k,l:integer; pierwsza:boolean; begin l:=0; for k:=2 to n−1 do begin pierwsza:=true; for i:= 2 to k−1 do if k mod i=0 then pierwsza:=false; if pierwsza=true then begin write(k,' '); l:=l+1; end; end; writeln; writeln(l); end; var n,i,k,l:integer; pierwsza:boolean; begin readln(n); writeln(liczby(n)); readln; end.
24 kwi 16:04
zxc: l:=0; writeln(l);
24 kwi 21:01
Kejt: Pascala zbytnio nie ogarniam choć pewnie różnica niewielka do C/C++ w składni, mogę napisać i podesłać kod w C
24 kwi 21:05
Mateusz: program prime; var n,lp,p,d : longint; t : boolean; begin readln(n); lp := 0; p := 2; while lp < n do begin t := true; for d := 2 to p − 1 do if p mod d = 0 then begin t := false; break; end; if t then begin write(p,' '); inc(lp); end; inc(p); end; writeln; end. Musisz dopisac sobie wypisywanie ilosci liczb co trudne nie jest, instrukcja inc powoduje inkrementacje a instrukcja która jest przeciwienstwe czyli taka ktora dokonuje dekrementacji argumentu to Dec, są to predwefiniowane instrukcje języka Pascal.
24 kwi 21:49
b.: Jeśli chodzi o Twój program, to linia trzecia od końca: writeln(liczby(n)); wypisuje wynik funkcji liczby, ale ta funkcja chyba nic nie zwraca; jeśli dobrze pamiętam składnię, powinno byc na końcu tej funkcji liczby:=l; Gdyby tak było, to wtedy liczba liczb pierwszych będzie wypisywana 2x, raz w funkcji i raz poza nią, więc któreś writeln trzeba wywalić.
25 kwi 00:39
Klodzia: Działa, ale nie za bardzo rozumiem, czemu było źle i dlaczego trzeba w taki sposób to zmodyfikować? Nie rozumiem też zapisu liczby:=l emotka
25 kwi 11:41
Klodzia: B to do ciebie pytanie emotka
25 kwi 11:43
Klodzia: Nasunęło mi się nowe pytanie. Gdyby tak ograniczyć program tylko do wypisania liczb pierwszych to umieszczając w kodzie funkcji liczby:=k; zamiast write(k,' '); wynikiem jest tylko ostatnie k fora. Co należy więc z tym faktem zrobić, skoro musi być na końcu funcji zwracana jakaś wartość?
25 kwi 12:25
b.: Zapis liczby:=l; pozwala funkcji zwrócić wartość i w zasadzie zawsze powinno się coś takiego w funkcji znaleźć. Drugie pytanie to jest problem, jak zrobić, żeby funkcja zwracała tablicę. Szczerze mówiąc, nie pamiętam jak to się robi w Pascalu. Być może że trzeba dać tablicę jako argument. Ale gdyby się ograniczać tylko do wypisywania liczb pierwszych, to można nie zmieniać tego write(k,' ');, wywalić 'liczby:=...' i zmienić funkcję na procedurę (czyli funkcję, która nic nie zwraca, o ile dobrze pamiętam, w Pascalu jest takie rozróżnienie).
26 kwi 23:58