Окно консоли C ++ мигает, а затем исчезает

Итак, вот калькулятор налога с продаж, который я сделал, и окно консоли мигает, а затем исчезает. Просто интересно, что я сделал не так. Также я чувствую, что юнит-тест встроен в сам код, но мне было интересно, как юнит-тест будет применяться к таким параметрам.

#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <math.h>

using namespace std;

void p(double x)
{
cout << fixed << setprecision(2) << x;
}

int main()
{
ifstream basketFile;
basketFile.open("basket.txt");

int howMany;
double price;
double salesTax = 0;
double total = 0;
bool correct = true;

string printIt;
string second;

string garbage1;
string garbage2;
string garbage3;
string garbage4;

string whichImported;

while(!basketFile.eof())
{
//how many of the specific item do you have?
basketFile >> howMany;

//what is the item?
basketFile >> printIt;

cout << howMany << " ";

if(printIt == "book")
{
basketFile >> garbage1; //throw away "at"
basketFile >> price; //get price of book

total += price;

cout << printIt;
cout << " ";
cout << garbage1;
cout << " ";
p(price);
cout << endl;
}
else if(printIt == "music")
{
basketFile >> garbage1; //throw away "CD"basketFile >> garbage2; //throw away "at"
basketFile >> price;

salesTax = ((10)*price)/100;

price += salesTax;
total += price;

cout << printIt;
cout << " ";
cout << garbage1;
cout << " ";
cout << garbage2;
cout << " ";
p(price);
cout << endl;
}
else if(printIt == "chocolate")
{
basketFile >> garbage1;
basketFile >> garbage2;

basketFile >> price;cout << printIt;
cout << " ";
cout << garbage1;
cout << " ";
cout << garbage2;
cout << " ";
p(price);
cout << endl;
}
else if(printIt == "imported")
{
basketFile >> second;

if(second == "box")
{
basketFile >> garbage1;
basketFile >> garbage2;
basketFile >> garbage3;

basketFile >> price;

cout << printIt;
cout << " ";
cout << second;
cout << " ";
cout << garbage1;
cout << " ";
cout << garbage2;
cout << " ";
cout << garbage3;
cout << " ";
p(price);
cout << endl;

salesTax += (5)*(price)/100;

total += price;
}
else
{
basketFile >> garbage1;
basketFile >> garbage2;
basketFile >> garbage3;

basketFile >> price;

cout << printIt;
cout << " ";
cout << second;
cout << " ";
cout << garbage1;
cout << " ";
cout << garbage2;
cout << " ";
cout << garbage3;
cout << " ";
p(price);
cout << endl;

salesTax += ((15)*price)/100;

total += price;
}
}
else if(printIt == "packet")
{
basketFile >> garbage1;
basketFile >> garbage2;
basketFile >> garbage3;
basketFile >> garbage4;

basketFile >> price;

cout << printIt;
cout << " ";
cout << garbage1;
cout << " ";
cout << garbage2;
cout << " ";
cout << garbage3;
cout << " ";
cout << garbage4;
cout << " ";
p(price);
cout << endl;

total += price;
}
else if(printIt == "bottle")
{
basketFile >> garbage1;
basketFile >> garbage2;
basketFile >> garbage3;

basketFile >> price;

cout << printIt;
cout << " ";
cout << garbage1;
cout << " ";
cout << garbage2;
cout << " ";
cout << garbage3;
cout << " ";
p(price);
cout << endl;

salesTax += (10)*(price)/100;

total += price;
}
else
{
cout << "\nIncorrect parameters." << endl;
correct = false;
break;
}
}

if(correct)
{
total += salesTax;

cout << "Sales Taxes: ";
printf("%.1f",salesTax);
cout << 0 << endl;
cout << "Total: ";
p(total);
cout << endl;

}
else
{
return 0;
}
}

0

Решение

Под «миганием» я предполагаю, что вы имеете в виду Console всплывает, ваше приложение запускается, а затем автоматически закрывается. Это нормальное поведение.

Добавьте строку для получения ввода от пользователя, и окно останется открытым до тех пор, пока ввод не будет введен. Как «нажмите любую клавишу, чтобы закрыть».

Если вы запускаете приложение из Command Line, вы увидите, что после завершения выполнения управление возвращается Command Line это то, что закрывает Окно, ваш процесс завершен.

Предлагаемые приемы использования точек останова также жизнеспособны, если вы просто хотите увидеть, что было выведено до закрытия приложения.

Вы запрашиваете пример кода, проще всего было бы

#include <conio.h>

В начале, а затем, до вашего последнего }

_getch(); // getch() might be deprecated with your compiler
4

Другие решения

Вы можете использовать в конце вашего заявления:

char x;
cin >> x;

или используйте старую функцию C getch () из conio.h
Программа будет ждать нажатия вами любой клавиши

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector