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

Popular posts from this blog

php - Why I am getting the Error "Commands out of sync; you can't run this command now" -

linux - Does gcc have any options to add version info in ELF binary file? -

java - Are there any classes that implement javax.persistence.Parameter<T>? -