Написал по заданию небольшую програмку (которая еще будет совершенсвоваться в течение 12 ступеней(заданий) П.С.: занимаюсь по книжке Страуструпа: принципы и практика программирования)
Так вот на первый взгляд при запуске программы все отлично идет. При введении чисел они вроде бы корректно сравниваются и т.п. по возможностям проги. Но потом если вводить случайные большие числа типа "654219684" и "987641" программа может сказать, что 654219684<987641 и что 654219684 наименьшее число из двух.
в чем проблема?
#include<iostream>
#include<fstream>
#include<sstream>
#include<cmath>
#include<cstdlib>
#include<string>
#include<list>
#include<vector>
#include<algorithm>
#include<stdexcept>
#include<map>
using namespace std;
int main()
{
vector<string> varcan;
string arc;
cout << "Пожалуйста, введите два числа и символ '|' : \n";
int i = 0;
int ii = 1;
for(;;i+=2,ii+=2)
{
while(cin >> arc)
{
if (arc == "|" ) {break;}
varcan.push_back(arc);
}
else if (varcan[i]>varcan[ii])
{
cout << "Наименьшее значение из двух равно : " << varcan[ii]
<< "\nЧисла : "<< varcan[ii] <<'<'<< varcan[i] << "\n" ;
}
else if (varcan[ii]>varcan[i])
{
cout << "Наименьшее значение из двух равно : " << varcan[i]
<< "\nЧисла : "<< varcan[i] <<'<'<< varcan[ii] << "\n" ;
}
else
cout << "Размер варкана "<< varcan.size() << endl;
if (varcan.size()> 100) {break;}
}
}
Пользователь решил продолжить мысль 28 Октября 2011, 20:16:12:
И еще скажите пожалуйста, как изменить правильно тип переменной arc на double. Просто необходимо для окончания ввода ввести символ "|" , а сравнивать символьные и численные литералы нельзя.