Если выходит default то помимо "error" еще появляются какие то цифры

struct param 
{   
   bool var = true;
   double S, V, T;
   char op;
};

void calculate(param& par)
{   

   switch (par.op) 
   {
   case 'V': 

       std::cout << "input (S)=";
       std::cin >> par.S;
       std::cout << "input (T)=";
       std::cin >> par.T;
       par.V = par.S / par.T;
       break;
   case 'S': 
       std::cout << "input (V)=";
       std::cin >> par.V;
       std::cout << "input (T)=";
       std::cin >> par.T;
       par.S = par.V * par.T;
       break;

   case 'T': 
       std::cout << "input (S)=";
       std::cin >> par.S;
       std::cout << "input (V)=";
       std::cin >> par.V;
       par.T = par.S / par.V;
       break;
   default: 
           std::cout << "error\n";
           break;

   }

   return;
}
int main()
{
   while (true) 
   {
   param p;
   std::cout << "Chto ichem? (S,V,T): "; 
   std::cin >> p.op;
   calculate(p);
   std::cout << "V=" << p.V  << "\n"; 
   std::cout << "S=" << p.S << "\n";
   std::cout << "T=" << p.T << "\n";
   system("pause");
   return 0;}}**```

 Вот что выдает консоль если происходит default
Chto ichem? (S,V,T): s                                                                                                                  
error                                                                                                                                   
V=6.12641e-322                                                                                                                          
S=2.07384e-317                                                                                                                          
T=0                                                                                                                                     
sh: 1: pause: not found

Ответы (2 шт):

Автор решения: Стас

Цифры выводятся из за того, что у Вас в main есть строки:

std::cout << "V=" << p.V  << "\n"; 
std::cout << "S=" << p.S << "\n";
std::cout << "T=" << p.T << "\n";

И они выполняются независимо от того, что ввёл пользователь. И ещё, зачем нужен бесконечный цикл while(true)?

P.S я не рассматривал Ваш код, так что while (true), возможно нужен)

→ Ссылка
Автор решения: Стас

цикл не нужен, добавил так как в задание братика было использовать цикл, хотел как то задействовать "можно было вернуться к выбору после первого раза, а не по новой запускать" но столкнулся с проблемой еще до этого. не подскажете как можно это исправить?

Я перевёл вашу функцию в формат bool, чтобы можно было отследить была ли вызвана ошибка. И если она выла вызвана - вывод цифр не происходит. Поменял std::cout << "Chto ichem? (S,V,T): "; на русский аналог (просто не люблю транслит). Чтобы в консоль не выводились "крякозябры" добавил setlocale(LC_ALL,""); . Также вам нужно сделать: правка -> выбрать кодировку -> widows1251 -> перезагрузить и сохранить в этой кодировке. Добавил возможность повторения программы без перезапуска через отслеживание клавиш с помощью _getch(); Вроде и всё

#include <iostream>
#include <conio.h>

struct param
{
   bool var = true;
   double S, V, T;
   char op;
};

bool calculate(param& par, bool last)
{

   switch (par.op)
   {
   case 'V':

       std::cout << "input (S)=";
       std::cin >> par.S;
       std::cout << "input (T)=";
       std::cin >> par.T;
       par.V = par.S / par.T;
       break;
   case 'S':
       std::cout << "input (V)=";
       std::cin >> par.V;
       std::cout << "input (T)=";
       std::cin >> par.T;
       par.S = par.V * par.T;
       break;

   case 'T':
       std::cout << "input (S)=";
       std::cin >> par.S;
       std::cout << "input (V)=";
       std::cin >> par.V;
       par.T = par.S / par.V;
       break;
   default:           
           std::cout << "error\n";
           last = false;
           break;

   }

   return last;
}
int main()
{
   bool last = true;
   setlocale(LC_ALL,"");
   int key = 121;
   while (key!=110)
   {
   system("cls");
   param p;
   std::cout << "Что ищем? (S,V,T): ";
   std::cin >> p.op;
   last = calculate(p, last);
   if (last){
   std::cout << "V=" << p.V  << "\n";
   std::cout << "S=" << p.S << "\n";
   std::cout << "T=" << p.T << "\n";
   }
   last = true;
   std::cout << "Хотите повторить?(y/n)";
   key = _getch();
   }
   std::cout << std::endl;
   system("pause");
   return 0;
}
→ Ссылка