|
|
|
| В данный момент прохожу циклы в С++. Я написал код с циклом "for" используя материал из книги плюс постарался учесть ошибки исправленные в моей первой теме. Программа скомпилировалась и вот теперь мне интересно что должно было произойти?
#include <stdio.h>
#include <iostream>
using namespace std;
int main (int arg, char* pszArgs[])
{
int loopCount;
cout << "12 ";
cin >> loopCount;
for (int i = loopCount; 1 > 0; i--);
{
cout << "осталось выполнить ";
cout << "i-1 ";
cout << " циклов\n";
}
system ("pause ");
return 0;
} |
Как я понял из книги должен был произойти цикл указанный в коде и значение должно было уменьшиться на 1, но после запуска, в консольной строке я наблюдаю только значение 12. Мой вопрос таков: что должно было произойти и правильно ли написан код? | |
|
|
|
|
|
|
|
для: Deck
(10.11.2011 в 14:28)
| | >cin >> loopCount;
1. cin предполагает, что вы должны ввести число, т.е. после появления значения 12, вы должны ввести свое число - столько будет циклов.
>cout << "i-1 ";
2. Здесь нужно убрать двойные кавычки, иначе вычисления не будут осуществляться и у вас эта строка будет выводиться как есть.
>for (int i = loopCount; 1 > 0; i--);
3. Вместо 1 > 0, нужно писать i > 0, иначе у вас будет бесконечный цикл, так как 1 > 0 будет всегда оставаться истинной (true), сколько бы циклов не произошло. | |
|
|
|
|
|
|
|
для: cheops
(10.11.2011 в 14:40)
| | Т.е. вместо cin >> loopCount надо написать например cin >> 3 ?
Когда я убираю двойные кавычки выдает ошибки (fordemo\fd.cpp name lookup of `i' changed for new ISO `for' scoping и fd.cpp using obsolete binding at `i' ) | |
|
|
|
|
|
|
|
для: Deck
(10.11.2011 в 15:49)
| | Сделайте проще, вместо вот этого блока
int loopCount;
cout << "12 ";
cin >> loopCount; | напишите, явно в программе, сколько вы хотите, чтобы циклы выполнялись, присвоив это значение переменной loopCount
>Когда я убираю двойные кавычки выдает ошибки (fordemo\fd.cpp name lookup of `i' changed for
>new ISO `for' scoping и fd.cpp using obsolete binding at `i' )
Заключите выражение в круглые скобки
| |
|
|
|
|
92.2 Кб |
|
|
для: cheops
(10.11.2011 в 15:52)
| | >напишите, явно в программе, сколько вы хотите, чтобы циклы выполнялись,
Если можно делать так зачем тогда нужно значение cout << 12(в моем блоке). Как я понимаю это вывод на экран, а cin это то что нужно ввести(правда я не понимаю где осуществляется этот ввод в самом коде или в командной строке).
>Заключите выражение в круглые скобки
Не помогает, выводит все теже ошибки. | |
|
|
|
|
|
|
|
для: Deck
(10.11.2011 в 16:06)
| | >>напишите, явно в программе, сколько вы хотите, чтобы циклы выполнялись,
>Если можно делать так зачем тогда нужно значение cout << 12(в моем блоке). Как я понимаю
>это вывод на экран, а cin это то что нужно ввести
Совершенно верно.
>(правда я не понимаю где осуществляется этот ввод в самом коде или в командной строке).
В командной строке, нужно переключить фокус на неё и вводить цифры (по мере ввода они будут отображаться).
>>Заключите выражение в круглые скобки
>Не помогает, выводит все теже ошибки.
Сейчас, попробую воспроизвести ситуацию. | |
|
|
|
|
|
|
|
для: Deck
(10.11.2011 в 16:06)
| | Вообще странно себя ведет wxDev-C++, он хочет, чтобы i была объявлена вне цикла for (как в чистом C - это одно из характерных отличий C от C++). Вот вариант, который у меня скомпилировался, обратите внимание, что после for точки с запятой не нужно, так как далее идут фигурные скобки.
#include <stdio.h>
#include <iostream>
using namespace std;
int main (int arg, char* pszArgs[])
{
int loopCount = 3;
int i;
for (i = loopCount; i > 0; i--)
{
cout << "осталось выполнить ";
cout << (i-1);
cout << " циклов\n";
}
system ("pause ");
return 0;
} |
| |
|
|
|
|
|
|
|
для: cheops
(10.11.2011 в 18:51)
| | Спасибо, все скомпилировалось, но надпись "осталось 1(2,3) цикла" написана непонятно :)
Такой вопрос: почему после строки cout << "циклов\n " нужна точка с запитой(там же вроде тоже фигурная скобка)? | |
|
|
|
|
|
|
|
для: Deck
(11.11.2011 в 15:13)
| | 1. По поводу русского текста, возможно вас заинтересуют темы по ссылкам
http://softtime.ru/cpp/read.php?id_forum=1&id_theme=10
http://softtime.ru/cpp/read.php?id_forum=1&id_theme=295
если останутся вопросы, лучше завести новую тему. | |
|
|
|
|
|
|
|
для: Deck
(11.11.2011 в 15:13)
| | >Такой вопрос: почему после строки cout << "циклов\n " нужна точка с запитой(там же вроде тоже
>фигурная скобка)?
Не совсем так, внутри фигурных скобок три оператора cout, в конце каждого из них нужна точка с запятой. Если бы в случае оператора for фигурные скобки не использовались, то ему бы тоже потребовалась точка с запятой
for (i = loopCount; i > 0; i--) cout << "осталось выполнить " << (i-1) << " циклов\n"; | Так как де-факто это и есть истинная форма оператора for - он выполняет в цикле один оператор. Однако, одного оператора зачастую мало, поэтому используется составной оператор - фигурные скобки
for (i = loopCount; i > 0; i--)
{
// Тут много других операторов, все они будут выполняться
// в цикле
} | Вот в конце составного оператора (фигурные скобки) точка с запятой не обязательна (есть парочка исключений, например, класс, но в большинстве случаев скобки обходятся без точки с запятой, так как и так понятно, что это просто контейнер для других операторов). Все остальные операторы требуют в конце точки с запятой, иначе C++ не будет "понимать" где начинаются и заканчиваются операторы. | |
|
|
|
|
|
|
|
для: cheops
(11.11.2011 в 18:26)
| | Спасибо за пояснение - тоже полезно было. Всегда интуитивно понимал работу for, но не задумывался над тем - почему... ; не ставится/ставится. Теперь знаю. | |
|
|
|
|
|
|
|
для: cheops
(11.11.2011 в 18:26)
| | Спасибо, очень помогли. Постараюсь учесть в последующих работах. | |
|
|
|