Войти

Показать полную графическую версию : Помогите реализовать деление на 0 (калькулятор)


virus8
06-10-2011, 11:19
Собственно такая просьба: занялся изучением С++ и у меня в упражнении надо реализовать деление на ноль (просто хотя б объясните , а то мне в мозги не укладывается решение).
вот код: со 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
сделайте на if-else, там и проверку можно будет вставить

вот так


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

virus8
06-10-2011, 14:49
Блин, чет у меня мозги не могут это переварить. добавил такой код и у меня все равно не получается

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
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
#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
спасибо LilLoco ferget!!!

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




© OSzone.net 2001-2012