Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Оператор Continue


Автор: Golovastik 19.7.2009, 20:06
 Здравсвуйте! Вы не скажете,как в данном коде,что ниже, сделать такое. Когда, я 10 раз ввёл разные числа,включая нули, затем, после 10 числа, и нажатия клавиши ENTER , программа выдала произведение. Как мне сделать так, чтоб программа выдала сообщение после результата, "Желаете ли вы повторить процедуру ещё раз, если нет, тогда выйти из программы, если нажато, что-нибудь другое, тогда всё сначала подсчитывать, по 2-му кругу. Заранее благодарен. Я оппробывал так,но что-то не выходит.



Код

 
#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;
}


Автор: hsilgos 19.7.2009, 20:13
нда...
Код

do
{
for(int i = 0; i<10; i++)
  {
  cout<<"Введите пожадуйста число -> ";
  cin>>chislo;
  if(chislo != 0)
     proizvedenie*=chislo;
  }
  
  cout<<"Ещё раз не желаете ввести?\n\n\t----> ";
  mama = _getch();

}while( (mama !='n') && (mama != 'N') )

Автор: Golovastik 19.7.2009, 20:22
Попробывал так, но не выходит, после результата, не происходит продолжнеия, и не предлагается ввести ещё раз.
Код


#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;
}

Автор: mes 19.7.2009, 20:31
для начала напишите словами свой алгоритм и сразу будет легче, тем более что не хотите смотреть в предложенном Вам выше варианте.

Автор: Golovastik 19.7.2009, 20:35
Напишу, что программа должна делать. Программа выводит произведение чисел 1..10, игнорируя нули,тоесть нули не умножает, и выводит результат.
Мне нужно,чтоб программа продолжила повторение заново, той же процес, после результата.

Автор: mes 19.7.2009, 20:49
Цитата(Golovastik @  19.7.2009,  19:35 Найти цитируемый пост)
Программа выводит произведение чисел 1..10, игнорируя нули,тоесть нули не умножает, и выводит результат.
Мне нужно,чтоб программа продолжила повторение заново, той же процес, после результата.

Напишите не "что" она должна делать, а "как " smile

Добавлено @ 20:52
Цитата(Golovastik @  19.7.2009,  19:35 Найти цитируемый пост)
Мне нужно,чтоб программа продолжила повторение заново, той же процес, после результата.

или обратите внимание на 1 и 14 строчки кода hsilgos`a -там уже написано что Вам нужно smile


Автор: Golovastik 19.7.2009, 20:54
Вот так работает, но дело в том,что когда идёт по 2-ому кругу подсчёт, уже считает неправильно, а за первым разом всё нормально.


Код

#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
  int chislo, proizvedenie = 1;
  char mama;
  setlocale(0,"");
  
 do
    {
        for(int i = 0; i<3; i++)
        {
            cout<<"Введите пожадуйста число -> ";
            cin>>chislo;
            if(chislo == 0)
                continue;
            proizvedenie*=chislo;
        }
 
        cout<<endl<<"Произведение чисел,игнорируя нули = "<<proizvedenie<<endl;
        cout<<"Продолжить?\n\n\t----> ";
        cin.get();
        cin.get(mama);
    }
    while(mama != 'n'); 

}

Автор: mes 19.7.2009, 20:57
Цитата(Golovastik @  19.7.2009,  19:54 Найти цитируемый пост)
, но дело в том,что когда идёт по 2-ому кругу подсчёт, уже считает неправильно, а за первым разом всё нормально.

7ю строчку из последнего кода поместите после 12й.


Автор: Golovastik 19.7.2009, 21:04
Странно,заработало, только не могу понять почему, вроде не обнулял произведение.
Ещё вопрос. Скажите,как сделать так, в этой программе, может вставить mama = _getch() куда-то,чтоб не отображался символ, который я ввёл после результата.

Автор: mes 19.7.2009, 21:13
Цитата(Golovastik @  19.7.2009,  20:04 Найти цитируемый пост)
Странно,заработало, только не могу понять почему, вроде не обнулял произведение.

каждый этап Вашего цикла начинается теперь с определения переменной произведения равной 1.
Раньше пользовались тем, что насчитали. Поэтому и предложил Вам описать чего Вы хотите словами, чтоб Вы вначале сами поняли, а уж потом бы объясняли бы компу.
У Вас же получается наоборот.  smile 

Цитата(Golovastik @  19.7.2009,  20:04 Найти цитируемый пост)
Скажите,как сделать так, в этой программе, может вставить mama = _getch() куда-то,чтоб не отображался символ, который я ввёл после результата. 

вместо 24й и 25й строчек.


Автор: Golovastik 19.7.2009, 21:22
Когда вставил после строки:
    
Код

    cout<<"Продолжить?\n\n\t----> ";

строку
Код

mama = _getch()

Вроде работает.  Спасибо mes, вроде всё работает.

Автор: bsa 21.7.2009, 15:30

M
bsa
Golovastik, если ответ на вопрос получен, то пометь тему решенной

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)