Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 77, средняя оценка - 4.90
Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
#1

Оператор continue - C++

19.07.2009, 10:22. Просмотров 10077. Ответов 29
Метки нет (Все метки)

Скажите пожалуйста! Почему, в данной программе у меня не работает оператор Continue.Программа должна умножать введённые числа игнорируя нули. Вот исходник:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
  setlocale(0,"");
int i = 0, value = 0, product = 1;
for(i = 1; i<=10; i++)
{
    cout<<"Введите целое число: ";
    cin>>value;
    if(value == 1)
        continue;
    product*=value;
}
    cout<<"Произведение (игнорируя нули): "<<product
        <<endl;
 
cin.get();
cin.ignore();
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2009, 10:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оператор continue (C++):

Оператор continue - C++
int main() { setlocale(LC_ALL, &quot;Russian&quot;); int r; cout &lt;&lt; &quot;Введите кол-во элементов массива = &quot;; cin &gt;&gt; r; int *a = new...

Оператор continue - C++
Прошу прощения за глупый вопрос. Пишу курсовую, голова уже совсем не работает. for (level=0;level&lt;CatalogueCount;level++) { if...

Оператор continue - C++
void drawCircle(int x0, int y0, int radius) { int x = 0; int y = radius; int delta = 2 - 2 * radius; ...

Оператор continue. - C++
Помогите:Вывести нечетные числа от 0 до 100, используя оператор continue.

как задействовать оператор continue? - C++
Написал программу для демонстрации работы оператора continue. Компилятор ругается, пишет что оператор не в петле. Программу списал из...

Почему оператор continue выводит наверх цикла? - C++
Всем привет! Начинаю осваивать программирование, написал вот такую программу для вычисления определённого члена последовательности...

29
schdub
2974 / 1319 / 244
Регистрация: 19.01.2009
Сообщений: 3,471
Завершенные тесты: 1
19.07.2009, 10:50 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
  setlocale(0,"");
  int i = 0, value = 0, product = 1;
  for(i = 1; i<=10; i++)
  {
    cout<<"Введите целое число: ";
    cin>>value;
 
    if(value > 0)
        product*=value;
  }
  cout<<"Произведение (игнорируя нули): "<<product<<endl;
  cin.get();
  cin.ignore();
  return 0;
}
0
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
19.07.2009, 13:15 #3
Что бы игнорировать нули надо писать
C++
1
2
if(value == 0)
   continue;
0
Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
19.07.2009, 16:19  [ТС] #4
Попробывал так, вроде всё работает, но как мне это сделать используя оператор Continue


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
  setlocale(0,"");
  int i = 0, value = 0, product = 1;
  for(i = 1; i<=10; i++)
  {
        cout<<"Введите целое число: ";
        cin>>value;
 
        if(value > 0)
                product*=value;
        else break;
        
  }
  cout<<"Произведение (игнорируя нули): "<<product<<endl;
  cin.get();
  cin.ignore();
  return 0;
}
Поробывал с Continue так, но не выходит.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
  setlocale(0,"");
  int i = 0, value = 0, product = 1;
  for(i = 1; i<=10; i++)
  {
        cout<<"Введите целое число: ";
        cin>>value;
 
        if(value == 0)
            continue;
                product*=value;
 
        
  }
  cout<<"Произведение (игнорируя нули): "<<product<<endl;
  cin.get();
  cin.ignore();
  return 0;
}
0
Evg
Эксперт CАвтор FAQ
18705 / 6673 / 472
Регистрация: 30.03.2009
Сообщений: 18,685
Записей в блоге: 29
19.07.2009, 16:24 #5
С виду написано правильно. Что конкретно не работает?
0
Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
19.07.2009, 16:30  [ТС] #6
Всё, проверил,вроде всё правильно написал. Не скажите, какой смысл заключается в операторе Continue,просто его сейчас читаю в книге, тоесть, переход к тому же циклу снова. Если что не так, поправьте меня.
0
Evg
Эксперт CАвтор FAQ
18705 / 6673 / 472
Регистрация: 30.03.2009
Сообщений: 18,685
Записей в блоге: 29
19.07.2009, 16:39 #7
continue грубо говоря означает переход на конец цикла. Т.е.

C
1
2
3
4
5
6
7
8
9
for(i = 1; i<=10; i++)
{
  <код>
 
  if(value == 0)
    continue;
 
  <код>
}
по своему действию эквивалентно

C
1
2
3
4
5
6
7
8
9
10
11
for(i = 1; i<=10; i++)
{
  <код>
 
  if(value == 0)
    goto L;
 
  <код>
 
L:; // <-- метка в конце тела цикла
}
2
Vourhey
Почетный модератор
6488 / 2262 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
19.07.2009, 16:57 #8
Golovastik, не к тому же циклу снова, а переход на следующую итерацию цикла.
1
Evg
Эксперт CАвтор FAQ
18705 / 6673 / 472
Регистрация: 30.03.2009
Сообщений: 18,685
Записей в блоге: 29
19.07.2009, 17:08 #9
Цитата Сообщение от Vourhey Посмотреть сообщение
Golovastik, не к тому же циклу снова, а переход на следующую итерацию цикла.
Если она (следующая итерация) есть
0
Vourhey
Почетный модератор
6488 / 2262 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
19.07.2009, 17:12 #10
Evg, на итерации и будет проверено. Она будет. Просто после очередной проверки в итерации, код может вйти из нее.
0
Evg
Эксперт CАвтор FAQ
18705 / 6673 / 472
Регистрация: 30.03.2009
Сообщений: 18,685
Записей в блоге: 29
19.07.2009, 17:56 #11
Цитата Сообщение от Vourhey Посмотреть сообщение
Evg, на итерации и будет проверено. Она будет. Просто после очередной проверки в итерации, код может вйти из нее.
Ты не мне объясняй, я знаю. Товарищ не знает
0
Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
19.07.2009, 20:50  [ТС] #12
Ясно,тоесть оператор Continue, даёт возможность перейти к следующей итерации, того же цикла. Есть ещё один вопрос. Вы не скажете,как в данном коде,что ниже, сделать такое. Когда, я 10 раз ввёл разные числа,включая нули, затем, после 10 числа, и нажатия клавиши ENTER , программа выдала произведение. Как мне сделать так, чтоб программа выдала сообщение после результата, "Желаете ли вы повторить процедуру ещё раз, если нет, тогда выйти из программы, если нажато, что-нибудь другое, тогда всё сначала подсчитывать, по 2-му кругу. Заранее благодарен. Я оппробывал так,но что-то не выходит.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
  int chislo, proizvedenie = 1;
  char mama;
  setlocale(0,"");
  
  for(int i = 0; i<10; i++)
  {
  cout<<"Введите пожадуйста число -> ";
  cin>>chislo;
  if(chislo == 0)
      continue;
  proizvedenie*=chislo;
  }
  
  cout<<"Ещё раз не желаете ввести?\n\n\t----> ";
  mama = _getch();
  if((mama =='n') || (mama == 'N'))
      break;
  cout<<endl<<"Произведение чисел,игнорируя нули = "<<proizvedenie;
  cin.ignore();
  cin.get();
  return 0;
}
0
Vourhey
Почетный модератор
6488 / 2262 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
19.07.2009, 21:20 #13
Я, конечно, не знаю, но на месте компиляторы выдал бы тут:
break;
ошибку, так как, вызов не в цикле происходит. тебе нужно твой цикл for, твой вопрос и сообщение посместить в еще один бесконечный цикл. Подумай сам как. Это просто.
0
Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
19.07.2009, 21:27  [ТС] #14
Попробывал так, но результата не вижу. ПОсле подсчёта, завершается и всё, и даже не выводит сообщение,что, хочу ли я продолжить ещё раз.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
  int chislo, proizvedenie = 1;
  char mama;
  setlocale(0,"");
  
  do
  {
  for(int i = 0; i<10; i++)
  {
  cout<<"Введите пожадуйста число -> ";
  cin>>chislo;
  if(chislo == 0)
      continue;
  proizvedenie*=chislo;
  }
  
  cout<<"Ещё раз не желаете ввести?\n\n\t----> ";
  mama = _getch();
  }while ((mama =='n') || (mama == 'N'))
      break;
  cout<<endl<<"Произведение чисел,игнорируя нули = "<<proizvedenie;
  cin.ignore();
  cin.get();
  return 0;
}
0
Vourhey
Почетный модератор
6488 / 2262 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
19.07.2009, 21:35 #15
ты куда брейк засандалил? почему он у тебя вне цикла? Зачем он тебе нужен?
0
19.07.2009, 21:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2009, 21:35
Привет! Вот еще темы с ответами:

удаление continue - C++
У Дейтлов есть задача: Что здесь имеется в виду под структурированным эквивалентом?

Инструкция if(.) continue - C++
Объясните пожалуйста как работает эта инструкция на таком примере: #include &lt;bits/stdc++.h&gt; using namespace std; int main() { ...

If else statement (continue) - C++
Простите - не пойму как форматировать код, копируемый с (С++). Всё исправлено - досихпор какие - то ошибки у меня Выдаёт - The...

Class book continue - C++
Задание: Создать заголовочный файл bookshop.h и описать в нём класс bookshop со следующими полями (закрытыми) и функциями-членами...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru