Даны два массива А(10),В(10). В Массивах А(10) и В(10) все элементы предшествующие первому нулевому элементу заменить на 0,5.
program pr;
const n=10; p=20;
var
A:array[1..n] of integer;
B:array[1..p] of integer;
procedure a(a:array of integer);
var i:integer;
for i:=1 to 10 do
begin
if a[i]:=0
then break
else a[i]:=0,5;
end;
procedure b(a:array of integer);
var i:integer;
begin
for i:=1 to 20 do
begin
if a[i]:=0
then break
else a[i]:=0,5;
end;
ошибка в том, что если найдешь 0, то цикл завершится. А тебе надо продолжить цикл и заменять элементы
можешь сделать "флаг" - признак того, что нашел ноль
можешь сделать 2 цикла - первый для поиска номера нулевого элемента, второй для замены элементов
спасибо щас попробую
Credo, это не единственная ошибка. Во-первых, будет конфликт имен, а во-вторых - (ну, куда ж без него) вылет за пределы массива. Потому что открытый массив индексируется с 0, а не с 1. Соответственно, при попытке обратиться к a[10] и b[20] (внутри процедур) будет что?
ааа у меня много ошибок не получается совсем программа
program pr;
const n=10; p=10;
var
A:array[1..n] of real;
B:array[1..p] of real;
procedure d(a:array of real);
var i:integer;
begin
for i:=1 to n do
if a[i]<>0 then
a[i]:=0.5
else
break;
writeln(a[i]:5);
end;
procedure k(a:array of real);
var i:integer;
begin
for i:=1 to p do
begin
if a[i]<>0 then
begin
a[i]:=0.5;
writeln(a[i]:5);
end;
end;
end.
Вот это:
procedure a(a:array of integer);
- открытый массив, т.е., ты можешь передать в качестве параметра массив любого размера
Credo, читай внимательнее, некоторые ошибки я тебе перечислил. Исправь их сначала. Потом будем разговаривать дальше.
исправил
Где именно? Я не вижу исправлений. В коде из сообщения №5 по-прежнему есть указанные ошибки.
Исправил все что мог но прога не хочет работать
program laborotorka;
const n=10; p=10;
uses crt;
var
A:array[1..n] of real;
B:array[1..p] of real;
{--------------------------------------------------------------------}
procedure pervaia(a:array of real);
var
i:integer;
begin
for i:=1 to n do
if a[i]<>0 then
a[i]:=0.5
else
break;
write('a[i]=',a[i]);
end;
{--------------------------------------------------------------------}
procedure vtoraia(b:array of real);
var
i:integer;
begin
for i:=1 to p do
if b[i]<>0 then
b[i]:=0.5
else
break;
write('b[i]=',b[i]);
end;
{--------------------------------------------------------------------}
BEGIN
clrscr;
pervaia;
vtoraia;
readln;
END.
Ты почему функции pervaia; и vtoraia; вызываешь без параметров?
спасибо я понел свою ошибку. может мне еще создать процедуру для замены ... ну я совсем не понимаю массивы нужно повторить(