Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2012, 17:32   #1
marauder1919
Пользователь
 
Регистрация: 05.08.2012
Сообщений: 14
По умолчанию Основы с++

Я в С++ на уровне новичка. Помогите с 2мя вопросами.
Код компилирую в Dev-C++

Код:
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <conio.h>

using namespace std;

int opt1();
int opt2();
int opt3();

int main(int argc, char *argv[])
{
    int mopt;
    do{ 
        system("cls");
        cout<<"Choose option\n\n";
        cout<<"\t1. Calculator\n"<<"\t2. \n"<<"\t3.\n"<<"\t\n0. Exit\n";
        cin>>mopt;
        switch(mopt)              // Выбор 1й из функций
            {case 1: opt1();
             case 2: opt2(); 
             case 3: opt3();
            }
    }
    while (mopt!=0) ;        
    return EXIT_SUCCESS;
}

//-----------------------------------------------------
int opt1()
    {
     system("cls");
                  cout<<"\n\tYou have chosen calculator\n\n";
                  int a1,b1,r1,c1;
                  cout<<"\tInsert two numbers\n";
                  cin>>a1;                                                         //Ввод переменных a1,b1

                  cin>>b1;
                  cout<<"\tChoose operation\n\n";
                  cout<<"\t\t1. + \n"<<"\t\t2. -\n"<<"\t\t3. *\n"<<"\t\t4. /\n"<<"\t\t5. %\n"<<"\t\t6. ^\n"<<"\n\t\t0. Exit\n";
                  cin>>c1;
                  switch(c1)
                            {case 1: r1=(a1+b1);
                             case 2: r1=(a1-b1);
                             case 3: r1=a1*b1;
                             case 4: r1=a1/b1;
                             case 5: r1=a1%b1;
                             case 6: r1=pow(a1,b1);      
                            };
                  cout<<"Your result:\n"<<r1<<"\n";
                  system("PAUSE");     
    }
//-------------------------------------------------------------

int opt2()
    {cout<<"hello";
    system("PAUSE");
    return(0);
    }
//--------------------------------

int opt3()
    {cout<<"hello3";
    system("PAUSE");
    return(0);
    }
Ето консольная программа, в начале пользователь вводит число - пункт меню, потом функция switch вызывает одну из функций opt1, opt2, opt3.

1й вопрос: мне нужно чтобы после вызова и выполнения одной функции (например opt1) программа возвращалась к конструкции switch а она выполняет подряд все 3 задекларированные фунции (opt1, opt2 и opt3) вместо одной. Как ето исправить.

2й вопрос: Почемуто у меня идут ошибки при стандартных вычислениях. Если задать переменные a1=2 и b1=3 то результат выражений r=a1*b1 или r1=a1%b1 или r1=a1+b1 всегда неверный ( например 2333 - тоесть непонятно что). Может дело в компиляторе?
marauder1919 вне форума Ответить с цитированием
Старый 05.08.2012, 17:42   #2
cocacola
Пользователь
 
Регистрация: 28.02.2012
Сообщений: 14
По умолчанию

1) switch(mopt)
{case 1: opt1(); break;
case 2: opt2(); break;
case 3: opt3(); break;
}
2)switch(c1)
{case 1: r1=(a1+b1); break;
case 2: r1=(a1-b1); break;
case 3: r1=a1*b1; break;
case 4: r1=a1/b1; break;
case 5: r1=a1%b1; break;
case 6: r1=pow(a1,b1);
};
cocacola вне форума Ответить с цитированием
Старый 05.08.2012, 17:44   #3
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Код:
{
   case 1: { opt1(); break; }
   case 2: { opt2(); break; }
   case 3: { opt3(); break; }
}
обрати внимание:

Код:
case 4: r1=a1/b1; break;
case 5: r1=a1%b1; break;
Здесь участвующие переменные объявлены, как:
Код:
int a1,b1,r1,c1;
Они все - инты. Однако результатом операции деления может быть дробное число. Но так как у тебя инты, то дробная часть будет отброшена.

Не удивляется, если 7/2 получится 3

Последний раз редактировалось Stilet; 06.08.2012 в 14:08.
_Bers вне форума Ответить с цитированием
Старый 06.08.2012, 09:54   #4
marauder1919
Пользователь
 
Регистрация: 05.08.2012
Сообщений: 14
По умолчанию

Всем спасибо. С break всё работает хорошо. Я то думал дело в синтаксисе и декларировании функций а не в конструкции switch.
marauder1919 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Основы программирования Анна К. Помощь студентам 5 29.06.2012 15:45
Основы WINAPI Jugger Visual C++ 0 14.02.2012 22:41
основы ООП phasha Помощь студентам 2 26.01.2012 15:10
Основы FastReport Dima_mazhor БД в Delphi 31 13.12.2009 15:34