Vă rugăm să ajutați! Nu pot produce ieșirea programului meu. Aceasta este condiția: Construiți un program care să ofere o reducere de 100 de pesos dacă tricoul cumpărat este XL și prețul este mai mare de 500; și o reducere de 50 de pesos dacă tricoul cumpărat este L și prețul este mai mare de 600.
#include <iostream>
using namespace std;
int main()
{
int p;
int s;
cout << "Input price: ";
cin >> p;
cout << "Input size: ";
cin >> s;
switch (s)
{
case 'XL': case 'xl':
{
if (p>500){
cout << "Total price: " << p-100 << " pesos.";
break;
}
else if ((s=='XL' || s=='xl') && (p<500)){
cout << "Total price: " << p << " pesos.";
break;
}
}
case 'L': case 'l':
{
if (p>600){
cout << "Total price: " << p-50 << " pesos.";
break;
}
else if ((s=='XL' || s=='xl') && (p<600)){
cout << "Total price: " << p << " pesos.";
break;
}
}
case 'M': case 'm':
{
cout << "Total price: " << p << " pesos.";
break;
}
case 'S': case 's':
{
cout << "Total price: " << p << " pesos.";
break;
}
}
return 0;
}
Rezultatul programului:
Input price: 500
Input size: XL
Process returned 0 (0x0) execution time : 5.750 s
Press any key to continue.
P.S. Cum pot elimina avertismentul (constanta de mai multe caractere) din programul meu?Mulțumesc anticipat!
- De ce să nu faceți din mărime un enum și să comutați pe acesta? – > Por Neil Kirk.
Dacă dimensiunea poate fi mai mult de un singur caracter, atunci va trebui să o reprezentați cu un șir de caractere. Nu puteți switch
pe un șir de caractere, așa că va trebui să utilizați if..else..else..
pentru a vă ocupa de valoare:
std::string size;
cin >> size;
if (size == "XL") {
// deal with size XL
} else if (size == "L") {
// deal with size L
} // and so on
Dacă ar fi un singur caracter, atunci ați putea folosi char
(not int
) pentru a reprezenta acest lucru:
char size;
cin >> size;
switch (size) {
case 'L':
// deal with size L
break;
// and so on
}
dar pentru mai multe caractere, veți avea nevoie de un șir de caractere.
switch
poate gestiona int
și char
în C++. char
tipul de date poate conține doar o singură literă. Astfel, dacă introduceți o singură literă (X
) pentru dimensiunea XL va fi în regulă …
cout << "Input size (X/L/M/S): ";
cin >> s;
switch (s){
case 'X': case 'x':
Ați declarat s
ca un întreg, dar încercați să îl utilizați ca un caracter și matrice de caractere. Probabil că ar trebui să o declarați este char s;
și apoi să o folosiți în mod consecvent ca un singur caracter – ceea ce înseamnă că nu puteți verifica pentru XL
. Cu toate acestea, ați putea verifica doar pentru X
în comutatorul dvs.
Dacă trebuie neapărat să verificați pentru XL
atunci va trebui să folosiți fie o matrice de caractere, fie std::string
, deși instrucțiunile switch pot fi folosite numai cu caractere unice, așa că este posibil să trebuiască să aninați switch-ul pentru a verifica mai multe caractere sau să folosiți doar o serie de if (strncmp(...)...)
apeluri.