Не могу найти ошибку в программе - 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 в 'а', если оно находится в диапазоне от 'а' до 'я', и вычитает из него разницу между 'б' и 'Б'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д