[Pascal] Funkcje

gazar
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 27 kwie 2012, o 12:15
Płeć: Mężczyzna
Lokalizacja: Warszawa

[Pascal] Funkcje

Post autor: gazar »

Witam, mam do zrobienia zadanie z programowania

Treść zadania:
1a.Napisz program losujący elementy do tablicy 10 elementowej;
1b.Napisz funkcję zwracającą ile elementów tablicy było podzielnych przez 7;
1c.Napisz funkcję sprawdzająca czy liczba jest liczba pierwszą (jest podzielna przez 1 i sama siebie);
1d.Napisz funkcję która przejdzie po elementach tablicy i wypisze te które sa liczbami pierwszymi z wykorzystaniem funkcji 1c.

To co udało mi się wyskrobać:

Kod: Zaznacz cały

program zadanie;
uses crt;
const n=10;
var
tab:array[1..n] of integer;
i:integer;
function podzielnosc(a:integer):integer;
        begin
 
        
        end;
 
 
begin
clrscr;
randomize;
for i:=1 to n do tab[i]:=random(100)+1;
for i:=1 to n do write(tab[i],);
 
repeat until keypressed;
end.
Proszę o pomoc z lekkim objaśnieniem, z góry dziękuje
TPB
Użytkownik
Użytkownik
Posty: 500
Rejestracja: 19 lip 2011, o 09:20
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 19 razy
Pomógł: 79 razy

[Pascal] Funkcje

Post autor: TPB »

Rozumiem, że problemem jest punkt 1b? Cóż napisanie tej funkcji nie jest zbyt trudne. Będzie to wyglądało jakoś tak:
function podzielnosc(a:tab):integer;
var
i,k: integer;
begin
k:=0 //zmienna pomocnicza liczy ile liczb jest podzielnych przez 7
for i:=1 to n do
if (a mod 7)=0 then k:=k+1;
podzielnosc:=k;
end;

Parametrem funkcji powinien być typ tablicowy, bo przeglądasz całą tablice i sprawdzasz ile liczb jest podzielnych przez 7.
Co się dzieje w funkcji? Za pomocą pętli for przeglądamy całą tablicę. Jeżeli jakiś element jest podzielny przez siedem (warunek a mod7=0), to zwiększamy parametr k o 1. Na koniec przypisujemy wartości funkcji parametr k. I gotowe.
ODPOWIEDZ