사용자로부터 입력을 받아서 그 입력을 버블 정렬하여 결과를 출력하려고합니다. 내 코드 :다른 값으로 공백을 정렬하는 방법
#include<iostream>
using namespace std;
class bubble
{
public :
string arr[20];
//Number of elements in array
int n;
//Function to accept array elements
void read()
{
while(1)
{
cout<<"\nEnter the number of elements in the array:";
cin>>n;
if(n<=20)
break;
else
cout<<"\n Array can have maximum 20 elements \n";
}
//display the header
cout<<"\n";
cout<<"----------------------\n";
cout<<"Enter array elements \n";
cout<<"----------------------\n";
//Get array elements
for(int i=0; i<n ;i++)
{
cout<<"<"<<i+1<<"> ";
cin>>arr[i];
}
}
//Bubble sort function
void bubblesort()
{
for(int i=1;i<n ;i++)//for n-1 passes
{
//In pass i,compare the first n-i elements
//with their next elements
for(int j=0; j<n-1; j++)
{
if(arr[j] > arr[j+1])
{
string temp;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
void display()
{
cout<<endl;
cout<<"----------------------\n";
cout<<"Sorted array elements \n";
cout<<"----------------------\n";
for(int j=0; j<n; j++)
cout<<arr[j]<<endl;
}
};
int main()
{
//Instantiate an instance of class
bubble list;
// Function call to accept array elements
list.read();
// Function call to sort array
list.bubblesort();
//Function call to display the sorted array
list.display();
return 0;
}
코드는 잘 실행되고 있지만, 입력으로 문자열에 공백 또는 들여 쓰기 값을 허용하지 않습니다. 이 값을 받아 들일 수있는 방법이 있습니까?
// Extract the \n that's left from entering n
getline(cin, arr[0]); // We'll read it again in the loop
for(int i=0; i<n ;i++)
{
cout<<"<"<<i+1<<"> ";
getline(cin, arr[i]);
}
'cin'가이 구분 기호의 집합에 따라 입력을 분할 즉, 토큰 화됩니다. 이러한 구분 기호는 기본적으로 공백입니다. – maddin45