c++ - Array of strings converted into numbers and sorted -
as beginner trying input 1 digit numbers in word form, sort , display them numbers.
on inputting :
seven 3 5 1 nil
the output is
0 1 3 5 7 how can stop 0 displaying , being populated in num array in first place?
#include <iostream> #include <algorithm> #include <string> #define n 5 using namespace std; string words[n]; int nums[n],size; void input(){ cout<<"enter in word form, numbers sorted\n"; for( int = 0; ; i++){ cin >> words[i]; if( words[i] == "nil" ) break; } size = sizeof words/sizeof(string); } void convert(){ for( int = 0; words[i]!= "nil" ; i++ ){ if ( words[i] == "one" ) nums[i] = 1; // else cout<<"wrong input\n"; } } void sort(){ sort(nums, nums + size); ( int = 0; < size; i++ ) cout<< nums[i]<<endl; } int main(){ input(); convert(); sort(); system("pause"); return 0; } this works fine, erred @ length of words..to remove element nil (used sentinel) consideration of sort had reduce size 1 . code works fine , way intended to.
//headers , std string words[n]; int nums[n],size; void input(){ cout<<"enter in word form, numbers sorted\n"; for( int = 0; ; i++){ cin >> words[i]; if ( words[i] == "nil" ) break; } size = sizeof words/sizeof(string) - 1;//one nil } void convert(){ for( int = 0; words[i]!= "nil" ; i++ ){ if ( words[i] == "one" ) nums[i] = 1; else if ( words[i] == "two") // } } void sort(){ sort(nums, nums + size); ( int = 0; < size; i++ ) cout<< nums[i]<<endl; } int main(){ // }
words array of size n, means valid indices words 0 n - 1. code uses indices 1 n. this
string words[n]; ... for( int = 1; ; i++){ ... for( int = 1; i<= n; i++ ){ if ( words[i] == "one" ) ... ( int = 1; <= n; i++ ) cout<< nums[i]<<endl; should this
string words[n]; ... for( int = 0; ; i++){ ... for( int = 0; < n; i++ ){ if ( words[i] == "one" ) ... ( int = 0; < n; i++ ) cout<< nums[i]<<endl; in c++ arrays start @ zero.
Comments
Post a Comment