Se dă un șir de caractere. Să se transforme toate literele mici în litere mari și invers.
Date de intrare
De pe prima linie se va citi șirul de caractere.
Date de ieșire
Pe ecran se va afișa șirul cu literele transformate.
Restricții și precizări
Lungimea șirului va fi mai mică sau egală cu 1 000.
Exemplu
Date de intrare Date de ieșire
Acesta EsTe un SIR aCESTA eStE UN sir
Acesta este codul :
#include
#include
using namespace std;
const int MAX_LENGHT = 1000;
int main() {
char s[MAX_LENGHT];
cin.getline(s, MAX_LENGHT);
int n = strlen(s);
for (int i = 0; i < n; i++) {
if ('a' <= s[i] && s[i] <= 'z') {
s[i] -= 32;
}
else if ('A' <= s[i] && s[i] <= 'Z') {
s[i] += 32;
} else {
s[i] = ' ';
}
}
cout << s;
return 0;
}
Se pare ca iau 0 puncte .
Se mai poate face si altfel ?
Ma puteti ajuta cu o alta varianta ?
Multumesc!
VxF:
De ce ai pus else? Dacă sunt semne de punctuaţie, ăla le va înlocui cu spaţii. Din enunţ nu mi s-a părut că e nevoie de asta.
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;
const int MAX_LENGHT = 1000;
int main() {
char s[MAX_LENGHT];
cin.getline(s, MAX_LENGHT);
int n = strlen(s);
for (int i = 0; i < n; i++) {
if (islower(s[i])) {
s[i] = toupper(s[i]);
} else if (isupper(s[i])) {
s[i] = tolower(s[i]);
}
}
cout << s << endl;
return 0;
}
Explicație:
Ai întrebat dacă se poate face altfel. Da, folosind biblioteca de rutine cctype. Dar nu m-aș așteptă la vreo diferență de la asta. Problema trebuie să fie altundeva.
Alte întrebări interesante
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă