How to make sure that two strings only have certain alphabets in c++
Aim is to make sure that the user entered input for string 1 and string 2 contains only characters A,T,G or C in any order. If either string contains another other character then error should be displayed. Example:
Input contains error
Error in String #1: aacgttcOgMa
Error in String #2: ggataccaSat
This is my attempt at LCS.cpp file code:
#include "LCS.h"
#include <string>
using namespace std;
bool validate(string strX, string strY)
{
string x = strX;
string y = strY;
char searchItem = 'A';
char searchItem = 'C';
char searchItem = 'G';
char searchItem = 'T';
int numOfChar = 0;
int m = strX.length();
int n = strY.length();
for (int i = 0; i < m; i++)
{
if (x[i] == searchItem)
{
numOfChar++;
}
for (int i = 0; i < n; i++)
{
if (y[i] == searchItem)
{
numOfChar++;
}
}
}
This is my LCS.h file code:
#pragma once
#ifndef LCS_H
#define LCS_H
#include <string>
using namespace std;
bool validate(string strX, string strY);
#endif
And my driver file "Driver6.cpp" has this code:
#include "LCS.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
string strX, strY;
cout << "String #1: ";
cin >> strX;
cout << "String #2: ";
cin >> strY;
//validate the input two strings
if (validate(strX, strY) == false)
{
return 0;
}
int m = strX.length();
int n = strY.length();
}
c++ string dynamic char lcs
|
show 2 more comments
Aim is to make sure that the user entered input for string 1 and string 2 contains only characters A,T,G or C in any order. If either string contains another other character then error should be displayed. Example:
Input contains error
Error in String #1: aacgttcOgMa
Error in String #2: ggataccaSat
This is my attempt at LCS.cpp file code:
#include "LCS.h"
#include <string>
using namespace std;
bool validate(string strX, string strY)
{
string x = strX;
string y = strY;
char searchItem = 'A';
char searchItem = 'C';
char searchItem = 'G';
char searchItem = 'T';
int numOfChar = 0;
int m = strX.length();
int n = strY.length();
for (int i = 0; i < m; i++)
{
if (x[i] == searchItem)
{
numOfChar++;
}
for (int i = 0; i < n; i++)
{
if (y[i] == searchItem)
{
numOfChar++;
}
}
}
This is my LCS.h file code:
#pragma once
#ifndef LCS_H
#define LCS_H
#include <string>
using namespace std;
bool validate(string strX, string strY);
#endif
And my driver file "Driver6.cpp" has this code:
#include "LCS.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
string strX, strY;
cout << "String #1: ";
cin >> strX;
cout << "String #2: ";
cin >> strY;
//validate the input two strings
if (validate(strX, strY) == false)
{
return 0;
}
int m = strX.length();
int n = strY.length();
}
c++ string dynamic char lcs
You appear to be trying to create 4 separate variables with the same name. All you need to do is loop over the string and check that each character is either A, G, T or C, using an if-statement. You don't need those variables.
– Neil Butterworth
Nov 13 '18 at 21:13
@NeilButterworth could you show me how you write an if function which can look for two different strings?
– ConfusedProgrammer
Nov 13 '18 at 21:23
Look through the first string in a loop. Then look through the second string in another loop. And there is no reason for the validate function to take two strings as parameters anyway.
– Neil Butterworth
Nov 13 '18 at 21:26
@NeilButterworth Does this look right for the first string? bool validate(string strX, string strY) { if (strX =! "A" || strX =! "T"|| strX =! "G", strX =! "C") { cout << "Input contains error" << endl; cout << "Error in String #1:" + strX << endl; cout << "Error in String #2:" + strY << endl; } }
– ConfusedProgrammer
Nov 13 '18 at 21:35
No, it doesn't. You need a loop and you do NOT need to validate both strings at once.
– Neil Butterworth
Nov 13 '18 at 21:37
|
show 2 more comments
Aim is to make sure that the user entered input for string 1 and string 2 contains only characters A,T,G or C in any order. If either string contains another other character then error should be displayed. Example:
Input contains error
Error in String #1: aacgttcOgMa
Error in String #2: ggataccaSat
This is my attempt at LCS.cpp file code:
#include "LCS.h"
#include <string>
using namespace std;
bool validate(string strX, string strY)
{
string x = strX;
string y = strY;
char searchItem = 'A';
char searchItem = 'C';
char searchItem = 'G';
char searchItem = 'T';
int numOfChar = 0;
int m = strX.length();
int n = strY.length();
for (int i = 0; i < m; i++)
{
if (x[i] == searchItem)
{
numOfChar++;
}
for (int i = 0; i < n; i++)
{
if (y[i] == searchItem)
{
numOfChar++;
}
}
}
This is my LCS.h file code:
#pragma once
#ifndef LCS_H
#define LCS_H
#include <string>
using namespace std;
bool validate(string strX, string strY);
#endif
And my driver file "Driver6.cpp" has this code:
#include "LCS.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
string strX, strY;
cout << "String #1: ";
cin >> strX;
cout << "String #2: ";
cin >> strY;
//validate the input two strings
if (validate(strX, strY) == false)
{
return 0;
}
int m = strX.length();
int n = strY.length();
}
c++ string dynamic char lcs
Aim is to make sure that the user entered input for string 1 and string 2 contains only characters A,T,G or C in any order. If either string contains another other character then error should be displayed. Example:
Input contains error
Error in String #1: aacgttcOgMa
Error in String #2: ggataccaSat
This is my attempt at LCS.cpp file code:
#include "LCS.h"
#include <string>
using namespace std;
bool validate(string strX, string strY)
{
string x = strX;
string y = strY;
char searchItem = 'A';
char searchItem = 'C';
char searchItem = 'G';
char searchItem = 'T';
int numOfChar = 0;
int m = strX.length();
int n = strY.length();
for (int i = 0; i < m; i++)
{
if (x[i] == searchItem)
{
numOfChar++;
}
for (int i = 0; i < n; i++)
{
if (y[i] == searchItem)
{
numOfChar++;
}
}
}
This is my LCS.h file code:
#pragma once
#ifndef LCS_H
#define LCS_H
#include <string>
using namespace std;
bool validate(string strX, string strY);
#endif
And my driver file "Driver6.cpp" has this code:
#include "LCS.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
string strX, strY;
cout << "String #1: ";
cin >> strX;
cout << "String #2: ";
cin >> strY;
//validate the input two strings
if (validate(strX, strY) == false)
{
return 0;
}
int m = strX.length();
int n = strY.length();
}
c++ string dynamic char lcs
c++ string dynamic char lcs
asked Nov 13 '18 at 21:11
ConfusedProgrammerConfusedProgrammer
11
11
You appear to be trying to create 4 separate variables with the same name. All you need to do is loop over the string and check that each character is either A, G, T or C, using an if-statement. You don't need those variables.
– Neil Butterworth
Nov 13 '18 at 21:13
@NeilButterworth could you show me how you write an if function which can look for two different strings?
– ConfusedProgrammer
Nov 13 '18 at 21:23
Look through the first string in a loop. Then look through the second string in another loop. And there is no reason for the validate function to take two strings as parameters anyway.
– Neil Butterworth
Nov 13 '18 at 21:26
@NeilButterworth Does this look right for the first string? bool validate(string strX, string strY) { if (strX =! "A" || strX =! "T"|| strX =! "G", strX =! "C") { cout << "Input contains error" << endl; cout << "Error in String #1:" + strX << endl; cout << "Error in String #2:" + strY << endl; } }
– ConfusedProgrammer
Nov 13 '18 at 21:35
No, it doesn't. You need a loop and you do NOT need to validate both strings at once.
– Neil Butterworth
Nov 13 '18 at 21:37
|
show 2 more comments
You appear to be trying to create 4 separate variables with the same name. All you need to do is loop over the string and check that each character is either A, G, T or C, using an if-statement. You don't need those variables.
– Neil Butterworth
Nov 13 '18 at 21:13
@NeilButterworth could you show me how you write an if function which can look for two different strings?
– ConfusedProgrammer
Nov 13 '18 at 21:23
Look through the first string in a loop. Then look through the second string in another loop. And there is no reason for the validate function to take two strings as parameters anyway.
– Neil Butterworth
Nov 13 '18 at 21:26
@NeilButterworth Does this look right for the first string? bool validate(string strX, string strY) { if (strX =! "A" || strX =! "T"|| strX =! "G", strX =! "C") { cout << "Input contains error" << endl; cout << "Error in String #1:" + strX << endl; cout << "Error in String #2:" + strY << endl; } }
– ConfusedProgrammer
Nov 13 '18 at 21:35
No, it doesn't. You need a loop and you do NOT need to validate both strings at once.
– Neil Butterworth
Nov 13 '18 at 21:37
You appear to be trying to create 4 separate variables with the same name. All you need to do is loop over the string and check that each character is either A, G, T or C, using an if-statement. You don't need those variables.
– Neil Butterworth
Nov 13 '18 at 21:13
You appear to be trying to create 4 separate variables with the same name. All you need to do is loop over the string and check that each character is either A, G, T or C, using an if-statement. You don't need those variables.
– Neil Butterworth
Nov 13 '18 at 21:13
@NeilButterworth could you show me how you write an if function which can look for two different strings?
– ConfusedProgrammer
Nov 13 '18 at 21:23
@NeilButterworth could you show me how you write an if function which can look for two different strings?
– ConfusedProgrammer
Nov 13 '18 at 21:23
Look through the first string in a loop. Then look through the second string in another loop. And there is no reason for the validate function to take two strings as parameters anyway.
– Neil Butterworth
Nov 13 '18 at 21:26
Look through the first string in a loop. Then look through the second string in another loop. And there is no reason for the validate function to take two strings as parameters anyway.
– Neil Butterworth
Nov 13 '18 at 21:26
@NeilButterworth Does this look right for the first string? bool validate(string strX, string strY) { if (strX =! "A" || strX =! "T"|| strX =! "G", strX =! "C") { cout << "Input contains error" << endl; cout << "Error in String #1:" + strX << endl; cout << "Error in String #2:" + strY << endl; } }
– ConfusedProgrammer
Nov 13 '18 at 21:35
@NeilButterworth Does this look right for the first string? bool validate(string strX, string strY) { if (strX =! "A" || strX =! "T"|| strX =! "G", strX =! "C") { cout << "Input contains error" << endl; cout << "Error in String #1:" + strX << endl; cout << "Error in String #2:" + strY << endl; } }
– ConfusedProgrammer
Nov 13 '18 at 21:35
No, it doesn't. You need a loop and you do NOT need to validate both strings at once.
– Neil Butterworth
Nov 13 '18 at 21:37
No, it doesn't. You need a loop and you do NOT need to validate both strings at once.
– Neil Butterworth
Nov 13 '18 at 21:37
|
show 2 more comments
2 Answers
2
active
oldest
votes
Didn't really want to do this but it seems like the best bet rather than going round the houses in the comments:
#include <string>
#include <iostream>
bool validate( const std::string & s ) {
for ( auto c : s ) {
if ( c != 'A' && c != 'T' && c != 'C' && c != 'G' ) {
return false;
}
}
return true;
}
int main() {
std::string s1 = "ATGCCCG";
std::string s2 = "ATGfooCCCG";
if ( validate( s1 ) ) {
std::cout << "s1 is validn";
}
else {
std::cout << "s1 is not validn";
}
if ( validate( s2 ) ) {
std::cout << "s2 is validn";
}
else {
std::cout << "s2 is not validn";
}
}
Thank you so much. After about an hour, I finally now understand it!!
– ConfusedProgrammer
Nov 13 '18 at 22:47
add a comment |
Another technique:
bool validate(const std::string& s)
{
const static std::string valid_letters("ATCGatcg");
for (auto c: s)
{
std::string::size_type position = valid_letters.find_first_of(c);
if (position == std::string::npos)
{
return false;
}
}
return true;
}
The above code searches a container of valid letters.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53289537%2fhow-to-make-sure-that-two-strings-only-have-certain-alphabets-in-c%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Didn't really want to do this but it seems like the best bet rather than going round the houses in the comments:
#include <string>
#include <iostream>
bool validate( const std::string & s ) {
for ( auto c : s ) {
if ( c != 'A' && c != 'T' && c != 'C' && c != 'G' ) {
return false;
}
}
return true;
}
int main() {
std::string s1 = "ATGCCCG";
std::string s2 = "ATGfooCCCG";
if ( validate( s1 ) ) {
std::cout << "s1 is validn";
}
else {
std::cout << "s1 is not validn";
}
if ( validate( s2 ) ) {
std::cout << "s2 is validn";
}
else {
std::cout << "s2 is not validn";
}
}
Thank you so much. After about an hour, I finally now understand it!!
– ConfusedProgrammer
Nov 13 '18 at 22:47
add a comment |
Didn't really want to do this but it seems like the best bet rather than going round the houses in the comments:
#include <string>
#include <iostream>
bool validate( const std::string & s ) {
for ( auto c : s ) {
if ( c != 'A' && c != 'T' && c != 'C' && c != 'G' ) {
return false;
}
}
return true;
}
int main() {
std::string s1 = "ATGCCCG";
std::string s2 = "ATGfooCCCG";
if ( validate( s1 ) ) {
std::cout << "s1 is validn";
}
else {
std::cout << "s1 is not validn";
}
if ( validate( s2 ) ) {
std::cout << "s2 is validn";
}
else {
std::cout << "s2 is not validn";
}
}
Thank you so much. After about an hour, I finally now understand it!!
– ConfusedProgrammer
Nov 13 '18 at 22:47
add a comment |
Didn't really want to do this but it seems like the best bet rather than going round the houses in the comments:
#include <string>
#include <iostream>
bool validate( const std::string & s ) {
for ( auto c : s ) {
if ( c != 'A' && c != 'T' && c != 'C' && c != 'G' ) {
return false;
}
}
return true;
}
int main() {
std::string s1 = "ATGCCCG";
std::string s2 = "ATGfooCCCG";
if ( validate( s1 ) ) {
std::cout << "s1 is validn";
}
else {
std::cout << "s1 is not validn";
}
if ( validate( s2 ) ) {
std::cout << "s2 is validn";
}
else {
std::cout << "s2 is not validn";
}
}
Didn't really want to do this but it seems like the best bet rather than going round the houses in the comments:
#include <string>
#include <iostream>
bool validate( const std::string & s ) {
for ( auto c : s ) {
if ( c != 'A' && c != 'T' && c != 'C' && c != 'G' ) {
return false;
}
}
return true;
}
int main() {
std::string s1 = "ATGCCCG";
std::string s2 = "ATGfooCCCG";
if ( validate( s1 ) ) {
std::cout << "s1 is validn";
}
else {
std::cout << "s1 is not validn";
}
if ( validate( s2 ) ) {
std::cout << "s2 is validn";
}
else {
std::cout << "s2 is not validn";
}
}
answered Nov 13 '18 at 21:51
Neil ButterworthNeil Butterworth
27.1k54680
27.1k54680
Thank you so much. After about an hour, I finally now understand it!!
– ConfusedProgrammer
Nov 13 '18 at 22:47
add a comment |
Thank you so much. After about an hour, I finally now understand it!!
– ConfusedProgrammer
Nov 13 '18 at 22:47
Thank you so much. After about an hour, I finally now understand it!!
– ConfusedProgrammer
Nov 13 '18 at 22:47
Thank you so much. After about an hour, I finally now understand it!!
– ConfusedProgrammer
Nov 13 '18 at 22:47
add a comment |
Another technique:
bool validate(const std::string& s)
{
const static std::string valid_letters("ATCGatcg");
for (auto c: s)
{
std::string::size_type position = valid_letters.find_first_of(c);
if (position == std::string::npos)
{
return false;
}
}
return true;
}
The above code searches a container of valid letters.
add a comment |
Another technique:
bool validate(const std::string& s)
{
const static std::string valid_letters("ATCGatcg");
for (auto c: s)
{
std::string::size_type position = valid_letters.find_first_of(c);
if (position == std::string::npos)
{
return false;
}
}
return true;
}
The above code searches a container of valid letters.
add a comment |
Another technique:
bool validate(const std::string& s)
{
const static std::string valid_letters("ATCGatcg");
for (auto c: s)
{
std::string::size_type position = valid_letters.find_first_of(c);
if (position == std::string::npos)
{
return false;
}
}
return true;
}
The above code searches a container of valid letters.
Another technique:
bool validate(const std::string& s)
{
const static std::string valid_letters("ATCGatcg");
for (auto c: s)
{
std::string::size_type position = valid_letters.find_first_of(c);
if (position == std::string::npos)
{
return false;
}
}
return true;
}
The above code searches a container of valid letters.
answered Nov 13 '18 at 22:15
Thomas MatthewsThomas Matthews
44.3k1173123
44.3k1173123
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53289537%2fhow-to-make-sure-that-two-strings-only-have-certain-alphabets-in-c%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
You appear to be trying to create 4 separate variables with the same name. All you need to do is loop over the string and check that each character is either A, G, T or C, using an if-statement. You don't need those variables.
– Neil Butterworth
Nov 13 '18 at 21:13
@NeilButterworth could you show me how you write an if function which can look for two different strings?
– ConfusedProgrammer
Nov 13 '18 at 21:23
Look through the first string in a loop. Then look through the second string in another loop. And there is no reason for the validate function to take two strings as parameters anyway.
– Neil Butterworth
Nov 13 '18 at 21:26
@NeilButterworth Does this look right for the first string? bool validate(string strX, string strY) { if (strX =! "A" || strX =! "T"|| strX =! "G", strX =! "C") { cout << "Input contains error" << endl; cout << "Error in String #1:" + strX << endl; cout << "Error in String #2:" + strY << endl; } }
– ConfusedProgrammer
Nov 13 '18 at 21:35
No, it doesn't. You need a loop and you do NOT need to validate both strings at once.
– Neil Butterworth
Nov 13 '18 at 21:37