profile
[/banner_gorizont_adaptive]
Размещено 4 года назад по предмету Информатика от kompot007

Удалить все элементы, кратные 3 или 5
Помогите найти, где я ошибся, ибо сам не смог этого сделать!
program udalenie;
const
n=20;
Type
Tarray=array[1..n] of integer;
var i,s,j:integer;
a:Tarray;
begin
randomize;
for i:=1 to n do begin
a [i]:=random(100);
write(a[i]:3, ' ' );
end;
s:=0;
for i:=1 to n do
begin
if (a[i] mod 3=0) or (a[i] mod 5=0) then
begin
s:=s+1;
for j:=i to n-s do
a[i]:=a[i+1];
a[n+1-s]:=0;
end
end;
write('dsd');
for i:=1 to n-s do
write(a[i]:3, ' ' );
end.

  1. Ответ на вопрос
    Ответ на вопрос дан nelle987
    1) опечатка в строчке a[i]:=a[i+1]; - вместо i должно быть j
    2) косяк в алгоритме: после того, что нашелся нехороший элемент, все элементы правее этого сдвигаются на 1 влево. Но после этого тот элемент, который до сдвига был следующим - нигде не проверяется. Лечится это, например, добавлением дополнительного repeat ... until цикла, или заменой внешнего цикла for на какой-нибудь еще, позволяющий менять счетчик внутри цикла.
    1. Ответ на вопрос
      Ответ на вопрос дан kompot007
      Можно чуть-чуть поподробнее..
    2. Ответ на вопрос
      Ответ на вопрос дан nelle987
      по какому поводу*
    3. Ответ на вопрос
      Ответ на вопрос дан kompot007
      По поводу обоих вариантов исправления, насчет repeat .until и что дас изменеие внешнего цикла?
    4. Ответ на вопрос
      Ответ на вопрос дан nelle987
      if ... then begin ... end можно поменять на if ... then repeat ... until (a[i] mod 3 <> 0) and (a[i] mod 5 <> 0); но при этом заполнять пустые элементы не нулями, а, например -1.

      Изменение внешнего цикла даст возможность в случае, когда нашёлся нехороший элемент, не увеличивать переменную-счетчик.
    5. Ответ на вопрос
      Ответ на вопрос дан nelle987
      в первом способе еще надо следить за тем, чтобы не зациклиться на последнем элементе массива.
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.