(Free Pascal Wind.7) Wpisywanie do tablicy liczb od 1 do 10


(alabama1) #1

Witam. Mam problem. Chcę zrobić program, który do tablicy 10-elementowej wpisuje liczby od 1 do 10.

program tablicajednowymiarowa;

uses crt;

var

k:integer;

A:ARRAY[1..10] of integer;

begin

clrscr;

for k:=1 to 10 do read(A[k]);

clrscr;

for k:=1 to 10 do write(A[k]);

readln;

end.

Myślałem, że pascal weźmie sobie po kolei liczby od 1 do 10 z k i je wypisze. No, ale nie działa dobrze program. Na stronie http://turbopascal.skryptoteka.pl/11.html znalazłem kod, gdzie trzeba wpisywać liczby, które potem zostaną wpisane do tablicy. ten kod wygląda tak:

program tablicajednowymiarowa;

uses crt;

var

k:integer;

A:ARRAY[1..10] of integer;

begin

clrscr;

writeln('Wprowad« kolejno liczby');

for k:=1 to 10 do read(A[k]);

clrscr;

for k:=10 downto 1 do write(A[k],',');

readln;

end.

Al, co dziwne, ten program też nie działa dobrze. Co tutaj trzeba poprawić? Czy jest możliwość, że bez ręcznego wprowadzania danych do programu program zapisze do tablicy kolejno liczby od 1 do 10?


(Grzelix) #2

ad 1:

program tablicajednowymiarowa;

uses crt;

var

k:integer;

A:ARRAY[1..10] of integer;

begin

clrscr;

for k:=1 to 10 do A[k] := k;

clrscr;

for k:=1 to 10 do write(A[k]);

readln;

end.

ad 2 co to znaczy nie działa dobrze?


(alabama1) #3

Nie wypisuje elementów tablicy. Wprowadzam liczby i po wprowadzeniu wychodzi z programu.

Dzięki za pomoc.


(Pablo_Wawa) #4

Instrukcja read() wczytuje wartość (liczbę), a jeśli chcesz by każde wczytanie potwierdzać ENTER’em, użyj instrukcji readln() - być może naciskałeś ENTER (zamiast robić przerwy - spacje - przy wpisywaniu kolejnych liczb) i stąd to wyjście z programu?

Kod grzelixa

for k:=1 to 10 do write(A[k]);

poprawiłbym na taki, co robi przerwy pomiędzy liczbami, bo się “zlewają”.

for k:=1 to 10 do write(A[k],', ');

(alabama1) #5

Zgadza się. Zawsze po wprowadzaniu danych wciskałem enter, nie skojarzyłem, że teraz mam wypisać wszystkie naraz. Dzięki Pablo_Wawa