Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2009, 15:15   #1
BIS88
Пользователь
 
Регистрация: 01.11.2008
Сообщений: 15
По умолчанию проблемы с циклом for.. to..do

У меня проблема, помогите, это очень срочно. Препод гонит, аж побить его охото. Есть задание:
Сколько раз будет выполняться тело следующего оператора цикла?
k:=0;
for i:=1 to k+3 do k:=k+1;
Вот. Как здравомыслящий человек с увереностью заявляю что тело цикла будет выполняться 3 раза. приношу ответ к преподу, а он говорит что это не правильно. Думаю ладно ошибся, пишу прогу в делфи, вывожу i, она выводиться 3 раза. опять несу преподу, а он опять говорит что не правильно. Люди помогите!!!! либо я уже совсем ни че не понимаю, либо препод от старости уже гонит. ПОМОГИТЕ! Сколько раз выполниться тело цикла????? Это очень срочно! на следующей неделе экзамен, надо эту контрольную сдать. Еще рах ПОМОГИТЕ! Заранее СПАСИБО.
BIS88 вне форума Ответить с цитированием
Старый 09.01.2009, 15:48   #2
paloit
Пользователь
 
Регистрация: 05.01.2009
Сообщений: 24
По умолчанию

Код:
var
i,k: integer;
begin
k:=0;
 for i:=1 to k+3 do
   k:= k+1;

 writeln(i);
 writeln(k);
 readln;
end.
и пишет на экране:
4
3
так что мой вывод - 4.
paloit вне форума Ответить с цитированием
Старый 09.01.2009, 15:52   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Поделюсь своими мыслями:

Запустил это:
Код:
uses crt;
var k,i,iter : longint;
begin
clrscr;
k:=0;
iter := 0;
for i:=1 to k+3 do
  begin
  k:=k+1;
  inc(iter);
  end;
writeln(iter);
readln;
end.
Выводит 3.

Затем переписал на C++:
Код:
#include <iostream>
#include <conio.h>
using namespace std;

int main(){
int k=0;
int i;
for(i=1;i<=k+3;i++)
 { k += 1;
   if(i>=100) break;  // защита от зацикливания
 }
cout << i << endl;

getch();
return 0;
}
Выводит 100.
Можно сделать вывод:
похоже, что в паскалной версии конечное значение i (k+3) подсчитывается только один раз и не учитывется дальнейшее изменение k.

Теоретически этот цикл должен быть бесконечным, но со своими оговорками.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 09.01.2009, 15:58   #4
paloit
Пользователь
 
Регистрация: 05.01.2009
Сообщений: 24
По умолчанию

да, я сначала тоже думал - бесконечно... но проверил и вывод 4...
странно как-то.
на паскале - 4 раза. А на С - бесконечно Опять видна сила С...

Последний раз редактировалось paloit; 09.01.2009 в 16:01.
paloit вне форума Ответить с цитированием
Старый 09.01.2009, 16:01   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

paloit
Цитата:
да, я сначала тоже думал - бесконечно... но проверил и вывод 4...
Это более, чем странно, т.к. у меня Ваш код выводит
Код:
3
3
=)))
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 09.01.2009, 16:05   #6
paloit
Пользователь
 
Регистрация: 05.01.2009
Сообщений: 24
По умолчанию

проверял в делфи в консоле. Короче я не фига не понял
Код:
4
3
мне так выводит
paloit вне форума Ответить с цитированием
Старый 09.01.2009, 16:06   #7
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Цитата:
Сообщение от paloit Посмотреть сообщение
так что мой вывод - 4.
Ваш код выводит 3
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 09.01.2009, 16:18   #8
Disel
Форумчанин
 
Аватар для Disel
 
Регистрация: 08.01.2009
Сообщений: 180
По умолчанию

Сколько раз будет выполняться тело следующего оператора цикла?
k:=0;
for i:=1 to k+3 do k:=k+1; --------> это конкретное условие? В таких примерах, на сколько я знаю, надо брать одну переменую " k ", т.е. for k:=1 to k+3 do. В этом случае цикл будет безконечный.
"Все что натыкано на клаве, ведет тебя к погибели иль славе"
Если помог нажми на весы
Disel вне форума Ответить с цитированием
Старый 09.01.2009, 16:22   #9
paloit
Пользователь
 
Регистрация: 05.01.2009
Сообщений: 24
По умолчанию хм...

может я и ошибаюсь. Прикрепляю проект. Д2007 - консоль.
Проверяйте.
i - это 4. k - это 3.
проверьте сам exe сначала
Вложения
Тип файла: rar ужас цикла for.rar (24.1 Кб, 7 просмотров)

Последний раз редактировалось paloit; 09.01.2009 в 16:29.
paloit вне форума Ответить с цитированием
Старый 09.01.2009, 16:32   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

paloit При компиляции выдает Warning:
"FOR-loop variable 'i' may be undefined after loop"
Думаю, причину нужно искать здесь )
Кстати, если код немного изменить:
Код:
program Project3;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
i,k,l: integer;
begin
k:=0;
l:=0;
 for i:=1 to k+3 do
  begin
   k:= k+1;
   l := i;
   end;

 writeln(l);
 writeln(k);
 readln;
end.
..то выводит правильно:
3
3
)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с циклом for в c++ Many man Помощь студентам 5 14.12.2008 12:01
Проблема с циклом.. POPOV Помощь студентам 3 29.04.2008 18:36
Помогите с циклом Almost_Famous Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 27.03.2008 21:08
Задача с циклом POPOV Общие вопросы Delphi 13 01.02.2008 20:33
Проблемы с циклом, условием Иринкаа Помощь студентам 13 19.11.2007 23:33