Zadanie do zrobienia w Turbo Pascalu, niestety nie mam pojęcia jak to w ogóle "ugryźć" :/
Napisz procedurę, która obliczy i zapisze w tablicy rekordów kolejne sumy
Sn=n^2 + (n-1)^2 + (n-2)^2 + ... +1^2 od n=1 do n=m, dla naturalnego m podanego z klawiatury. rekord zawiera n i obliczoną sumę.
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
Ponizej kod programu. Napislem w FreePascalu. Jezyk jest ten sam, wiec w Turbo Pascalu tez powinno działać, nalezy jeszcze to sprawdzić. U mnie działa.
Zdefinoiwalem typy: PoleTablicy to jest rekord przetrzymujacy dwa pola (tak jak w tresci zadania) oraz Tablice, ktora jest tablica (Array) pol tego typu. Nie wiem jak szczegolowo mam wytlumaczyc. Jezeli cos byloby niejasne, prosze o pytania, postaram sie odpowiedziec. Dlugosc tablicy jest zdfiniowana wartoscia typu const. Dla wprowadzenia M wiekszego niz przyjety limit program zglosi blad i zaknczy sie. Dzialanie programu jest raczej nieskomplikowane: w pierwszej komurce tablicy umieszczam poczatkowo liczby n=1 i suma=1. A nastepnie w kazdej kolejnej komorce wpisuje numer tej komorki N, a sume przepisuje z komorki poprzedniej powiekszona o N*N. W ten sposob w kazdej komorce znajduje sie suma kwadratow liczb naturalnych mniejszych od N w tej komorce. Na koniec program wypisuje wynik, zeby bylo widac ze jest dobrze policzone. To tyle, w razie watpliwosci prosze pytać : )
program sumy;
const M_MAX = 40;
type
PoleTablicy = Record
N: Integer;
Suma: integer;
end;
Tablica = Array[1..M_MAX] of PoleTablicy;
var
M: Integer;
N: Integer;
Tab: Tablica;
begin
//pobranie M od uzytkownika
write('Podaj M (nie wieksze niz ', M_MAX, '): ');
readln(M);
if M > M_MAX then
begin
writeln('Za duze M.');
exit;
end;
//wypelnianie pierwszej komorki tablicy
Tab[1].N := 1;
Tab[1].Suma := 1*1;
//wypelnianie kolejnych komorek tablicy
for N := 2 to M do
begin
Tab[N].N := N;
Tab[N].Suma := Tab[N-1].Suma + N*N;
end;
//wypisanie wyniku na ekran
for N := 1 to M do
begin
writeln ( 'N=', Tab[N].N, ' SN=' , Tab[N].Suma );
end;
end.
Dla M = 10 program wypisal na ekran:
Podaj M (nie wieksze niz 40): 10
N=1 SN=1
N=2 SN=5
N=3 SN=14
N=4 SN=30
N=5 SN=55
N=6 SN=91
N=7 SN=140
N=8 SN=204
N=9 SN=285
N=10 SN=385