Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> какая-то тупость 
:(
    Опции темы
Гость_newbie
Дата 31.10.2005, 23:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Привет всем! Только начал учить С++ как наткнулся на какую-то тупость. Есть постой код
Код

#include <stdio.h>
#include <iostream.h>
int main(int arg, char* pszArgs[])
{
int accumulator;
do
{
accumulator = 0;
for(;;)
{
int value = 0;
cout << "Введите очередное число"
cin >> value;
if (value < 0}
{
break;
}
accumulator = accumulator + value;
cout « "Общая сумма равна"
<< accumulator
<< "\ï";
} while (accumulator != 0);
 printf ("программа завершена");
return 0;

Всё понятно , но вот что пишет автор - " Чтобы завершить цикл надо ввести подряд 2 отрицательных числа" Но как можно их ввести если после первого цикл прекращается - не понимаю
  Вверх
Helicopterr
Дата 31.10.2005, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



При отрицательном value оператор break разрывает цикл for и передаёт управление accumulator = accumulator + value; Но так как accumulator != 0 истинно процедура продолжится.
Но интересно что цикл for(;;) { у тебя не закрывается ... как и ф-ция main.
И вообще синтаксис пугающий.

Это сообщение отредактировал(а) Helicopterr - 31.10.2005, 23:21


--------------------
people can fly
PM MAIL   Вверх
sergejzr
Дата 31.10.2005, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Модератор: Название темы должно отражать ее суть!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Guest
Дата 1.11.2005, 10:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
При отрицательном value оператор break разрывает цикл for и передаёт управление accumulator = accumulator + value; Но так как accumulator != 0 истинно процедура продолжится.

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

#include <stdio.h>
#include <iostream.h>
int main(int arg, char* pszArgs[])
{
int accumulator;
do
{
accumulator = 0;
for(;;)
{
int value = 0;
cout << "Введите очередное число"
cin >> value;
if (value < 0)
{
break;
}
accumulator = accumulator + value;
}
cout « "Общая сумма равна"
<< accumulator
<< "\n";
} while (accumulator != 0);
 cout << "программа завершена";
return 0;
}


  Вверх
maddoc
Дата 1.11.2005, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



проверил, все работает.
а что бы понять как просто используй отладчик


--------------------
"Безвыходных положений не бывает" (с) Камасутра
PM MAIL   Вверх
segmentation_fault
Дата 1.11.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А если лень использовать отладчик, то попробую обьяснить как работает программа.
for цикл прерывается оператором break, когда вводишь первое отрицательное число. контроль переходит в do-while цикл. do-while цикл завершается, если accumulator = 0, но на этот момент он будет положительным. Дальше, когда программа переходит к началу do-while цикла, accumulator обнуляется (в твоем коде 8-я строка)
Дальше, если вводится положительное число, for цикл начинается снова, но если ввести отрицательное, то цикл прерывается до того, как значение accumulator меняется, то есть accumulator остается 0. Теперь условие в do-while цикле выполняется, и цикл благополучно прерывается. Надеюсь теперь понятно.
PM MAIL   Вверх
Гость_newbie
Дата 1.11.2005, 19:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Да , спасибо за ответ,но что если ввести последовательность из нулей или вообще ввести сразу отрицательное число
З.Ы. Ни отладчика ни компилятора у меня нет , учу язык в теории
  Вверх
En_t_end
Дата 1.11.2005, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата
Ни отладчика ни компилятора у меня нет , учу язык в теории

Не очень это продуктивно...
PM MAIL ICQ Skype GTalk Jabber   Вверх
nikitao
Дата 1.11.2005, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Цитата
Ни отладчика ни компилятора у меня нет , учу язык в теории

(ИМХО) КПД->0 от такого обучения.Скачай,сейчас есть бесплатные компеляторы с IDE.


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Гость_newbie
Дата 1.11.2005, 20:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











"Скачай,сейчас есть бесплатные компеляторы с IDE."
Подскажи самый маленький компилятор если не трудно ( можно без IDE)
  Вверх
nikitao
Дата 1.11.2005, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Dev-C++-ну не знаю,как насчет самой маленькой,но что самый хороший из бесплатных это точно. smile


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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