Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2008, 14:53   #1
SZero
 
Регистрация: 24.02.2008
Сообщений: 7
По умолчанию Pascal, момент с выводом массива.

Здравствуйте.
Нужно сделать программку, очень простеньку. Она составляет массив действительных числ, делает выборку элементов относительно заданной константы, выводит эти элементы в новый массив и дальше совершает над ним ряд действий по простым математическим формулам.
С заданием максимального количества элементов, заполнением и выводом исходного массива я справился. Дальше выбор элементов ( те, что больше константы - не нужны, что меньше - в новый массив ). Это тоже сделал, счетчик считает верно, а вот вывести этот получившийся массив не получается. Кол-во элементов выводит верное, а сами элементы - нули.
Вот что я смог сделать:
program p;
uses crt;
const z=10;
var
b:array[1..10] of real;
a:array[1..10] of real;
k:integer;
i,n:integer;
begin
clrscr;
repeat
write('Максимальное число эл-тов - ');
read(n);
if (n>10) or (n<=0) then
begin
writeln('ошибка');
writeln;
end;
until (n>0) and (n<=10);
writeln('Заполнение массива');
writeln;
for i:=1 to n do
begin
write('вводим''[',i,']''элемент, равный ');
read(a[i]);
end;
writeln;
writeln('исходный массив');
for i:=1 to n do
write(a[i]:5:1);
writeln;
writeln('выборка эл-тов');
writeln;
k:=0;
for i:=1 to n do
if (a[i]<z) then
begin
k:=k+1;
end
else
k:=k+0;
begin
writeln('получившийся массив');
for j:=1 to k do
write(a[j]:5:1);
end;
end.
Собственно весь вопрос заключается в 3 и 4 строчках с конца...видимо там я что-то не так поставил.
Заранее спасибо, извините если много...
SZero вне форума Ответить с цитированием
Старый 20.09.2008, 15:20   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
writeln('выборка эл-тов');
writeln;
k:=0;
for i:=1 to n do
if (a[i]<z) then
begin
k:=k+1;
end
Массив в не заполняется нигде, замени на это:
Код:
writeln;
k:=0;
for i:=1 to n do
if (a[i]<z) then
begin
k:=k+1;
b[k]:=a[i]
end
Цитата:
writeln('получившийся массив');
for j:=1 to k do
write(a[j]:5:1);
end;
Выводить надо новый массив, например так:
Код:
writeln('получившийся массив');
for i:=1 to k do
write(b[i]:5:1);
end;
repeat until keypressed
eoln вне форума Ответить с цитированием
Старый 20.09.2008, 15:38   #3
SZero
 
Регистрация: 24.02.2008
Сообщений: 7
По умолчанию

Большое спасибо, понял свою ошибку, небыло заполнения массива b. Большое спасибо еще раз.
SZero вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь с выводом в файл FatalX Помощь студентам 1 14.07.2008 19:23
Проблемка с выводом Gladiator Общие вопросы Delphi 2 28.05.2008 19:51
Как определить момент запуска сторонней программы? NioTo Win Api 2 17.12.2007 16:40
Как и в какой момент написать обработчик события если БД не доступна Arteom БД в Delphi 8 04.10.2007 12:08
HELP!!! как обрабатать только 2 нажатия в 1 момент времени. frai Общие вопросы Delphi 4 16.04.2007 16:10