Using pointers to strip sentence of spaces

Please support our C++ advertiser: Intel Parallel Studio Home
Reply

Join Date: Oct 2009
Posts: 2
Reputation: that_fox is an unknown quantity at this point 
Solved Threads: 0
that_fox that_fox is offline Offline
Newbie Poster

Using pointers to strip sentence of spaces

 
0
  #1
Oct 5th, 2009
Hello, this seems like it will be a helpful community. For my degree I need to take a basic C++ class and the only C++ class the offer that fits is an 8 week class, it really goes too fast. Anyways, I've been trying my hardest, but my brain really doesn't think in code, so I've probably made quite a few dumb errors that I can't see.

For this assignment the teacher wants us to write a program that will take an input of a sentence. Then he wants us to pass it to a function that uses pointers to strip the sentence of all spaces. It's really throwing me for a loop, I think I might be on the right track, although it's giving me several compile errors right now. Any help would be greatly appreciated!

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void print(char sentence2[],int size);//function to print sentence when done
  5.  
  6. void stripWhite(char point[],char sentence2[],int size);//uses pointers to strip sentence of spaces
  7.  
  8. int main ()
  9. {//main
  10.  
  11. char sentence1[1000];//first array to obtain sentence
  12.  
  13. int size;//integer to decide how big new array should be
  14.  
  15. cout << "Please enter a sentence and I will strip it of all spaces." << endl;
  16.  
  17. cin >> sentence1;//input for first array
  18.  
  19. for(int i=0;i<1000;i++)//for loop to find out size of array
  20. {//for
  21. if(sentence1[i] >= 'a' && sentence1[i] <= 'z' || sentence1[i] == ' ' || sentence1[i] == ',' || sentence1[i] == '.')
  22. {//if
  23. size++;
  24. }//if
  25. }//for
  26.  
  27. char sentence2[size];//new array with exact size it should be
  28.  
  29. for(int y;y<size;y++)//for loop to copy contents of first array to second
  30. {//for
  31. sentence2[y]=sentence1[y];
  32. }//for
  33.  
  34. char point;//soon to be pointer
  35.  
  36. for(int y;y<size;y++)//for loop to get point to become a pointer to second array
  37. {//for
  38. point[y]=&sentence2[y];
  39. }//for
  40.  
  41. cout << endl;
  42.  
  43. stripWhite(sentence2,point,size);
  44.  
  45. return 0;
  46. }//main
  47.  
  48. void print(char sentence2[],int size)//print function
  49. {//void print
  50.  
  51. for(int z;z<size;z++)
  52. {//for
  53. cout << sentence2[z];
  54. }//for
  55.  
  56. }//void
  57.  
  58. char stripWhite(char point[],char sentence2[],int size)//function to strip sentence of spaces
  59. {//char stripWhite
  60.  
  61. for(int y;y<size;y++)//for loop to only set non space characters to second array
  62. {//for
  63. if(point[y]!=' ')//if to decide if it is a space or not
  64. {//if
  65. sentence2[y]=*point[y];
  66. }//if
  67. }//for
  68.  
  69. print(sentence2,size);//function call to print finished sentence
  70.  
  71. }//char
Reply With Quote Quick reply to this message  
Join Date: Dec 2008
Posts: 1,408
Reputation: firstPerson is just really nice firstPerson is just really nice firstPerson is just really nice firstPerson is just really nice firstPerson is just really nice 
Solved Threads: 180
firstPerson's Avatar
firstPerson firstPerson is offline Offline
Nearly a Posting Virtuoso

Re: Using pointers to strip sentence of spaces

 
0
  #2
Oct 5th, 2009
If this is what you mean.

BTW, where is the pointers.

And a rule of thumb, when you are using char *, instead of string,
you have a bug(In my opinion);

  1. //str is the string passed. Key is the key that seperates the word
  2. //does not use pointers.
  3. void Strip(std::string str, char key)
  4. {
  5. string Temp = "";
  6.  
  7. for(int i = 0; i < str.size(); i++) //Run through the string
  8. {
  9. if(str[i] == key)
  10. {
  11. // copy str from 0 to i into temp
  12. }
  13. }
  14. return Temp;
  15. }
1) What word becomes shorter if you add a letter to it? 
      [ Solved by : niek_e, Paul Thompson, SgtMe, murtan, xavier666, jonsca]
2) What does this sequence  equal to :  (.5u - .5a)(.5u-.5b)(.5u-.5c) ...
      [*solved by : murtan, xavier666]
3) What is the 123456789th prime numer?
Reply With Quote Quick reply to this message  
Join Date: Oct 2009
Posts: 2
Reputation: that_fox is an unknown quantity at this point 
Solved Threads: 0
that_fox that_fox is offline Offline
Newbie Poster

Re: Using pointers to strip sentence of spaces

 
0
  #3
Oct 5th, 2009
Originally Posted by firstPerson View Post
If this is what you mean.

BTW, where is the pointers.

And a rule of thumb, when you are using char *, instead of string,
you have a bug(In my opinion);
I thought that when I put "point[y]=&sentence2[y];" it was getting point to refer to the memory space instead of the value. And then in the stripWhite function "sentence2[y]=*point[y];" was referring to the value within the pointer. Is that not using pointers? I'm sorry to say I'm confused when it comes to pointers. How would I get my program to use pointers if it is not already?

And also, I am not against using strings instead of character arrays, it's just that my professor did not touch on strings much. Although I could use them in this program.
Reply With Quote Quick reply to this message  
Join Date: Apr 2008
Posts: 64
Reputation: chunalt787 is an unknown quantity at this point 
Solved Threads: 1
chunalt787 chunalt787 is offline Offline
Junior Poster in Training
 
0
  #4
Oct 6th, 2009
Originally Posted by that_fox View Post
I thought that when I put "point[y]=&sentence2[y];" it was getting point to refer to the memory space instead of the value. And then in the stripWhite function "sentence2[y]=*point[y];" was referring to the value within the pointer. Is that not using pointers? I'm sorry to say I'm confused when it comes to pointers. How would I get my program to use pointers if it is not already?

And also, I am not against using strings instead of character arrays, it's just that my professor did not touch on strings much. Although I could use them in this program.
You are close on the "sentence2[y]=*point[y];" part but sentence2[y] must be a pointer. As you have it in your code it is just a plain old variable. The & does return the address of the object, in this case however you cant assign that address to a character. While the compiler might let you do it(if you assign an int to a char it will set the char to be whatever value the char is on the ascii table) I just wrote this little tutorial on pointers. See if it helps. Check the end to see about references.

http://mikectamu.blogspot.com/2009/1...explained.html

As far as the diff between strings and pointer arrays, in C there really is no difference, but in C++ string objects are handled a little differently. A character array can easily be used as a string. I would try to debug your program but since you aren't even using pointers and will have to rewrite it anyways it would seem to be a waste of time. Try rewriting it with the pointers in tact and then if you have problems post it up on here.

Hope that helps!!
Reply With Quote Quick reply to this message  
Reply

Message:


Thread Tools Search this Thread



Tag cloud for C++
About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC