Есть тут Паскалеведы?

[ Версия для печати ]
Добавить в Telegram Добавить в Twitter Добавить в Вконтакте Добавить в Одноклассники
  [ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]
скверняга
14.07.2016 - 13:06
Статус: Offline


Весельчак

Регистрация: 18.11.15
Сообщений: 172
7
Всем привет. Столкнулась тут с задачей. Вроде простая, но кажется сложной из-за того, что такая простая. Может подскажет кто, кто Паскаль любит так же, как я))
кусок кода:
...
a:=0;
for i:=31 to 1 do
a:=i+1;
write(a);
...
таки получается два? зачем тогда сложности такие с 31? или я не понимаю чего.. ведь а не увеличивается каждый раз, а лишь затирается новым значением и в итоге, когда i:=1, тогда a:=1+1 и это два. Нафига тогда такой замут? upset.gif

ЗЫ. Лучи добра откликнувшимся)
 
[^]
Yap
[x]



Продам слона

Регистрация: 10.12.04
Сообщений: 1488
 
[^]
азбука
14.07.2016 - 13:07
0
Статус: Offline


Весельчак

Регистрация: 17.09.10
Сообщений: 194
завязывай...наркотики до добра не доведут!!!
 
[^]
FedFed
14.07.2016 - 13:07
7
Статус: Offline


Домосед

Регистрация: 13.01.11
Сообщений: 14863
не to а downto - это жи обратный цикл. а так он у тебя один раз выполняется вот и получается 2

Это сообщение отредактировал FedFed - 14.07.2016 - 13:37
 
[^]
PeleMeShOk
14.07.2016 - 13:09
0
Статус: Offline


Юморист

Регистрация: 5.05.11
Сообщений: 412
а:=2, а сложности что-бы ты понял что такой цикл, видимо так....
 
[^]
скверняга
14.07.2016 - 13:10
0
Статус: Offline


Весельчак

Регистрация: 18.11.15
Сообщений: 172
Цитата (FedFed @ 14.07.2016 - 13:07)
не to а downto - обратный цикл. а так он у тебя один раз выполняется вот и получается 2

почему один? он выполняется 30 раз, но число постоянно затирается.
 
[^]
FedFed
14.07.2016 - 13:10
0
Статус: Offline


Домосед

Регистрация: 13.01.11
Сообщений: 14863
Цитата (скверняга @ 14.07.2016 - 13:10)
Цитата (FedFed @ 14.07.2016 - 13:07)
не to а downto - обратный цикл.  а так он у тебя один раз выполняется вот и получается 2

почему один? он выполняется 30 раз, но число постоянно затирается.

хм... тогда я вообще не понял смысла...
 
[^]
crazycool
14.07.2016 - 13:11
0
Статус: Offline


Юморист

Регистрация: 20.02.13
Сообщений: 481
Не так надо. Вот
Код
a:=0;
for i:=31 downto 1 do
a:=i+1;
write(a);

Или после каждого сложения нужно выводить значение?

Это сообщение отредактировал crazycool - 14.07.2016 - 13:13
 
[^]
zhivaz
14.07.2016 - 13:17
1
Статус: Offline


Архимандардрид Секты Нессущих в Херню

Регистрация: 15.04.13
Сообщений: 1581
это из тестов чтоль каких нибудь? если так, просто код на внимательность. нас так на УПК на зачетах драконили в 90х
 
[^]
скверняга
14.07.2016 - 13:17
1
Статус: Offline


Весельчак

Регистрация: 18.11.15
Сообщений: 172
Цитата (crazycool @ 14.07.2016 - 13:11)
Не так надо. Вот
Код
a:=0;
for i:=31 downto 1 do
a:=i+1;
write(a);

Или после каждого сложения нужно выводить значение?

если бы после каждого, то было бы вот так:
Код
begin
a:=0;
for i:=31 to 1 do
    begin
    a:=i+1;
    write(a);
    end;
end.


Это сообщение отредактировал скверняга - 14.07.2016 - 13:17
 
[^]
скверняга
14.07.2016 - 13:18
0
Статус: Offline


Весельчак

Регистрация: 18.11.15
Сообщений: 172
Цитата (zhivaz @ 14.07.2016 - 13:17)
это из тестов чтоль каких нибудь? если так, просто код на внимательность. нас так на УПК на зачетах драконили в 90х

из тестов. репетирую тут студента для вступительных внутривузовских.. нашли вот задание) я не поняла смысла. либо на внимательность просто
 
[^]
crazycool
14.07.2016 - 13:20
1
Статус: Offline


Юморист

Регистрация: 20.02.13
Сообщений: 481
Цитата (скверняга @ 14.07.2016 - 17:17)
Цитата (crazycool @ 14.07.2016 - 13:11)
Не так надо. Вот
Код
a:=0;
for i:=31 downto 1 do
a:=i+1;
write(a);

Или после каждого сложения нужно выводить значение?

если бы после каждого, то было бы вот так:
Код
begin
a:=0;
for i:=31 to 1 do
    begin
    a:=i+1;
    write(a);
    end;
end.

Если после каждого, то этот код - вообще бред. Надо так
Код
for i := 32 downto 2 do writeln(i);

И все.
 
[^]
скверняга
14.07.2016 - 13:21
0
Статус: Offline


Весельчак

Регистрация: 18.11.15
Сообщений: 172
Цитата (crazycool @ 14.07.2016 - 13:20)
Цитата (скверняга @ 14.07.2016 - 17:17)
Цитата (crazycool @ 14.07.2016 - 13:11)
Не так надо. Вот
Код
a:=0;
for i:=31 downto 1 do
a:=i+1;
write(a);

Или после каждого сложения нужно выводить значение?

если бы после каждого, то было бы вот так:
Код
begin
a:=0;
for i:=31 to 1 do
    begin
    a:=i+1;
    write(a);
    end;
end.

Если после каждого, то этот код - вообще бред. Надо так
Код
for i := 32 downto 2 do writeln(i);

И все.

да то понятно, как надо. просто задание не в этом. вопрос, какое а будет? какое число в итоге выведется на экран, а не как правильно надо было)
 
[^]
crazycool
14.07.2016 - 13:23
0
Статус: Offline


Юморист

Регистрация: 20.02.13
Сообщений: 481
Цитата
да то понятно, как надо. просто задание не в этом. вопрос, какое а будет? какое число в итоге выведется на экран, а не как правильно надо было)

Ну в таком случае выполнится 1 раз и выведется 32.
А подвох, похоже, в том, что написано do вместо downto. Хрен его знает, Паскаль давно подзабыл.

Это сообщение отредактировал crazycool - 14.07.2016 - 13:24
 
[^]
FedFed
14.07.2016 - 13:24
0
Статус: Offline


Домосед

Регистрация: 13.01.11
Сообщений: 14863
Цитата (скверняга @ 14.07.2016 - 13:21)
Цитата (crazycool @ 14.07.2016 - 13:20)
Цитата (скверняга @ 14.07.2016 - 17:17)
Цитата (crazycool @ 14.07.2016 - 13:11)
Не так надо. Вот
Код
a:=0;
for i:=31 downto 1 do
a:=i+1;
write(a);

Или после каждого сложения нужно выводить значение?

если бы после каждого, то было бы вот так:
Код
begin
a:=0;
for i:=31 to 1 do
    begin
    a:=i+1;
    write(a);
    end;
end.

Если после каждого, то этот код - вообще бред. Надо так
Код
for i := 32 downto 2 do writeln(i);

И все.

да то понятно, как надо. просто задание не в этом. вопрос, какое а будет? какое число в итоге выведется на экран, а не как правильно надо было)

в моем паскале наверное будет 32. не помню сейчас точно выполнится ли хоть раз тело цикла при такой записи. а на чем вы пишете?

Это сообщение отредактировал FedFed - 14.07.2016 - 13:24
 
[^]
lexshadow
14.07.2016 - 13:24
0
Статус: Offline


Ярила

Регистрация: 17.11.10
Сообщений: 1403
это такая оптимизация....а то процессоры стали сильно мощными программы работают так быстро шо результат посмотреть не успеваем...ну вот программеры и утилизируют процессорное время как могут. Так то паскаль - приходится самому изъебываться для этого, толи дело современные компиляторы и современные "языки программирования высокого уровня" - там сия незатейлевая задача выполняется без участия программиста, освобождая его тем самым от лишних трудозатрат old.gif
 
[^]
скверняга
14.07.2016 - 13:24
0
Статус: Offline


Весельчак

Регистрация: 18.11.15
Сообщений: 172
Цитата (crazycool @ 14.07.2016 - 13:23)
Цитата
да то понятно, как надо. просто задание не в этом. вопрос, какое а будет? какое число в итоге выведется на экран, а не как правильно надо было)

Ну в таком случае выполнится 1 раз и выведется 32.

почему?
 
[^]
FedFed
14.07.2016 - 13:25
0
Статус: Offline


Домосед

Регистрация: 13.01.11
Сообщений: 14863
Цитата (скверняга @ 14.07.2016 - 13:24)
Цитата (crazycool @ 14.07.2016 - 13:23)
Цитата
да то понятно, как надо. просто задание не в этом. вопрос, какое а будет? какое число в итоге выведется на экран, а не как правильно надо было)

Ну в таком случае выполнится 1 раз и выведется 32.

почему?

потому что должно быть downto чтобы приращение цикла было не +1 а -1

Это сообщение отредактировал FedFed - 14.07.2016 - 13:26
 
[^]
crazycool
14.07.2016 - 13:25
0
Статус: Offline


Юморист

Регистрация: 20.02.13
Сообщений: 481
Цитата (скверняга @ 14.07.2016 - 17:24)
Цитата (crazycool @ 14.07.2016 - 13:23)
Цитата
да то понятно, как надо. просто задание не в этом. вопрос, какое а будет? какое число в итоге выведется на экран, а не как правильно надо было)

Ну в таком случае выполнится 1 раз и выведется 32.

почему?

Выполняется тело цикла 1 раз.
Проверяется условие цикла. Оно не выполнено. Неверно сформулировал
И на этом все.
Короче, тут дело в том, что стоит to вместо downto.

Это сообщение отредактировал crazycool - 14.07.2016 - 13:27
 
[^]
скверняга
14.07.2016 - 13:26
0
Статус: Offline


Весельчак

Регистрация: 18.11.15
Сообщений: 172
Цитата (FedFed @ 14.07.2016 - 13:25)
Цитата (скверняга @ 14.07.2016 - 13:24)
Цитата (crazycool @ 14.07.2016 - 13:23)
Цитата
да то понятно, как надо. просто задание не в этом. вопрос, какое а будет? какое число в итоге выведется на экран, а не как правильно надо было)

Ну в таком случае выполнится 1 раз и выведется 32.

почему?

потому что должно быть downto чтобы приращение цикла было на +1 а -1

т.е. в цикл он не войдет? и ошибки не будет? просто выдаст 32?

жаль, что сейчас паскаль не под рукой
 
[^]
mikedd
14.07.2016 - 13:28
4
Статус: Offline


Балагур

Регистрация: 31.01.11
Сообщений: 922
Да вы гоните. Будет 0 так как цикл ни разу не выполнится (to вместо downto). Если исправить на downto то да, будет 2. Вот онлайн паскаль для проверки.

Это сообщение отредактировал mikedd - 14.07.2016 - 13:28
 
[^]
скверняга
14.07.2016 - 13:32
0
Статус: Offline


Весельчак

Регистрация: 18.11.15
Сообщений: 172
Цитата (mikedd @ 14.07.2016 - 13:28)
Да вы гоните. Будет 0 так как цикл ни разу не выполнится (to вместо downto). Если исправить на downto то да, будет 2. Вот онлайн паскаль для проверки.

полезная штука.. спасибо) rulez.gif
 
[^]
FedFed
14.07.2016 - 13:36
0
Статус: Offline


Домосед

Регистрация: 13.01.11
Сообщений: 14863
скверняга
если в цикл не войдет то будет 0. если выполнить тело один раз то будет 32. вот mikedd пишет что не войдет. спорить не буду, так как проверить не могу а на вскидку, уже 10 лет прошло, тупо - не помню.
 
[^]
Понравился пост? Еще больше интересного в Телеграм-канале ЯПлакалъ!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) Просмотры темы: 1377
0 Пользователей:
[ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]


 
 



Активные темы






Наверх