Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
43 / 38 / 5
Регистрация: 24.07.2018
Сообщений: 214
Записей в блоге: 6
1

Убрать оператор goto

24.07.2018, 20:14. Показов 847. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, пожалуйста, как переписать данный код без использования оператора goto:
Delphi
1
2
3
4
5
6
7
for i:=0 to N-1 do
begin
if spis[i]=elvalue then goto 1;
end;
spis[N]:=elvalue;
inc(N);
1: ;
То есть, если элемента в массиве нет, то он добавляется в него и счетчик элементов увеличивается.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2018, 20:14
Ответы с готовыми решениями:

GoTo
День добрый, возникли проблемы при использовании goto, необходимо повторить цикл n раз с условием....

Неожиданное GoTo
Ребят помогите переделать код в номральный вид без GoTo. Я им не разу не пользовался так же как и...

оператор GoTo
Ввести с клавиатуры произвольное целое число X в диапазоне от 80 до 500. Если введенное число X не...

Оператор GOTO
GOTO в топку. В нормальных языках нужны только циклы, а GOTO пусть останется только для *.bat, и...

9
5706 / 2297 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
24.07.2018, 20:30 2
Delphi
1
2
3
4
5
6
7
8
9
for i:=0 to N-1 do
begin
  if spis[i]<>elvalue then 
    begin
      spis[N]:=elvalue;
      inc(N);
      Break;
    end;
end;
Добавлено через 1 минуту
Цитата Сообщение от Newby52 Посмотреть сообщение
То есть, если элемента в массиве нет, то он добавляется в него и счетчик элементов увеличивается.
ты же уже сам условие написал как должно быть, почему не применил на коде?)))
1
43 / 38 / 5
Регистрация: 24.07.2018
Сообщений: 214
Записей в блоге: 6
24.07.2018, 20:36  [ТС] 3
Насколько я понимаю, Ваш код не совсем верно выполняет данную задачу.
Допустим, массив
spis=(1,2,3,4)
elvalue=3
В Вашем коде на первом же несравнении (1 и 3) он выйдет и запишет значение 3 в 4-ый (с нуля элемент). Но 3 уже есть в во 2-ом (с нуля) элементе.

Задача записать новый элемент только если его нет ни в одном элементе массива.
0
5706 / 2297 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
24.07.2018, 20:40 4
идти циклом и проверять, как только проверка свершилась, ставить скажем переменную true/false, далее после цикла проверить переменную на true/false и оттуда уже делать добавление или не добавление. перед входом в цикл инициализировать данную переменную, если в цикле что-то свершилось будет скажем true ветвить прогу по true, иначе будет false к примеру, ветвить по другому логику
0
Почетный модератор
64305 / 47600 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
24.07.2018, 20:41 5
Delphi
1
2
3
4
5
6
7
i:=0;
while (i<n)and(spis[i]<>elvalue) do inc(i);
if i=n then
 begin
  inc(n);
  spis[n-1]:=elvalue;
 end;
1
43 / 38 / 5
Регистрация: 24.07.2018
Сообщений: 214
Записей в блоге: 6
24.07.2018, 20:47  [ТС] 6
Спасибо.
0
northener
25.07.2018, 02:22
  #7

Не по теме:

Arcor,цикл for имеет заранее фиксированное количество итераций. Нельзя в нем менять границы цикла. Паскаль и Дельфи ругаются при таких манипуляциих. :)

0
5706 / 2297 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
25.07.2018, 09:17 8
northener, мммм где эту ругань можно увидеть???? Или у меня снова дельфи не такая??
Миниатюры
Убрать оператор goto  
0
5874 / 4595 / 1452
Регистрация: 14.04.2014
Сообщений: 20,386
Записей в блоге: 20
25.07.2018, 09:27 9
вы вообще о чем тут?
переменную цикла for менять в теле цикла запрещено
значение переменной цикла for после цикла не определено
переменная цикла for должна быть локальной переменной

вот собсно все правила, которые просто нужно выполнять
0
5706 / 2297 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
25.07.2018, 12:00 10
Цитата Сообщение от krapotkin Посмотреть сообщение
вы вообще о чем тут?
переменную цикла for менять в теле цикла запрещено
значение переменной цикла for после цикла не определено
переменная цикла for должна быть локальной переменной
вот собсно все правила, которые просто нужно выполнять
northener, наверняка знает все это))) только решил снова свредничать
0
25.07.2018, 12:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.07.2018, 12:00
Помогаю со студенческими работами здесь

Оператор goto
Здравствуйте. Я в лабораторной работе проверяю введенные данные на различные ошибки. Я это все...

Оператор GOTO
Дано 50 вещественных чисел. Определить наибольшую величину из них. С помощью оператора GOTO

Оператор goto
Как передать управление из одного класса в другой c помощью goto(или как то по другому)?

Оператор GOTO: за и против
Люди, по ходу, газет не читают: Оператор GOTO в языках высокого уровня является объектом критики,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru