2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Проверьте на наличие ошибок (Pascal ABC)
Сообщение24.04.2012, 05:17 
Используется синтаксис Pascal
Уважаемые формучане,проверьте программу на  наличие ошибок и т.д .(pascal ABC)

Условие задания:Элементы массива циклически сдвинуть на k позиций влево.
Код:
  program dsdsds;
var
   a:array[1..100] of integer;
   i,r,n,k,j:integer;
begin
read(n,k);
for i:=1 to n do
  read(a[i]);
for i:=1 to k do
  begin
   for j:=1 to n do
    if (j=1) then r:=a[j] else a[j-1]:=a[j];
   a[n]:=r;
  end;
for i:=1 to n do
  write(a[i],' ');
readln
end.

 
 
 
 Re: Проверьте на наличие ошибок (Pascal ABC)
Сообщение24.04.2012, 06:08 
Аватара пользователя
Battleman в сообщении #563269 писал(а):
Код:
for i:=1 to k do 
  begin 
     for j:=1 to n do 
       if (j=1) then r:=a[j] else a[j-1]:=a[j]; 
     a[n]:=r; 
  end;

Проверка if (j=1) - не ошибка (программа будет работать), а ненужное усложнение.
Код:
for i:=1 to k do 
  begin 
     r:=a[1];
     for j:=2 to n do 
       a[j-1]:=a[j]; 
     a[n]:=r; 
  end;

 
 
 
 Re: Проверьте на наличие ошибок (Pascal ABC)
Сообщение24.04.2012, 10:15 
Аватара пользователя
Ошибок я хоть и не заметил, но недочеты нашел. На один указал выше.
Далее, чтобы корректно ввести данные (не перепутать n и k,
не превысить размерность массива, не напутать в типах данных и т.д.),
пользователь должен знать Паскаль и держать перед глазами текст программы.
:-)

 
 
 
 Re: Проверьте на наличие ошибок (Pascal ABC)
Сообщение24.04.2012, 12:04 
И подумать об оптимизации - чтобы каждый элемент масива "перемещался" не более 1 раза. Но наверное это не требуется.

 
 
 
 Re: Проверьте на наличие ошибок (Pascal ABC)
Сообщение24.04.2012, 15:55 
А зачем проверять на ошибки? Запустил программу и смотри результат, правильный или нет.

 
 
 
 Re: Проверьте на наличие ошибок (Pascal ABC)
Сообщение24.04.2012, 21:46 
Аватара пользователя
Alexu007 в сообщении #563423 писал(а):
А зачем проверять на ошибки? Запустил программу и смотри результат, правильный или нет.

А зачем писать программы, если знаешь правильный результат?
:wink:

 
 
 
 Re: Проверьте на наличие ошибок (Pascal ABC)
Сообщение25.04.2012, 15:24 
miflin
А это у Alexu007 такой стиль разработки: написать абы что; запустить; проверить, делает ли это абы что то, что нужно. Если делает — идем дальше, если нет — только тогда начинаем разбираться, что же именно мы написали.

 
 
 
 Re: Проверьте на наличие ошибок (Pascal ABC)
Сообщение03.05.2012, 13:06 
miflin в сообщении #563319 писал(а):
пользователь должен знать Паскаль и держать перед глазами текст программы.
:-)

Что бы зря не проверять корректность, лучше циклы
Код:
for i:=1 to k do
  begin
   for j:=1 to n do
    if (j=1) then r:=a[j] else a[j-1]:=a[j];
   a[n]:=r;
  end;
закоментировать.
Код:
read(a[i]);
переписать
Код:
read(a[(i+k) mod n]);
.
На остальные ошибки, как то $n>100$ и прочая,прочая ТС наступит самостоятельно. :wink:

 
 
 [ Сообщений: 8 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group