04-19-2005, 10:21 PM | #1 (permalink) |
Psycho
Location: cali
|
replacing caps with lower case (c++)
hi all, i'm stuck on this here and hope you guys can lend a hand
i'm supposed to write a program that watches for an accidental caps lock press that would lead to a string of characters such as 'tHIS IS THE ERROR'. what the program would do is find such occurences and fix it. ie replace the 't' with a 'T' and the remaining caps with their corresponding lower case values. this is what i have so far. this just replaces all caps with lower cases. i'm not sure how i would locate more than 1 consecutive upper case character. or how i would accept long string input from the keyboard. thanks #include <stdio.h> main() { int i; char z[20]; gets(z); for(i=0; i<20; i=i+1) { if (z[i]>='A' && z[i]<='Z') { z[i]=z[i]+ 'a'-'A'; } } printf("%s\n",z); getchar(); }
__________________
no man or woman is worth your tears - and the one who is, won't make you cry question authority, don't ask why, just do it! |
04-20-2005, 03:00 AM | #2 (permalink) |
Pure Chewing Satisfaction
Location: can i use bbcode [i]here[/i]?
|
make sure to use the "code" block when you can:
Code:
#include <stdio.h> main() { int i; char z[20]; gets(z); for(i=0; i<20; i=i+1) { if (z[i]>='A' && z[i]<='Z') { z[i]=z[i]+ 'a'-'A'; } } printf("%s\n",z); getchar(); } Hopefully that'll get you in the right direction.
__________________
Greetings and salutations. Last edited by Moskie; 04-20-2005 at 03:05 AM.. |
04-20-2005, 05:17 AM | #3 (permalink) |
"Officer, I was in fear for my life"
Location: Oklahoma City
|
There are a number of things to take into consideration here. Like how many consecutive capital characters do you need to find after a lower case character to know to do the conversion? Do you need to check for capital characters on both sides of a space to make sure you aren't converting an abreviation? Will your input contain an accidental caps sequence in the middle of the sentence or will it always be from the second character on?
Handling the long string is easy, increase the size of your array. You may also want to look at some additional functions available to you in C such as isupper, islower, toupper and tolower. If you may have other characters thrown at you, you may also want to look at isalpha. Knowing more of your homework assignment details will help us point you in the right direction. |
04-20-2005, 12:04 PM | #4 (permalink) |
Psycho
Location: cali
|
thanks all...that was basically the homework problem...what i provided...and i'll put in 'code' blocks next time...thanks
__________________
no man or woman is worth your tears - and the one who is, won't make you cry question authority, don't ask why, just do it! |
04-20-2005, 08:18 PM | #5 (permalink) |
Devils Cabana Boy
Location: Central Coast CA
|
here is a hint, break it into an array of char, get the ascii code of each one, check to see where in ascii if it is 65 to 90, it is A to Z, add 32 to get a to z. (i am working in decimal, you can find hex ascii charts too.)
http://www.jimprice.com/ascii-0-127.gif
__________________
Donate Blood! "Love is not finding the perfect person, but learning to see an imperfect person perfectly." -Sam Keen |
05-07-2005, 01:13 PM | #7 (permalink) | |
Upright
|
Quote:
#include <string> #include <iostream> #include <cctype> int main() { //get a sentence. std::string mystring; getline(cin,full_name); //force the first character of the string to uppercase mystring[0]=toupper(mystring[0]); //loop through the rest of the string and force them to lowercase, as long //as the previous boolean previousIsCapital=true; for (int i=1;i < mystring.length()-1;++i) { // enforce no two capitals in a row. will screw up acronyms, though. if (previousIsCapital) { tolower(mystring[i]); previousIsCapital = false; else previousIsCapital = true; } } return 0; } The requirements are too vague. How is a computer ever supposed to understand grammar? How would it know that "LOL" is an acronym and is supposed to be all caps? Things like that... |
|
06-09-2005, 11:23 AM | #8 (permalink) |
Addict
|
@ cmdrfunk & slant eyes:
Like Moskie said, please use the [ code ] tags when inserting code. Even though you've already posted, the "edit" button can be used anytime FYI. That being said, great application slant eyes!! I've been looking for an outlet to get this idea into something materialistic. My idea first stemmed to get this in browser use. Namely Firefox. After one a many, too many, times running into a slew of words suddenly becoming accidentally capitalized by way of my blunders on the keyboard. I then thought to myself can we get this inserted into the browser as a default feature? Maybe using some kind of inconspicuous key combo like highlighting the accidental CAP string then pressing and holding shift? Or, maybe an extension utilizing the code? Including artifical intelligence, where you could have it detect punctuation and alter the CAPS to leave/re-CAP certain lettters. Such as the first letter of any sentence while lower-casing the rest of the accidental CAPS, etc. Any way my brainstorms went something like that and now a couple months later you made this thread. So my question to you is, how does this code work in terms of functionality? Can it be reworked as just a piece of code like Javascript that executes when initiated like a bookmarklet? I realize it's written in C++ and that indicates an application but I've seen C++ used outside of that common misconceived notion. Also, does it run in the background / Is it a background task? Finally, if I wanted to use this for myself, how would I? As an end-user. Do you have it available for download anywhere or was this more of a private project? I'd be interested in trying it out and trying to get it incorporated into FF [if not possible, then as an potential extension].
__________________
Slowly but surely getting over the loss of TFP v. 3.0. Where the hell am I?.... Showering once a month does not make you a better person. "The ultimate measure of a man is not where he stands in moments of comfort, but where he stands at times of challenge and controversy." Martin Luther King, Jr. Last edited by oldtimer; 06-09-2005 at 12:19 PM.. |
Tags |
caps, case, lower, replacing |
|
|