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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 21.02.2011, 22:55   #1
Анастасия18
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 16
По умолчанию Паскаль

Помогите пожалуйста разобраться с задачей: Составьте функцию, принимающую значение True, если в первом из двух заданных одномерных массивов количество отрицательных элементов окажется больше, чем во втором, и значение False – в противном случае. Применив эту функцию к двум заданным массивам A и B, измените на противоположный знак значения элементов того массива, у которого оказалось больше отрицательных элементов.Если количество отрицательных элементов одинаково, то выведите соответствующее сообщение.
Program lab2;
Uses crt;
Var i, r, c k1, k2, n:byte;
h:boolean;

Function Mass(x:byte):byte;
var i, c, k,, n1, n2:byte;
a, b, mas:array [1..100] of byte;
Begin
for i:=1 to x do
begin
readln (mas[i]);
if c=0 then begin
a[i]:=mas[i];
n1:=x;
if a[i]<0 then k:=k+1
else begin
end;
end
else begin
b[i]:=mas[i];
n2:=x;
if b[i]<0 then k:=k+1
else begin
ens;
ens;
ens;
Mass:=k;
End;

Function Bool(f1, f2:byte):boolean;
var i, n1, n2:byte;
g:boolean;
a, b:array [1..100] of byte;
Begin
if f1>f2 then begin
for i:=1 to n1 do
begin
a[i]:=-a[i];
g:=TRUE;
end;
end
else begin
for i:=1 to n2 do
begin
b[i]:=-b[i];
g:=FALSE;
end;
end;
Bool:=g;
End;

BEGIN
clrscr;
c:=0;
r:=0;
for i:=1 to 2 do
begin
write ('Введите размер массива n=');
readln (n);
if r=0 then k1:=Mass(n)
else k2:=Mass(n);
end;
r:=r+1;
c:=c+1;
end;
if k1=k2 then writeln ('В 1-ом массиве количество отрицательных элементов равно 2-му")
else begin
h:=Bool(k1,k2);
writeln (h);
end;
end;
readln;
END.
При запуске он выдает ошибку:Error 94: "." expected.
Анастасия18 вне форума
Старый 21.02.2011, 23:11   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Странно, что Паскаль выдаёт только ЭТУ ОШИБКУ. Во-первых,

Кто будет ставить запятую при объявлении переменных?
Код:
Var i, r, c{Где здесь запятая?!} k1, k2, n:byte;
Тут наоборот стоит лишня запятая после переменной k
Код:
var i, c, k,, n1, n2:byte;
Что такое Ens?

Цитата:
if b[i]<0 then k:=k+1
else begin
ens;
ens;
ens;

Mass:=k;
End;
А точку он просит возможно из-за того, что у вас количество завершающих слов END больше, чем слов Begin

Вот смотрите:

Цитата:
BEGIN {раз}
clrscr;
c:=0;
r:=0;
for i:=1 to 2 do
begin {Два}
write ('Введите размер массива n=');
readln (n);
if r=0 then k1:=Mass(n)
else k2:=Mass(n);
end; {раз}
r:=r+1;
c:=c+1;
end; {Два!!!}
Это у вас начало программы. А красное жирное END соотвествует её завершению, а после завершающего слова END должна стоять точка, поэтому Паскаль её и просит. Этот END скомпнсировал зелёный BEGIN, поэтмоу паскаль считает, что Красный END - конец программы
1. Проверьте код на синтаксическую правильность.
2. Уберите то красное слово, которое я пометил.

Последний раз редактировалось Вадим Мошев; 21.02.2011 в 23:21.
Вадим Мошев вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, Борланд Паскаль-в чем разница??? Vremya-Dengy Паскаль, Turbo Pascal, PascalABC.NET 13 31.05.2011 18:23
паскаль lili.lili Помощь студентам 7 16.05.2010 21:25