Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 77, средняя оценка - 4.90
Golovastik
 Аватар для Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
19.07.2009, 10:22     Оператор continue #1
Скажите пожалуйста! Почему, в данной программе у меня не работает оператор 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
19.07.2009, 21:56     Оператор continue #21
Цитата Сообщение от Golovastik Посмотреть сообщение
Обнулить надо наверное. Сейчас попробую.
наверное, все-таки, не обнулить, а "объединичить" )
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Golovastik
 Аватар для Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
19.07.2009, 22:23  [ТС]     Оператор continue #22
Да,вот так работает.
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
31
32
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
  int chislo, proizvedenie = 1;
  char mama;
  setlocale(0,"");
  
 do
    {
 int proizvedenie = 1;
 
        for(int i = 0; i<3; i++)
        {
            cout<<"Введите пожадуйста число -> ";
            cin>>chislo;
            if(chislo == 0)
                continue;
            proizvedenie*=chislo;
        }
        cout<<endl<<"Произведение чисел,игнорируя нули = "<<proizvedenie<<endl;
        cout<<"Продолжить?\n\n\t----> ";
            mama = _getch();    
 
        proizvedenie = 1;
        cin.get();
            }
    while(mama != 'n'); 
 
}
Большое всем спасибо за советы и ответы на вопросы.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
19.07.2009, 22:26     Оператор continue #23
Убери getch оттуда. Вместе с conio.h. Хватит в одну кучу мешать С и С++.
Golovastik
 Аватар для Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
19.07.2009, 22:29  [ТС]     Оператор continue #24
Но,дело в том,что если уберу,тогда будет отображатся нажатая клавиша, а я хочу чтоб она не отображалась, а просто,если введу другой символ,кроме 'n',сразу пошёл второй круг,а символ который я ввёл не отобразился чтобы.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
19.07.2009, 22:33     Оператор continue #25
Вообще-то, это также делается через cin в С++. Безо всяких сишных getch. Отвыкай делать кашу из двух разных языков.
Golovastik
 Аватар для Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
19.07.2009, 22:34  [ТС]     Оператор continue #26
А как это через cin,скажите пожалуйста,как это можно тогда заменить, именно чтоб было также само,тоесть такой же был эффект,если без гетча.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
19.07.2009, 22:49     Оператор continue #27
Мда, лучше тебе пока этого не знать getch ведь не ждет нажатия ентер?
тогда через обычный cin это не делается. Можно поменять мод терминала, можно использовать стороннюю либу. Например, с помощью ncurses. В любом случае, мой пример у тебя не пойдет, так как, я под никсы его напишу
Если для шараги пишешь, оставь гетч, как есть. Хотя, это нерекомендуемой решение, и правильнее использовать std::cin.get();
Golovastik
 Аватар для Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
19.07.2009, 22:51  [ТС]     Оператор continue #28
Напиши,как лучше,твоим вариантом,если хочешь конечно, такой желательно не сильно сложный.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
19.07.2009, 23:12     Оператор continue #29
В линуксе ее можно заменить одноименной функцией, но из библиотеки ncurses. А вообще, насколько я знаю, getch и conio.h не входят в стандарт, поэтому тут можно использовать что угодно Так что, забей. Потому что таких вещей в стандарте никогда не будет. Они платформозависимы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2009, 23:20     Оператор continue
Еще ссылки по теме:

C++ Почему не выполняется continue?
C++ Как опустить строчку "Press and key to continue' вниз?
Почему оператор continue выводит наверх цикла? C++
как задействовать оператор continue? C++
C++ Оператор continue

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

Или воспользуйтесь поиском по форуму:
Golovastik
 Аватар для Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
19.07.2009, 23:20  [ТС]     Оператор continue #30
Ну, спасибо всем, буду продолжать другую тему, тему Continue ,я прошёл...
Yandex
Объявления
19.07.2009, 23:20     Оператор continue
Закрытая тема Создать тему
Опции темы

Текущее время: 07:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru