Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> счетчик циклов 
V
    Опции темы
namra
Дата 28.9.2008, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 26.4.2007

Репутация: нет
Всего: нет



помогите вот такой код, у меня выводит sum=11, а надо sum=8 то есть предыдущий шаг значение при котором было меньше 10. Т.е. задание такое вывести приближенное значение к 10 и за какое кольчество шагов оно выполниться. Я так понимаю счетчик нужен. Не знаю как это реализовать.Помогите дельным советом.
var 
    sum, a,b:integer;
  begin
    a:=2;
    b:=3;
  while sum<10 do
     begin
         sum:=a+b;
         a:=sum;
     end;
   write('sum=',sum);
   readln;
end.   
   
PM MAIL   Вверх
Данкинг
Дата 28.9.2008, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



В работе не проверял. smile 
Цитата(namra @  28.9.2008,  23:09 Найти цитируемый пост)
var 
    sum, a,b,c:integer;
  begin
    a:=2;
    b:=3;
    c:=0;
  while sum<10 do
     begin
         sum:=a+b;
         a:=sum;
         if sum<=10 then c:=sum;
     end;
   write('sum=',c);
   readln;
end.   



Это сообщение отредактировал(а) Данкинг - 28.9.2008, 22:19


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
volvo877
Дата 28.9.2008, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 9
Всего: 116



Данкингsum неинициализирована, надеешься что обнулится компилятором? Даешь повод для потенциальной ошибки, тем более в разделе для новичков... Да и вообще я бы сделал тут цикл с постусловием...

Код

var
  sum, a, b, count: integer;
begin
  a := 2;
  b := 3;
  count := 0;

  repeat

    sum := a + b;
    a := sum;
    inc(count);

  until sum > (10 - b);

  writeln('sum=',sum);
  writeln('count = ', count);
  readln;
end.

PM MAIL   Вверх
Данкинг
Дата 28.9.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(volvo877 @  28.9.2008,  23:40 Найти цитируемый пост)
надеешься что обнулится компилятором? 

Ну, я же говорю, не проверял. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ne0n
Дата 28.9.2008, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



volvo877, дык вроде всегда создаваемая переменная инициализируеться нулем....
PM MAIL ICQ   Вверх
volvo877
Дата 29.9.2008, 00:36 (ссылка) |    (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 9
Всего: 116



ne0n, повторяю: раздел - для новичков. Если ты знаешь, что создаваемая переменная (кстати не всегда, а только тогда, когда она описана глобально) инициализируется нулем - это совсем не значит, что об этом знает человек, начавший учить язык. Следовательно,
1) начинается привыкание к работе с неинициализированными переменными;
2) при дальнейшем развитии этой же программы приведенный код становится процедурой/функцией, следовательно переменная уже нулем не инициализируется, и новичок сидит и думает, откуда взялся этот мусор, и почему подпрограмма уже не работает (ибо на Warning-и вначале внимание не обращается, компилируется без ошибок и ладно)

Кстати, ты уверен, что во всех версиях Дельфи глобальная переменная инициализируется нулем, и также будет в следующих версиях?

Понимаешь в чем дело... Я не дельфист, это не мой "рабочий инструмент", я пишу на Аде, соответственно, требование надежности и отсутствие любых ошибок (пусть даже и потенциальных) для меня всегда на первом месте... Специфика отрасли, понимаешь ли... Ну, если вам удобнее учить новичков "абы как" - дело ваше... Не буду мешать...
PM MAIL   Вверх
ne0n
Дата 29.9.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



volvo877,  полностью с тобой согласен, сам наступал на подобные грабли, когда начал программирвоать на с++, там вообще переменные не иницализируються)
PM MAIL ICQ   Вверх
namra
Дата 30.9.2008, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 26.4.2007

Репутация: нет
Всего: нет



volvo877 Спасибо помогло
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0830 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.