IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> В Чем моя ошибка? Процедуры и функций
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Аблай

Репутация: -  0  +


Даны два массива А(10),В(10). В Массивах А(10) и В(10) все элементы предшествующие первому нулевому элементу заменить на 0,5. mega_chok.gif

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;

end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


ошибка в том, что если найдешь 0, то цикл завершится. А тебе надо продолжить цикл и заменять элементы
можешь сделать "флаг" - признак того, что нашел ноль
можешь сделать 2 цикла - первый для поиска номера нулевого элемента, второй для замены элементов

Сообщение отредактировано: Client -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Аблай

Репутация: -  0  +


спасибо щас попробую wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Credo, это не единственная ошибка. Во-первых, будет конфликт имен, а во-вторых - (ну, куда ж без него) вылет за пределы массива. Потому что открытый массив индексируется с 0, а не с 1. Соответственно, при попытке обратиться к a[10] и b[20] (внутри процедур) будет что?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Аблай

Репутация: -  0  +


ааа blink.gif у меня много ошибок не получается совсем программа
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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Цитата
открытый массив
Это что такое?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Вот это:
procedure a(a:array of integer);
- открытый массив, т.е., ты можешь передать в качестве параметра массив любого размера

Credo, читай внимательнее, некоторые ошибки я тебе перечислил. Исправь их сначала. Потом будем разговаривать дальше.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Аблай

Репутация: -  0  +


исправил smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Где именно? Я не вижу исправлений. В коде из сообщения №5 по-прежнему есть указанные ошибки.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Аблай

Репутация: -  0  +


Исправил все что мог но прога не хочет работать smile.gif
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.


Помогить плз исправьте мою ошибку
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Ты почему функции pervaia; и vtoraia; вызываешь без параметров?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Цитата
Исправил все что мог
Все, что мог и ВСЕ, О ЧЕМ ТЕБЕ СКАЗАЛИ - это разные вещи. Я тебя предупреждал, что массивы индексируются с НУЛЯ? Так какого черта у тебя оба цикла - с единицы начинаются?

Зачем тебе ВООБЩЕ две процедуры? Это все прекрасно делается в одной. Для того и пишется процедура, чтоб одинаковый код не копировать. У тебя смысл процедур в чем? Скопировал один и тот же код, изменил по одной букве? Как была ошибка, так и осталась, теперь править ее надо тоже В ДВУХ местах. Что ты выиграл? В чем смысл описания открытого массива?

Плюс ко всему, твоя реализация даже теоретически не делает того, что требуется в задании:
Цитата
В Массивах А(10) и В(10) все элементы предшествующие первому нулевому элементу заменить на 0,5.
Ты ничего не заменяешь, а просто при выводе ПОДменяешь. А если после того, как процедура отработала, еще раз распечатать массив, что будет?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Аблай

Репутация: -  0  +


спасибо я понел свою ошибку. может мне еще создать процедуру для замены wacko.gif ... ну я совсем не понимаю массивы нужно повторить(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 7:46
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name