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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бесконечное выполнение 
V
    Опции темы
papochka
Дата 26.11.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет. Незнал как назвать тему.

Вобщем у меня есть код(калькулятор), так вот после вычисления прекращает работу. Как можно сделать так, чтоб после вычисления заного можно было вводить значения и считать? Код прилагается.
За код не ругайтесь, я только начинаю))

Код

#include <iostream>
using namespace std;

int main () 
{
setlocale( LC_ALL,"Russian" );
int a,b,res;
char op;
cout << "Доступные операции: " << endl;
cout << "------------------------------"<<endl;
cout << "| Знак          Операция     |      "<<endl << endl;
cout << "|----------------------------|      "<<endl;
cout << "| +            Сложение      |      "<<endl;
cout << "| -            Вычитание     |      "<<endl;
cout << "| *            Умножение     |      "<<endl;
cout << "| /            Деление       |      "<<endl;
cout << "| ^            Квадрат       |      "<<endl;
cout << "| ^3           Куб           |      "<<endl;   
cout << "------------------------------" << endl;
cout << "Если вы хотите посчитать квадрат(куб),тогда вводите первое число и знак,\nа второму дайте значение 0."<<endl;
cout << "\nВведите первое число: "; cin >> a;
cout << "\nВведите знак: "; cin >> op;
cout << "\nВведите второе число: "; cin >> b;
bool f = true;
switch(op){
    case '+': res = a + b; break;
    case '-': res = a - b; break;
    case '/': res = a / b; break;
    case '*': res = a * b; break;
    case '^': res = a * a; break;
    case '^3': res = a * a * a; break;
default : cout << "\nНеизвестная операция"; f = false;
}

if (f) cout <<"\nРезультат :"<< res << endl;
system("pause");
return 0;
}


Это сообщение отредактировал(а) papochka - 26.11.2009, 19:20
PM MAIL   Вверх
papochka
Дата 26.11.2009, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Решение подсказали. Кому мб пригодится:
do 
{
// Тут код калькулятора
}while(true);
PM MAIL   Вверх
baldina
Дата 26.11.2009, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



сделай цикл:

Код

while (true)
{
  int a,b,res;
  ....
  if (f) cout <<"\nРезультат :"<< res << endl; 
}

PM MAIL   Вверх
papochka
Дата 26.11.2009, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасиб. Уже подсказали smile
PM MAIL   Вверх
Luyan
Дата 26.11.2009, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



papochka, зачем бесконечно много? как же ты выйдешь? имхо неудобно.
как вариант, с выходом:
Код

char ch;
do 
{
    system("CLS");

    //код

    cout << "Дальше?(y/n)" << endl;
    do
    {
        ch = getchar();
    }while( (ch != 'y') && (ch != 'Y') && (ch != 'n' ) && (ch != 'N') );
}while ( (ch != 'n' ) && (ch != 'N') );


Это сообщение отредактировал(а) Luyan - 26.11.2009, 19:58
PM   Вверх
papochka
Дата 26.11.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо. Я даже не задумывался об этом))
PM MAIL   Вверх
bsa
Дата 27.11.2009, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



А зря.

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

PM   Вверх
unicuum
  Дата 27.11.2009, 06:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Тема не раскрыта. Пока я вижу повторения чисто в процедурной парадигме программирования. А где же функциональное и обобщённое? К тому же даже в процедурном программировании непонятно какой вариант лучший, а их можно написать массу.

Код

#include <iostream>

using namespace std;

// Спросить
void ask()
{
    string answer;
    bool endAsk = false;
    do
    {
        cout << "ню?" << endl;
        cin >> answer;
        if (answer == "y" || answer == "Y")
            cout << "няяя!!!" << endl;
        if (answer == "n" || answer == "N")
        {
            cout << "ню :(" << endl;
            endAsk = true;
        }
    }
    while (!endAsk);
}

int main()
{
    ask();

    return 0;
}


Код

#include <iostream>

using namespace std;

// Спросить
void ask()
{
    string answer;
    while (true)
    {
        cout << "ню?" << endl;
        cin >> answer;
        if (answer == "y" || answer == "Y")
            cout << "няяя!!!" << endl;
        if (answer == "n" || answer == "N")
        {
            cout << "ню :(" << endl;
            return;
        }
    }
}

int main()
{
    ask();

    return 0;
}


Код

#include <iostream>

using namespace std;

// Спросить
void ask()
{
    string answer;
    do
    {
        cout << "ню?" << endl;
        cin >> answer;
        if (answer == "y" || answer == "Y")
            cout << "няяя!!!" << endl;
    }
    while (!(answer == "n" || answer == "N"));
    cout << "ню :(" << endl;
}

int main()
{
    ask();

    return 0;
}


Предлагаю более подробно разобрать этот вопрос.


--------------------
user posted image
обычный день на винграде
PM   Вверх
unicuum
  Дата 27.11.2009, 06:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Попытка написать тоже самое в функциональном стиле. Не совсем понятно только получилось ли.

Код

#include <iostream>

using namespace std;

extern void Njaaa();
extern void Njuuu();

typedef void (*AskNju)();

// Спросить
void ask(AskNju pAskNju)
{
    string answer;
    do
    {
        cout << "ню?" << endl;
        cin >> answer;
        if (answer == "y" || answer == "Y")
            pAskNju();
    }
    while (!(answer == "n" || answer == "N"));
    cout << "ню :(" << endl;
}

void Njaaa(){ cout << "няяя!!!" << endl; }
void Njuuu(){ cout << "нююю!!!" << endl; }

int main()
{
    cout << "--- ня ---" << endl;
    ask(Njaaa);
    cout << "--- ню ---" << endl;
    ask(Njuuu);

    return 0;
}


Добавлено через 10 минут и 26 секунд
Всё это очень напоминает интерфейсы.

Код

#include <iostream>

using namespace std;

extern void askNjaaa();
extern void yesNjaaa();
extern void noNjaaa();
extern void askNjuu();
extern void yesNjuuu();
extern void noNjuuu();

typedef void (*AskNju)();

// Спросить
void ask(AskNju pAsk, AskNju pYes, AskNju pNo)
{
    string answer;
    do
    {
        pAsk();
        cin >> answer;
        if (answer == "y" || answer == "Y")
            pYes();
    }
    while (!(answer == "n" || answer == "N"));
    pNo();
}

void askNjaaa(){ cout << "ня?" << endl; }
void yesNjaaa(){ cout << "няяя!!!" << endl; }
void noNjaaa(){ cout << "ня :(" << endl; }
void askNjuu(){ cout << "ню?!!!" << endl; }
void yesNjuuu(){ cout << "нююю!!!" << endl; }
void noNjuuu(){ cout << "ню :(" << endl; }

int main()
{
    cout << "--- ня ---" << endl;
    ask(askNjaaa, yesNjaaa, noNjaaa);
    cout << "--- ню ---" << endl;
    ask(askNjuu, yesNjuuu, noNjuuu);

    return 0;
}



--------------------
user posted image
обычный день на винграде
PM   Вверх
bsa
Дата 27.11.2009, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



unicuum, ничего принципиально нового ты не предложил. Тот же цикл с выходом по условию. Разница лишь в разбивке кода.


M
bsa
Пожалуйста, будь по-серьезней и старайся не показывать свои пристрастия к японской мультипликации на форумах не ей посвященных.


Это сообщение отредактировал(а) bsa - 27.11.2009, 10:55
PM   Вверх
mes
Дата 27.11.2009, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(papochka @  26.11.2009,  18:18 Найти цитируемый пост)
cout << "Если вы хотите посчитать квадрат(куб),тогда вводите первое число и знак,\nа второму дайте значение 0."<<endl;

зачем утруждать пользователя ? можно ведь сделать калькулятор чуть более интелектуальным, например так :
Код

int ask_int (const std::string& q)
{

    int i;
    std::cout << q << " : ";
    std::cin >> i;
    return i;

}


int main ()
{
   char op;
   std::cout << "operation :";
   std::cin >> op;

    switch(op){
        case '+': {   int res = ask_int ("first ") + ask_int ("second");
                      std::cout << "result = " << res << std::endl;
                  } break;
    //...
        case '^': {   int arg = ask_int ("first ");
                      std::cout << "result = " << arg*arg << std::endl;
                  } break;
    //...
    default : std::cout << "\n Undefined";
    }
}


ну а дальше проявляйте фантазию smile



--------------------
PM MAIL WWW   Вверх
unicuum
Дата 27.11.2009, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(bsa @  27.11.2009,  10:55 Найти цитируемый пост)
unicuum, ничего принципиально нового ты не предложил. Тот же цикл с выходом по условию. Разница лишь в разбивке кода.

Я предложил подумать, так как сам вряд ли напишу код, к которому ничего не убавить и не добавить. Должны же быть какие-то стандартные выверенные временем решения.
Цитата(mes @  27.11.2009,  12:08 Найти цитируемый пост)
ну а дальше проявляйте фантазию user posted image

Недавно пример видел калькулятора.


--------------------
user posted image
обычный день на винграде
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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