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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2010, 02:45   #1
D.Max
Новичок
Джуниор
 
Регистрация: 14.06.2010
Сообщений: 2
По умолчанию Ошибка Е2126 в операторе Switch

Здравствуйте, только недавно начал изучать C++. Работаю в С++Builder 6.

Это своего рода калькулятор.
Код:
#pragma hdrstop
#include <fstream.h>
#include <math.h>
#include <iostream.h>
#include <time.h>

//---------------------------------------------------------------------------

#pragma argsused

float res;

void message_1()
 {
 cout<<"\n";
 cout<<"    *------------*\n";
 cout<<"    |Kal'kuljator|\n";
 cout<<"    *------------*\n"<<"\n";
 }
void message_2()
 {
 cout<<"\n";
 cout<<"  Podskazka:\n";
 cout<<"  ==========\n"<<"\n";
 }
void message_3()
 {
 cout<<"\n";
 cout<<"  Vibor tipa vvoda operanda\n";
 cout<<"  --------------------------\n";
 cout<<"  1.Ruchnuju vvod.\n";
 cout<<"  2.Slucajnij vvod.\n";
 cout<<"  3.Vvod iz fajla.\n"<<"\n";
 cout<<"  Vash vibor:";
 }
void message_4()
 {
 cout<<"\n";
 cout<<"  Vidy operacijj: + , - , * , / , ^ , s (^ - stepen`,s - koren`).\n";
 cout<<"  Vvod operaciju:";
 }
void message_5()
 {
 cout<<"\n";
 cout<<"  Neizvestnaja operacija!\n";
 cout<<"  -----------------------\n";
 }
void message_6()
 {
 cout<<"\n"<<"\n";;
 cout<<"  Chto dal`she?\n";
 cout<<"  =============\n";
 cout<<"  1.Nachat' zanovo\n";
 cout<<"  2.Prodolzhit'\n" ;
 cout<<"  3.Zapis` v fajl'\n" ;
 cout<<"  4.Vyjti\n"<<"\n" ;
 cout<<"  Vash vybor:";
 }
float vvod(char a,float b)
 {
 switch(a)
  {
  case'1':
  cout<<"\n"<<"  Vvedite chislo:";
  cin>>b ;
  break;
  case'2':
  srand(time(0));
  b=rand()%100;
  cout<<"\n"<<"  Sluchajnoe chislo:"<<b<<"\n";
  break;
  case'3':
  ifstream f("file.txt");
  f>>b;
  cout<<"\n"<<"  Chislo iz fajla:"<<b<<"\n";
  break;
  default:
  cout<<  "Nevernaja komanda!";
  break;
  }
 return(a,b);
 }
float oper(float x, char z, float y)
 {
 switch(z)
  {
  case'+':
  res=x+y;
  break;
  case'-':
  res=x-y;
  break ;
  case'*':
  res=x*y;
  break;
  case'/':
  res=x/y;
  break;
  case'^':
  res=exp(y * log(x));
  break;
  case's':
  res=exp(1/x)*log(y);
  break;
  default:
  res=0;
  message_5();
  break;
  }
 return(x,z,y,res);
 }
float vivod(float x, char z, float y, float res)
 {
 cout<<"\n";
 cout<<"  "<<x<<z<<y<<"="<<res;
 return(x,z,y,res) ;
 }
float tofile(float res)
 {
 ofstream f("file.txt");
 f<<res;
 cout<<"\n"<<"  Chislo "<<res<<" sohraneno!"<<"\n";
 return res;
 }
int main(char a,float x, float y,char z,float b)
 {
 char d;
 message_1();
 do
  {
  do
   {
   message_2();
   message_3();
   cin>>a;
   x=vvod(a,b);
   message_4() ;
   cin>>z;
   message_3();
   cin>>a;
   y=vvod(a,b);
   oper(x,z,y);
   vivod(x,z,y,res);
   message_6();
   cin>>d;
   if(d=='3')
    {
    tofile(res);
    message_6();
    cin>>d;
    }
   }
  while(d=='1');
  while((d!='3')&&(d!='1')&&(d!='4'))
  {
  x=res;
  res=0;
  y=0;
  message_4();
  cin>>z;
  message_3();
  cin>>a;
  y=vvod(a,b);
  oper(x,z,y);
  vivod(x,z,y,res);
  message_6();
  cin>>d;
  if(d=='3')
   {
   tofile(res);
   message_6();
   cin>>d;
   }
  }
 }
 while(d!='4');
 cout<<"  Dlja vihoda najmite 'Enter'.";
 cin.get();
 cin.get();
 return 0;
}
Извиняюсь за кривоватость кода. Ошибка в строке default функции vvod(), без него работает нормально. Что я делаю не так?
Заранее спасибо!

Последний раз редактировалось D.Max; 14.06.2010 в 02:49.
D.Max вне форума Ответить с цитированием
Старый 14.06.2010, 04:44   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

У Вас в предыдущем кейсе объявлена переменная
Код:
case'3':
  ifstream f("file.txt");
Ай-яй-яй так делать
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 14.06.2010, 10:23   #3
D.Max
Новичок
Джуниор
 
Регистрация: 14.06.2010
Сообщений: 2
По умолчанию

Спасибо, сам бы не додумался. Сделал вот так
Код:
float vvod(char a,float b)
 {
 ifstream f("file.txt");
 switch(a)
  {
  case'1':
  cout<<"\n"<<"  Vvedite chislo:";
  cin>>b ;
  break;
  case'2':
  srand(time(0));
  b=rand()%100;
  cout<<"\n"<<"  Sluchajnoe chislo:"<<b<<"\n";
  break;
  case'3':
  f>>b;
  cout<<"\n"<<"  Chislo iz fajla:"<<b<<"\n";
  break;
  default:
  cout<<"\n"<<"  Nevernaja komanda!"<<"\n";
  break;
  }
 return(a,b);
 }
D.Max вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор плюса в операторе выбора Golovastik Общие вопросы C/C++ 12 24.08.2009 21:45
Вопрос об дружественом операторе << Руслантус Общие вопросы C/C++ 2 21.01.2009 19:48
Не проверяется логическое выражение в операторе While lsd11 Помощь студентам 2 15.10.2008 19:09
ошибка в операторе case wowka Помощь студентам 5 24.07.2008 11:47
Вопрос об операторе IF Лёка Общие вопросы Delphi 4 01.02.2008 22:33