Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Помогите реализовать деление на 0 (калькулятор) (http://forum.oszone.net/showthread.php?t=217277)

virus8 06-10-2011 11:19 1767092

Помогите реализовать деление на 0 (калькулятор)
 
Собственно такая просьба: занялся изучением С++ и у меня в упражнении надо реализовать деление на ноль (просто хотя б объясните , а то мне в мозги не укладывается решение).
вот код: со switch
читать дальше »

Код:

#include <iostream>
 int main()
 {
 float a,b;//peremenie       
char op;//operation
float res;//resultat         
std::cout<<"Enter expression: ";       
std::cin>>a>>op>>b;         
switch(op)       
{       
case '+':               
res=a+b;               
break;       
case '-':               
res=a-b;       
break;       
case'/':               
res=a/b;               
break;       
case '*':               
res=a*b;               
break;       
default:               
std::cout<<"Bad operation";               
return 0;       
}             
std::cout<<res<<std::endl;       
return 0;
}



вот код : с else if
Код:

#include <iostream>
int main()
{
        float a,b;
        char op;
        float res;

        std::cout<<"Enter expression: ";
        std::cin>>a>>op>>b;

        if (op == '-')
                res =a-b;
        else if (op == '+')
                res = a+b;
        else if (op == '/')
                res =a/b;
        else if (op == '*')
                res = a*b;
        else
        {
                std::cout<<"bad operation"<<std::endl;
                return 0;
        }
        std::cout<<"resultat: "<<res<<std::endl;
        return 0;
}

С else-if разобрался!!!!

Помогите кто то еще решить эту задачу через switch!!!

ferget 06-10-2011 13:23 1767230

сделайте на if-else, там и проверку можно будет вставить

вот так

Код:

else if ((op == '/')&&(a!=0) )

virus8 06-10-2011 14:49 1767329

Блин, чет у меня мозги не могут это переварить. добавил такой код и у меня все равно не получается
читать дальше »

else if ((op == '/')&&(a!=0))
{
std::cout<<"na 0 delit nelzya";
return 0;


(пробЫвал поставить вместо a - b все равно при проведении расчетов вместо ответа выводит иероглифы!)

все разобрался ))))
else if ((op == '/')&&(b!=0) ) надо было b поставить!!!
спасибо!!!

LilLoco 06-10-2011 15:03 1767354

virus8, Сделайте для деления функцию, н-р так (самое простейшее):

Код:

float division (float a, float b)// a - делимое, b - делитель
{
    if (b == 0)
    {
          cout << "на ноль делить нельзя";
          return 0;
    }
    else
          return a/b;
}

ну а в самом коде программы :
Код:

case'/':
res=division(a,b);
break;

Ну а с "красотой" поэкспериментируйте :)

ferget 06-10-2011 15:13 1767369

Код:

#include <iostream>
int main()
{
float a,b;
char op;
float res;

std::cout<<"Enter expression: ";
std::cin>>a>>op>>b;

if (op == '-')
res =a-b;
else if (op == '+')
res = a+b;
else if ((op == '/')&&(b!=0))
res =a/b;
else if (op == '*')
res = a*b;
else
{
        if (b==0)
        {std::cout<<"na 0 delit nelzya"<<std::endl;
        return 0;
        }else
        {
        std::cout<<"bad operation"<<std::endl;
        return 0;
        }
}
std::cout<<"resultat: "<<res<<std::endl;
return 0;
}

или код LilLoco,

virus8 06-10-2011 15:21 1767379

спасибо LilLoco ferget!!!

ваши ответы помогли мне наконец понять , что именно у меня были за ошибки)))
просто до функций я еше не совсем дорос((
так хоть с if разобрался


Время: 00:00.

Время: 00:00.
© OSzone.net 2001-