#include <iostream>
#include<conio.h>
using namespace std;
int main()
{
int hold;
int swapNumber=0;
int compare=0;
int array[10];
for(int i=0; i<10; i++)
{
cout<<"Enter 10 numbers: "<<endl;
cin>>array[i];
}
cout<<endl;
// what user inputed
cout<<"Originally entered array by the user is: "<<endl;
for(int k=0; k<10; k++)
{
cout<<array[k];
cout<<endl;
}
cout<<endl;
//begin bubblesort method
for(int i=0; i<9; i++)
{
for(int k=0; k<9; k++)
{
compare++;
if(array[k]>array[k+1])
{
hold=array[k];
array[k]=array[k+1];
array[k+1]=hold;
swapNumber++;//adding swap count by 1
}//end of if
} //end of for j
} // end of for i
//when sorted sm to large
cout<<"Sorted Array is: "<<endl;
for(int i=0; i<10; i++)
{
cout<<array[i]<<endl;
}
//how many times numbers are swapped
cout<<"Number of times Swapped: "<<swapNumber<<endl;
//how ,many times numbers are compared
cout<<"Number of times Compared: "<<compare<<endl;
getch();
}
我的任务是添加一个异常处理程序,它指出“Error!ONLY INTEGER INPUT ALLOWED”。处理程序应该捕获双精度和字符串。我尝试过尝试和捕捉方法,但我不知道在哪里放置它以便它可以工作。我也读过关于catch all方法,这看起来像我需要做的。我刚刚完成了交换和比较的计数器方法,我相信它工作正常。
答案 0 :(得分:2)
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int hold, swapNumber = 0, compare = 0, array[10];
const string Error = "Error! ONLY INTEGER INPUT ALLOWED!";
cout << "Enter 10 numbers: " << endl;
try
{
for ( int i = 0; i < 10; i++ )
{
cin >> array[i];
if ( !cin ) // Error in reading input stream
{
throw Error;
}
}
}
catch ( const string& E )
{
cout << E << endl;
return 0;
}
cout << endl;
cout << "Originally entered array by the user is: " << endl;
for ( int k = 0; k < 10; k++ )
{
cout << array[k] << endl;
}
cout << endl;
for ( int i = 0; i < 9; i++ )
{
for ( int k = 0; k < 9; k++ )
{
compare++;
if ( array[k] > array[k + 1] )
{
hold = array[k];
array[k] = array[k + 1];
array[k + 1] = hold;
swapNumber++;
}
}
}
cout << "Sorted Array is: " << endl;
for ( int i = 0; i < 10; i++ )
{
cout << array[i] << endl;
}
cout << endl;
cout << "Number of times Swapped: " << swapNumber << endl;
cout << "Number of times Compared: " << compare << endl;
getch();
}