Diskuze: C++ ASCII
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Příčina je jednoduchá. Všechny znaky jsou uloženy jako int, to určitě
víš. Podmínku else if (vstup[i] >= 'a' && vstup[i] <=
'z') můžeš přepsat například jako else if (vstup[i] >= 97
&& vstup[i] <= 122).
Potom to ovšem předáváš do druhého pole a změníš ty hodnoty.
vstup[i]+49 vrátí špatné hodnoty protože už vstup[i]
obsahuje hodnotu 49, a ty k tomu ještě přičteš 49, a to se teprve uloží
do onoho druhého pole.
například pro 3: ASCII má hodnotu 51, když k tomu
přičteš 49 máš hodnotu 100, no a to je v ASCII d.
Snad jsem pomohl
Výsledek je toto :
#include<iostream>
using namespace std;
int main()
{
char vstup[80];
string vystup("");
cin.getline(vstup, 80);
cin >> vstup;
for (int i = 0; vstup[i] != '\0'; i++)
{
if (vstup[i] >= 'A' && vstup[i] <= 'Z')
{
vystup += vstup[i] + ('a' - 'A');
}
else if (vstup[i] >= 'a' && vstup[i] <= 'z')
{
vystup += vstup[i] - ('a' - 'A');
}
else if (vstup[i] >= '0' && vstup[i] <= '9')
{
vystup += vstup[i] + 49;
}
}
cout << vystup << endl;
return 0;
}
Zobrazeno 5 zpráv z 5.