Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 05.09.2013
Сообщений: 26
1

Не могу найти ошибку в программе

09.12.2015, 21:45. Показов 466. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана строка. Преобразовать в ней все строчные буквы (как латинские, так и русские) в прописные, а прописные — в строчные.
Проблема со строчными, выдает совершенно не те символы. (
Укажите на ошибку, пожалуйста.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2015, 21:45
Ответы с готовыми решениями:

Не могу найти ошибку в программе
Программа не считает х = 1, х = -1 и х = 0, вместо этого выводит ноли. вот код #include...

Не могу найти ошибку в программе
Простенькая программа. Массив передается в функцию, где каждый элемент умножается на 10. Затем...

Не могу найти ошибку в программе(для просмотра картинок):кнопка НАЗАД не работает(не становится активной) Найдите ошибку.

Не могу найти ошибку в программе
Помогите найти ошибку в программе! Вочислить а: если х*y&gt;0 то a=(f(x)+y)^2-(f(x)*y)^0.5 ...

8
5 / 5 / 4
Регистрация: 23.09.2014
Сообщений: 180
10.12.2015, 09:58 2
Цитата Сообщение от Саша Гейт Посмотреть сообщение
Дана строка. Преобразовать в ней все строчные буквы (как латинские, так и русские) в прописные, а прописные — в строчные.
Проблема со строчными, выдает совершенно не те символы. (
Укажите на ошибку, пожалуйста.
Изучи библиотеку ctype.h! Функции isupper(),islower(), toupper(),tolower() и твоя программа изменится
0
0 / 0 / 0
Регистрация: 05.09.2013
Сообщений: 26
10.12.2015, 15:05  [ТС] 3
Цитата Сообщение от evgovs1991 Посмотреть сообщение
Изучи библиотеку ctype.h! Функции isupper(),islower(), toupper(),tolower() и твоя программа изменится
А без них никак? Просто хотелось бы узнать именно какова ошибка в моей программе, без использования каких-либо функций
0
51 / 24 / 12
Регистрация: 10.10.2015
Сообщений: 107
10.12.2015, 15:37 4
Во-первых делать преобразование к целому типу str[i] не обязательно.
Конструкция a <= x <= b неправильная. a <= x выдает либо 0 либо 1. Потом его сравниваете с b. Вот и не работает.
Надо использовать x >= a && x <= b;
1
0 / 0 / 0
Регистрация: 05.09.2013
Сообщений: 26
10.12.2015, 16:16  [ТС] 5
Цитата Сообщение от bsa916115 Посмотреть сообщение
Во-первых делать преобразование к целому типу str[i] не обязательно.
Конструкция a <= x <= b неправильная. a <= x выдает либо 0 либо 1. Потом его сравниваете с b. Вот и не работает.
Надо использовать x >= a && x <= b;
Спасибо, исправил. Только теперь с русскими буквами беда, ни в какую сторону не преобразовывает. С латинскими все в порядке.
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
10.12.2015, 16:19 6
Цитата Сообщение от Саша Гейт Посмотреть сообщение
с русскими буквами беда
(unsigned char)
0
51 / 24 / 12
Регистрация: 10.10.2015
Сообщений: 107
10.12.2015, 16:23 7
C
1
2
3
4
// Я бы сделал так
int diff = 'б' - 'Б';
if(c <= 'а' && c >='я')
  c = c -diff;
Да и конечно unsigned
1
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
10.12.2015, 16:31 8
Цитата Сообщение от bsa916115 Посмотреть сообщение
Я бы сделал так
Да, очень хорошо для любой "разумной" кодировки. А с буквой "Ё" там накладок не будет?
И еще для Досовской Альтернативной - нехорошо получится. О КОИ-8 я уж не говорю... Но их можно отнести к классу "неразумных"
0
51 / 24 / 12
Регистрация: 10.10.2015
Сообщений: 107
10.12.2015, 16:34 9
Вы бы еще EBCDIC вспомнили
0
10.12.2015, 16:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2015, 16:34
Помогаю со студенческими работами здесь

Не могу найти ошибку в программе
Здравствуйте! Не могу понять, как полностью отладить программу. Определенное понимание о характере...

Не могу найти ошибку в программе
Разложение числа на сумму двух квадратов &quot;for(a=o;a&lt;=floor(sqrt(W));x++); ...

Не могу найти ошибку в программе
Задача во вложении Вот листинг программы: procedure TForm1.Button1Click(Sender: TObject); ...

Не могу найти ошибку в программе
Для начала объясню что это за программа.Это домино , в начале вам даются 7 фишек и при первом ходе...

Не могу найти ошибку в программе
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;cctype&gt; #define is_delim(c) (std::isspace((c))...

Не могу найти ошибку в программе
Здравствуйте, я новичок в Java, осваиваю книгу Г.Шилдта &quot;Руководство для начинающих&quot;. При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru