nested if else. can someone help me?
Apr 23, 2019 at 2:55am UTC
there's clearly something wrong with my if else statement.
i see that that values for letter and message.at(m) are updating but no dice on my translation stings.
disregard clunkyness
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
#include <iostream>
#include <string>
using namespace std;
int main()
{
char input;
string message, customer, street, city, state, zip, translation;
int count;
double cost=0;
cout << "welcome to Western Union Telegraph Company." << endl;
cout << "1 - Process Telegram Bill" << "\n2 - Translate to Morse Code" << endl;
cin >> input;
cout<< endl;
switch (input)
{
case '1' :
cout <<endl<< "\nEnter the name of the customer:" ;
cin.ignore();
getline(cin,customer);
cout << "\nEnter street address: " ;
getline(cin,street);
cout << "\n Enter city: " ;
cin >> city;
cout << "\nEnter state: " ;
cin >> state;
cout << "\nEnter zip code: " ;
cin >> zip;
cout << "\nEnter number of words sent: " ;
cin >> count;
cout << customer << endl << street << endl << city << ", " << state << " " << zip << endl << "amount owed: $" << cost;
break ;
case '2' : cout << "enter your message: " ;
cin.ignore();
getline(cin,message);
int m;
char letter;
for (m = 0; m < message.length(); m++)
{
letter = message.at(m);
if (letter == 'A' || 'a' )
{
translation = ". -" ;
}
else if (letter == 'B' || 'b' )
{
translation = "- …" ;
}
else if (letter == 'C' || 'c' )
{
translation = "- . - ." ;
}
else if (letter == 'D' || 'd' )
{
translation = "- . ." ;
}
else if (letter == 'E' || 'e' )
{
translation = "." ;
}
else if (letter == 'F' || 'f' )
{
translation = ". . - ." ;
}
else if (letter == 'G' || 'g' )
{
translation = "- - ." ;
}
else if (letter == 'H' || 'h' )
{
translation = ". . . ." ;
}
else if (letter == 'I' || 'i' )
{
translation = ". ." ;
}
else if (letter == 'J' || 'j' )
{
translation = ". - - -" ;
}
else if (letter == 'K' || 'k' )
{
translation = "- . -" ;
}
else if (letter == 'L' || 'l' )
{
translation = ". - . ." ;
}
else if (letter == 'M' || 'm' )
{
translation = "- - " ;
}
else if (letter == 'N' || 'n' )
{
translation = "- ." ;
}
else if (letter == 'O' || 'o' )
{
translation = "- - -" ;
}
else if (letter == 'P' || 'p' )
{
translation = ". - - ." ;
}
else if (letter == 'Q' || 'q' )
{
translation = "- - . -" ;
}
else if (letter == 'R' || 'r' )
{
translation = ". - ." ;
}
else if (letter == 'S' || 's' )
{
translation = ". . ." ;
}
else if (letter == 'T' || 't' )
{
translation = "-" ;
}
else if (letter == 'U' || 'u' )
{
translation = ". . -" ;
}
else if (letter == 'V' || 'v' )
{
translation = ". . . -" ;
}
else if (letter == 'W' || 'w' )
{
translation = ". - -" ;
}
else if (letter == 'X' || 'x' )
{
translation = "- . . -" ;
}
else if (letter == 'Y' || 'Y' )
{
translation = "- . - -" ;
}
else if (letter == 'Z' || 'z' )
{
translation = "- - . ." ;
}
else { translation = message.at(m);
}
cout<< m << message.at(m)<<translation << letter<< "//" ;
}
cout<< " your message " << message << " translates to " << translation;
break ;
case '3' :
break ;
default : cout << "ERROR, invalid user entry." ;
}
return 0;
}
Apr 23, 2019 at 4:21am UTC
if (letter == 'A' || 'a' )
Hi that code doesn't do what you think it does.
It should be :
if (letter == 'A' || letter == 'a' )
But even better, convert each letter into uppercase, and only have one comparison. There is a toupper function.
Some other ideas:
Each case of the
should call it's own function. Maybe you haven't done functions yet?
Topic archived. No new replies allowed.