2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Проверьте на наличие ошибок (Pascal ABC)
Сообщение24.04.2012, 05:17 


24/04/12
5
Используется синтаксис 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 
Аватара пользователя


27/02/12
3894
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 
Аватара пользователя


27/02/12
3894
Ошибок я хоть и не заметил, но недочеты нашел. На один указал выше.
Далее, чтобы корректно ввести данные (не перепутать n и k,
не превысить размерность массива, не напутать в типах данных и т.д.),
пользователь должен знать Паскаль и держать перед глазами текст программы.
:-)

 Профиль  
                  
 
 Re: Проверьте на наличие ошибок (Pascal ABC)
Сообщение24.04.2012, 12:04 


26/08/11
2100
И подумать об оптимизации - чтобы каждый элемент масива "перемещался" не более 1 раза. Но наверное это не требуется.

 Профиль  
                  
 
 Re: Проверьте на наличие ошибок (Pascal ABC)
Сообщение24.04.2012, 15:55 


24/05/09

2054
А зачем проверять на ошибки? Запустил программу и смотри результат, правильный или нет.

 Профиль  
                  
 
 Re: Проверьте на наличие ошибок (Pascal ABC)
Сообщение24.04.2012, 21:46 
Аватара пользователя


27/02/12
3894
Alexu007 в сообщении #563423 писал(а):
А зачем проверять на ошибки? Запустил программу и смотри результат, правильный или нет.

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

 Профиль  
                  
 
 Re: Проверьте на наличие ошибок (Pascal ABC)
Сообщение25.04.2012, 15:24 
Заслуженный участник


09/09/10
3729
miflin
А это у Alexu007 такой стиль разработки: написать абы что; запустить; проверить, делает ли это абы что то, что нужно. Если делает — идем дальше, если нет — только тогда начинаем разбираться, что же именно мы написали.

 Профиль  
                  
 
 Re: Проверьте на наличие ошибок (Pascal ABC)
Сообщение03.05.2012, 13:06 


01/07/08
836
Киев
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 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group