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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 19:36   #1
eduard93
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 300
Смущение паскаль,массивы, исправим ошибки?

ну что ж народ, одна голова хорошо а форум лучше. Помогите исправить ошибки и не доработки, задача такова: Перестановка I-го и j-го по порядку элементов массива при условии, что они с разными знаками, все элементы между ними обнулить, длина массива и номера переставляемых элементов вводятся с клавиатуры, тип-целые.

вот мои раздумья, но работать оно не хочет, подскажите пожалуйста, за ранее спасибо.


PROGRAM Simbol_array;
{программа
Лабораторной работы}
Procedure Arr;
VAR
C,col,temp,n :integer;
i,j :integer;
A :array[1..10] of integer;
fout :text;
Begin
n:=0;
writeln ('введите данные массива, не более 10 элементов,');
repeat
writeln ('введите очередной символ');
n:=n+1;
readln(A[n]);
begin
assign(fout,'LAB4.RES');
Rewrite (fout);
writeln(fout,'исходный массив из',n,'элементов');
for C:=1 to n do
begin
write (fout,A[C]:2);
if C mod 6 =0 then writeln (fout);
end;

begin
Write('i = ');
Readln(i);
Write('j = ');
Readln(j);
if A[i]>0;
if A[j]<0;
if A[i]<0;
if A[j]>0;
then
begin
temp:= A[i];
A[i]:= A[j+1];
A[j+1]:= temp;
end;

for col:= i+1 to col-1 do
A[col]:= 0;
Readln;


writeln(fout,'a');
end;

end;
close(fout);
end.
eduard93 вне форума Ответить с цитированием
Старый 18.12.2011, 20:24   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Код:
PROGRAM Simbol_array;
 {программа 
 Лабораторной работы}
//Procedure Arr;
 VAR
   C,col,temp,n :integer;
   i,j :integer;
   A :array[1..10] of integer;
   fout :text;
 Begin
   n:=0;
   writeln ('введите данные массива, не более 10 элементов,');
   repeat
     writeln ('введите очередной символ');
     n:=n+1;
     readln(A[n]);
   until a[n]=0;                     //until'а тоже небыло, поставил наугад
       assign(fout,'LAB4.RES');          // *.RES ?
       Rewrite (fout);
       writeln(fout,'исходный массив из',n,'элементов');
       for C:=1 to n do
         begin
           write (fout,A[C]:2);
           if C mod 6 =0 then writeln (fout);      // ???
         end;


   Write('i = ');
   Readln(i);
   Write('j = ');
   Readln(j);
 if ((A[i]>0) and (A[j]<0)) or ((A[i]<0) and (A[j]>0)) then
   begin
     temp:= A[i];
     A[i]:= A[j];                 //зачем тут было j+1 ?
     A[j]:= temp;
   end;

 if i>j then
  begin
    i:=temp;
    i:=j;
    j:=temp;
  end;


 for col:= i+1 to j-1 do          //  for col:= i+1 to col-1 do   так нельзя
   A[col]:= 0;

 for i:=1 to 10 do write(a[i],' ');             //какбы показываю, что программа работает.

 writeln(fout,'a');               //  просто "а"  ?  ???
 close(fout);
 readln;
 end.
Замечания:
1) Научитесь пользоваться тегом [CODE]
2) Пишите задание полностью. Я так и не догнал, зачем нужен LAB4.RES, и зачем в конце в него писать "а"
3) ЗАЧЕМ столько бегинов? Уже не в первой задаче вижу, неужели где-то так учат?
4) Четыре if'а подряд без условий - эпик фэйл.
5) В вашем коде только процедура, но, тем не мение, был "end.", что не логично

И вообще, пока правил, у меня было такое лицо:


Update: перечитал ваш код. Ну, по крайней мере откуда взялась одна лишняя пара begin-end понял, видимо это и было тело программы. В таком случае вы еще, помимо всего прочего, забыли передать в процедуру входные параметры и воспользоваться этой сАмой процедурой в самОй программе.
Все тривиальное просто

Последний раз редактировалось whatever; 18.12.2011 в 20:39.
whatever вне форума Ответить с цитированием
Старый 18.12.2011, 20:39   #3
eduard93
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 300
По умолчанию

благодарю за помощь, изеняюсь за ошибки в правилах форума а так же за не лепые ошибки в программе, но я ее соображал точно с таким же лицом два дня подряд от того мозги и рожа набекрень, а я не этил дел мастер, выражаю огромные благодарности
eduard93 вне форума Ответить с цитированием
Старый 18.12.2011, 20:41   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
 if ((A[i]>0) and (A[j]<0)) or ((A[i]<0) and (A[j]>0)) then
замените на
Код:
if (a[i]*a[j] <0) then
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль.Массивы. Jimmy_93 Помощь студентам 4 16.05.2011 20:14
Задача на массивы. Полностью написана, только есть некоторые ошибки... Liebe Помощь студентам 0 19.01.2011 18:57
Массивы и указатели. Поиск ошибки. smartt Помощь студентам 1 17.01.2011 23:54
Исправить ошибки в 2-х программах на сортировку массивов и написать 2 программы с нуля (паскаль) ArsGo Фриланс 3 14.10.2010 09:39
Пожалуйста, помогите разобраться, в чём ошибки.(Рекурсии. Паскаль) katris Помощь студентам 3 21.12.2009 12:28