Помогите с задачей. Не решайте за меня, просто намекните в каком направлении двигаться, дайте задачу проще (промежуточную), которую необходимо решить на пути к решению следующей:
A. cAPS lOCK
ограничение по времени на тест: 0.5 сек
ограничение по памяти на тест: 256 MB
ввод: стандартный ввод
вывод: стандартный вывод
зАЧЕМ НУЖНА КЛАВИША cAPS lOCK?
Caps Lock — клавиша компьютерной клавиатуры, предназначенная для автоматической (постоянной) смены регистра букв со строчных на прописные. Будучи случайно нажатой, она приводит к последствиям вроде первого абзаца в условии этой задачи.
Будем считать, что слово набрано с ошибочно нажатой клавишей Caps Lock, если:
- либо оно полностью состоит из прописных букв;
- либо прописными являются все его буквы, кроме первой.
В таком случае, нужно автоматически поменять регистр всех букв на противоположный. Например, регистр букв слов «hELLO», «HTTP», «z» должен быть изменен.
Напишите программу, которая применяет описанное выше правило или оставляет слово без изменения, если оно не применимо.
Входные данныеВ первой строке входных данных записано слово, состоящее из прописных или строчных букв латинского алфавита. Длина слова — от 1 до 100 символов включительно.
Выходные данные: выведите результат обработки данного слова.
Примеры
входные данные
cAPS
выходные данные
Caps
входные данные
Lock
выходные данные
Lock
int symbolCode = 0;
while ((symbolCode = s.read()) != -1) {
char input = Character.forDigit(symbolCode);
if (Character.isLetter(input) {
System.out.print((Character.isUpperCase(input)? Character.toLowerCase(input): Character.toUpperCase(input)));
}
}
s.close();
примерно так
int symbolCode = 0;
while ((symbolCode = s.read()) != -1) {
char input = (char) symbolCode;
if (Character.isLetter(input) {
System.out.print((Character.isUpperCase(input)? Character.toLowerCase(input): Character.toUpperCase(input)));
}
}
s.close();
ашибочка вышла, так лучше будет
.
.
.
.
.
.
.
.
.
.
.
#include
#include
using namespace std;
void main()
{
const int n = 101;
short int a = 97, z = 122, A = 65, Z = 90;
char c[n];
cin >> c;
int d = strlen©;
int s = 0;
for (int i = 0; i < d; i++) {
if ((c[i] >= A) && (c[i] <= Z))
s++;
}
if (d == s) {
for (int i = 0; i < d; i++)
c[i] += 32;
}
else if (d — 1 == s) {
if ((c[0] >= a) && (c[0] <= z)) {
c[0] -= 32;
for (int i = 1; i < d; i++) {
c[i] += 32;
}
}
}
cout << c;
}
char a[n];
cin >> a;
if ((a[0] >= 97)&&(a[0] <= 122))
a[0] -= 32;
for (int i = 1; i < n; i++) {
if ((a[i] >= 65)&&(a[i] <= 90))
a[i] += 32;
}
cout << a;
return 0;
Доделывай сам, можно завести ещё один проверочный цикл, который пройдется по массиву и заполнит две bool-переменные, определяющие тип.
#include <iostream>
#include <cstring>
using namespace std;
int main(){
char ch[101];
cin>>ch;
for(int i = 0; i < strlen(ch); i++) {
if(i==0)
ch[i]=ch[i]&223;
else ch[i]=ch[i]|32;
cout<<ch[i];
}
}
#include <iostream>
Простейшим for проходишься по массиву char, используя побитовый xor на 6 бит вроде в ASCII.