Не могу найти ошибку в программе - C (СИ)
Формулировка задачи:
Дана строка. Преобразовать в ней все строчные буквы (как латинские, так и русские) в прописные, а прописные — в строчные.
Проблема со строчными, выдает совершенно не те символы. (
Укажите на ошибку, пожалуйста.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <stdlib.h>
#include <windows.h>
#include <math.h>
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
printf("Введите строку \n");
char str[200];
gets(str);
int i;
for ( i=0; str[i] != '\0';i++)
{
if (65<=(int)(str[i])<=90)
str[i]=(char)((int)(str[i]+32));
else if ( 97<=(int)(str[i])<=122)
str[i]=(char)((int)(str[i]-32));
else if (128<=(int)(str[i])<=143)
str[i]=(char)((int)(str[i]+32));
else if (144<=(int)(str[i])<=159)
str[i]=(char)((int)(str[i]+80));
else if (160<=(int) (str[i])<=175)
str[i]=(char)((int)(str[i]-32));
else if (224<=(int) (str[i])<=239)
str[i]=(char)((int)(str[i]-80));
}
puts(str);
return 0;
}Решение задачи: «Не могу найти ошибку в программе»
textual
Листинг программы
// Я бы сделал так int diff = 'б' - 'Б'; if(c <= 'а' && c >='я') c = c -diff;
Объяснение кода листинга программы
В данном коде выполняется следующие действия:
- Создается переменная diff типа int, которая вычисляется как разница между символами 'б' и 'Б'. Это приводит к тому, что diff становится равным 1.
- С помощью условного оператора if проверяется, является ли значение переменной c меньше или равным 'а' и больше или равно 'я'. Если это условие истинно, то выполняется следующее действие.
- Значение переменной c приводится к типу int и вычитается из него значение переменной diff. Это приводит к тому, что значение переменной c становится равным 'а'. Таким образом, данный код преобразует значение переменной c в 'а', если оно находится в диапазоне от 'а' до 'я', и вычитает из него разницу между 'б' и 'Б'.