GRY-Online.pl --> Archiwum Forum

Problem z turbo pascalem

18.01.2005
13:37
smile
[1]

EXCALIBUR(ak) [ Konsul ]

Problem z turbo pascalem

Witam, mam zrobic na informatyke program, ktory ma liczyc kolejne wyrazy ciagu logarytm z n / (2 do potegi n)

poega to kolejne potegi dwojki
"logarytm" to logarytm o podstawie 10 z k czyli (logarytm naturalny z k) / (logarytm naturalny z 10 (dzi))

teraz program wyglada tak:

program ciag;
uses crt;
var
log , potega, n , wynik , dzi , suma: real;
k , l : word;
T:array[1..10000] of real;
begin
clrscr;
k:=0;
l:=0;
suma:=0;
dzi:=10;
potega:=1;
write ('Podaj liczbe wyrazow ciagu: ');
readln (n);
begin
if n<=0 then write ('Podales niepoprawna liczbe wyrazow ciagu.');

if n>0 then
begin
repeat
k:= k+1;
log:=ln(k)/ln(dzi);
potega:=potega*2;
wynik:=log/potega;
write (' wyraz nr.');
write (k);
write (' = ');
write (wynik:10:16);
T[k]:=wynik;
until
n=k
end;
readln;
end
end.


Jak mozna zrobicm zeby przy wyswietlaniu wynikow pokazywaly sie jeden pod drugim, a nie obok siebie??
I jak zrobic zeby wyrazy z tablicy zapisywaly sie do oddzielnego pliku txt?

Z gory dzieki za pomoc :)

18.01.2005
13:40
[2]

kastore [ Troll Slayer ]

writeln (wynik:10:16);

18.01.2005
13:42
[3]

EXCALIBUR(ak) [ Konsul ]

Oooo dzieki :)


jeszcze tylko jak zapisac te wyrazy do oddzielnego pliku.

i czy ta forma wpisywania wyrazow do tablicy jest poprawna?? bo jeszcze potem bede musial jakos policzyc sume tych wyrazow.

18.01.2005
13:43
[4]

Didier z Rivii [ life 4 sound ]

zeby sie wyswietlaly jeden pod drugim pisz "writeln" zamiast "write"
a jesli chodzi o zapis do pliku to nie wiem jak jest pod winda ale pod unixem robi sie to tak:
w lini komend wpisujesz wywolanie pliku skompilowanego (a.out) robisz taka niby strzałke idącą od tego pliku ( > ) i nazwe pliku z wynikami.
czyli np.:

./a.out > winiki.txt

18.01.2005
13:45
[5]

Didier z Rivii [ life 4 sound ]

i jeszcze jedno. napisalas: ""logarytm" to logarytm o podstawie 10 z k czyli (logarytm naturalny z k)
logarytm naturalny to logarytm o podstawie e a nie 10.

18.01.2005
14:28
[6]

kastore [ Troll Slayer ]

Zapis do pliku to inna bajka, niestety Didier, tu sie tak ładnie nie da jak w Unixie. Poza tym , Pascal robi programy dosowe a nie windowsowe :)

gdzieś tam

var
....plik : Text
.....................
begin
....Assign(plik,'Wyniki.txt');
....Reset(plik);
..............
....write (plik,' wyraz nr.');
....write (plik,k);
....write (plik,' = ');
....writeln (plik,wynik:10:16);
..............
....Close(plik);
end

18.01.2005
14:29
[7]

kastore [ Troll Slayer ]

Tylko jak skopiujesz , to kropki wykasuj,





eh, szkoda że nie można dawać znaków tabulacji na forum

18.01.2005
14:31
smile
[8]

wysiu [ ]

kastore --> Oczywiscie, ze w dosie (czy w linii komend w windowsie) da sie zapisac output do pliku w ten sam sposob:)

18.01.2005
14:34
[9]

kastore [ Troll Slayer ]

Z tym zapisywaniem do tablicy to można było inaczej żeby nie robić tego paskudnego repeat'a


if n>0 then for k:=1 to n do begin
....log:=ln(k)/ln(dzi);
....potega:=potega*2;
....wynik:=log/potega;
....write (plik,' wyraz nr.');
....write (plik,k);
....write (plik,' = ');
....writeln (plik,wynik:10:16);
....T[k]:=wynik;
end;

18.01.2005
14:35
[10]

kastore [ Troll Slayer ]

Wysiu , tylko po co :) jak można to w programie opędzić :)

18.01.2005
14:36
[11]

kastore [ Troll Slayer ]

Przecież (chyba) nie ma wymagania żeby to wyprowadzać przez zapis do pliku w linii komend :)

18.01.2005
14:38
smile
[12]

wysiu [ ]

kastore --> Nie, raczej nawet nauczyciel bedzie wolal zobaczyc to w kodzie:) Mowie tylko, ze sie da:)

18.01.2005
14:45
[13]

kastore [ Troll Slayer ]

wysiu --> aa , jasne, jakaś zaćma mię spotkała, jasne że sie da, ostatnio ze zbyt wieloma systemami pracuje :)

19.01.2005
18:27
[14]

EXCALIBUR(ak) [ Konsul ]

kastore ----->
jak zrobie z tym for.... to to sie pokazuje "type mismatch"

19.01.2005
19:02
[15]

EXCALIBUR(ak) [ Konsul ]

Dobra zrobione teraz sam tworzy plik z wynikami caly program wyglada mniej wiecej tak:


program ciag;
uses crt;
var
plik : Text;
log , potega, n , wynik , dzi , suma: real;
k , l : word;
T:array[1..10000] of real;
begin
clrscr;
assign(plik,'wyniki.txt');
rewrite(plik);
k:=0;
l:=0;
suma:=0;
dzi:=10;
potega:=1;
write ('Podaj liczbe wyrazow ciagu: ');
readln (n);
...............begin
...............if n<=0 then write ('Podales niepoprawna liczbe wyrazow ciagu.');
...............if n>0 then
................................begin
................................repeat
................................k:= k+1;
................................log:=ln(k)/ln(dzi);
................................potega:=potega*2;
................................wynik:=log/potega;
................................write (plik,' Wyraz nr.');
................................write (plik,k);
................................write (plik,' = ');
................................writeln (plik,wynik:10:16);
................................T[k]:=wynik;
................................until
................................n=k
................................end;
.........close(plik);
.........write ('Kolejne wyrazy ciagu zapisano w pliku wyniki.txt.');
.........readln;
end
end.

© 2000-2024 GRY-OnLine S.A.