Im i think i am very close....what did i do wrong

  • Context:
  • Thread starter Thread starter needOfHelpCMath
  • Start date Start date
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
3 replies · 6K views
needOfHelpCMath
Messages
70
Reaction score
0
Replace any space ' ' by '_' in 2-character string passCode. If no space exists, the program should not print anything. Sample output for the given program:
1_

Code:
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main() {
   string passCode;
   passCode = "1 ";
 
  if  (isspace(passCode.at(1))) {
  passCode = passCode.at(0);
  passCode = "_";
  
  }
cout << "1";
 
   cout << passCode << endl;
   return 0;
}

Testing: "1 "
Your output: 1_
✖ Testing: "a1"
Expected output: a1
Your output: 1a1
 
Last edited by a moderator:
Physics news on Phys.org
This code has some problems:
Code:
if  (isspace(passCode.at(1))) {
     passCode = passCode.at(0);
   passCode = "_";
  }
cout << "1";

passCode = passCode.at(0); This is an assignment of a character to a string. Actually, I was surprised that this didn't cause a crash. Turns out this is valid, but the result is that passCode is now a string of length 1 with only component 'a'.

Next you immediately execute passCode="_"; This is okay, but now passCode is the different string of length 1, namely "_".

Your specifications were that no output is made unless string passCode is changed. Here's a correct version:
Code:
int main() {
   string passCode;
   passCode = "1 ";
   bool changed = false;
   if (isspace(passCode.at(0))) {
      passCode.at(0) = '_';
      changed = true;
   }
   if (isspace(passCode.at(1))) {
      passCode.at(1) = '_';
      changed = true;
   }
   if (changed) {
      cout << passCode << endl;
   }
   return(0}
}
 
johng said:
This code has some problems:
Code:
if  (isspace(passCode.at(1))) {
     passCode = passCode.at(0);
   passCode = "_";
  }
cout << "1";

passCode = passCode.at(0); This is an assignment of a character to a string. Actually, I was surprised that this didn't cause a crash. Turns out this is valid, but the result is that passCode is now a string of length 1 with only component 'a'.

Next you immediately execute passCode="_"; This is okay, but now passCode is the different string of length 1, namely "_".

Your specifications were that no output is made unless string passCode is changed. Here's a correct version:
Code:
int main() {
   string passCode;
   passCode = "1 ";
   bool changed = false;
   if (isspace(passCode.at(0))) {
      passCode.at(0) = '_';
      changed = true;
   }
   if (isspace(passCode.at(1))) {
      passCode.at(1) = '_';
      changed = true;
   }
   if (changed) {
      cout << passCode << endl;
   }
   return(0}
}

the thing is that the code i cannot use "bool" whatever you see there i can use only... only isspace() at.() and if statements
 
needOfHelpCMath said:
the thing is that the code i cannot use "bool" whatever you see there i can use only... only isspace() at.() and if statements

Anyways THANK YOU so much this is my first time learn C++ with no background of programming thank you a lot appreciate it