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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2011, 20:46   #1
Student1
Новичок
Джуниор
 
Регистрация: 03.01.2011
Сообщений: 5
По умолчанию Pascal. Программа по обработке массивов данных. При запуске возникают ошибки.

Pascal. Программа по обработке массивов данных. При запуске возникают ошибки. Помогите исправить.

Код программы:

Код:
Program Lab4;
Uses crt;
Type
Mas=array [1..5,1..5] of integer;
Var
i,j,buf,k,NA,NB:integer;
A,B,C:Mas;
begin
clrscr;
k:=0;
for i:=1 to 5 do
for j:=1 to 5 do readln(A[i,j]); {Ввод массива A}
for i:=1 to 5 do
for j:=1 to 5 do B[i,j]:=i*cos(i+j); {Формирование массива B}
for i:=1 to 5 do
for j:=1 to 5 do if A[i,j]>2.5 then NA:=NA+1;
for i:=1 to 5 do
for j:=1 to 5 do if B[i,j]>2.5 then NB:=NB+1;
if NA>NB then
begin
for i:=1 to 5 do
for j:=1 to 5 do C[i,j]:=A[i,j];
for j:=1 to 5 do
begin
for i:=1 to 5 do
begin
buf:=C[i,j];
C[i,j]:=C[i+1,j];
C[i+1,j]:=buf;
i:=i+1;
end;
end
else begin
for i:=1 to 5 do
for j:=1 to 5 do C[i,j]:=B[i,j];
for j:=1 to 5 do
begin
for i:=1 to 5 do
begin
buf:=C[i,j];
C[i,j]:=C[i+1,j];
C[i+1,j]:=buf;
i:=i+1;
end;
end;
end;
end;
for i:=1 to 5 do
for j:=1 to 5 do writeln(B[i,j]); {Вывод B}
writeln(NA);
writeln(NB);
for i:=1 to 5 do
for j:=1 to 5 do writeln(C[i,j]); {Вывод C}
Readkey
end.

Ошибки:
Error: Incompatible types:got "Extended" expected "SmallInt" (14,32)
for j:=1 to 5 do B[i,j]:=i*cos(i+j); {Формирование массива B}

Error: Illegal assignment to for-loop variable "i" (30,24) 
i:=i+1;

Fatal: syntax error, ";" expected but "ELSE" found (33,17)
else begin
Student1 вне форума Ответить с цитированием
Старый 04.01.2011, 21:06   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Какбе все логично компилятор говорит )
1) результат функции cos вещественный, а у тебя массив из переменных какого типа?
2) внутри for переменной-счетчику нельзя присваивать значение. Да и зачем, она же и так увеличится. просто удали эту строчку
3) пропущен один end в этом месте, их должно быть 3 (два для циклов и один для if)

p.s. и еще есть ошибки, которые обнаружатся в рантайме. в тех местах, где идет обращение к массивам по индексу [i+1] цикл должен быть до четырех, а не до пяти (иначе на пятой итерации он обратится к шестому элементу, и будет беда
Son Of Pain вне форума Ответить с цитированием
Старый 04.01.2011, 21:41   #3
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

Код:
Program Lab4;
Uses crt;
Type
Mas=array [1..5,1..5] of real;
Var
i,j:integer;
buf,NA,NB:real;
A,B,C:Mas;
begin
clrscr;
for i:=1 to 5 do
for j:=1 to 5 do readln(A[i,j]); {Ввод массива A}
for i:=1 to 5 do
for j:=1 to 5 do B[i,j]:=i*cos(i+j); {Формирование массива B}
for i:=1 to 5 do
for j:=1 to 5 do if A[i,j]>2.5 then NA:=NA+1;
for i:=1 to 5 do
for j:=1 to 5 do if B[i,j]>2.5 then NB:=NB+1;
if NA>NB then
begin
for i:=1 to 5 do
for j:=1 to 5 do C[i,j]:=A[i,j];
for j:=1 to 5 do
begin
for i:=1 to 4 do
begin
buf:=C[i,j];
C[i,j]:=C[i+1,j];
C[i+1,j]:=buf;
end;
end;
end
else begin
for i:=1 to 5 do
for j:=1 to 5 do C[i,j]:=B[i,j];
for j:=1 to 5 do
begin
for i:=1 to 4 do
begin
buf:=C[i,j];
C[i,j]:=C[i+1,j];
C[i+1,j]:=buf;
end;
end;
end;
for i:=1 to 5 do
for j:=1 to 5 do writeln(B[i,j]); {Вывод B}
writeln(NA);
writeln(NB);
for i:=1 to 5 do
for j:=1 to 5 do writeln(C[i,j]); {Вывод C}
Readkey
end.

Последний раз редактировалось unbanned; 04.01.2011 в 21:47.
unbanned вне форума Ответить с цитированием
Старый 04.01.2011, 21:56   #4
Student1
Новичок
Джуниор
 
Регистрация: 03.01.2011
Сообщений: 5
По умолчанию

Спасибо!!!
Student1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сигнал ошибки при запуске компьютера Манжосов Денис :) Компьютерное железо 19 08.08.2011 07:50
Поток. Не получается создать поток. Выдает ошибки при запуске bigory Общие вопросы по Java, Java SE, Kotlin 3 23.09.2010 00:40
При работе с TreeView возникают ошибки. TimRus Microsoft Office Access 2 08.06.2010 23:25
почему в MS Visual 2008 С++ возникают ошибки, хотя в С++ 6 таких проблем небыло atlon Visual C++ 22 03.03.2009 11:10
программа при 1 запуске копировалась в автозапуск? LuMax Общие вопросы Delphi 3 25.11.2007 00:38