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

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

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

 
 Ответить  Открыть новую тему 
> В Чем моя ошибка? Процедуры и функций
Credo
сообщение 1.11.2010 20:04
Сообщение #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 
 К началу страницы 
+ Ответить 
Client
сообщение 1.11.2010 20:11
Сообщение #2


Профи
****

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

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


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

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


Пионер
**

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

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


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


Гость






Credo, это не единственная ошибка. Во-первых, будет конфликт имен, а во-вторых - (ну, куда ж без него) вылет за пределы массива. Потому что открытый массив индексируется с 0, а не с 1. Соответственно, при попытке обратиться к a[10] и b[20] (внутри процедур) будет что?
 К началу страницы 
+ Ответить 
Credo
сообщение 1.11.2010 21:26
Сообщение #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 
 К началу страницы 
+ Ответить 
sheka
сообщение 1.11.2010 21:27
Сообщение #6


Я.
****

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

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


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


Гость






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

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


Пионер
**

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

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


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


Гость






Где именно? Я не вижу исправлений. В коде из сообщения №5 по-прежнему есть указанные ошибки.
 К началу страницы 
+ Ответить 
Credo
сообщение 2.11.2010 14:55
Сообщение #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 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 2.11.2010 15:03
Сообщение #11


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

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

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


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


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


Гость






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

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

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


Пионер
**

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

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


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

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

 



- Текстовая версия 19.06.2025 1:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"