Форум программистов, компьютерный форум CyberForum.ru

Перевод строк в верхний и нижний регистры не работает для кириллицы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Алгоритм Флойда — Уоршелла http://www.cyberforum.ru/cpp-beginners/thread1065194.html
Мне нужно подсчитать сумму кротчайшего пути от вершины А к вершине В. При этом не нужно брать в расчеты 0 (нули).
C++ Добавить в данный код функцию вывода на экран количества не четных элементов массива Доброго времени суток. Помогите пожалуйста добавить в данный код функцию вывода на экран количества не четных элементов массива: #include <stdio.h> #include <conio.h> #include <stdlib.h> int main(void) { int n, i, mas; printf("\nVvedite kolichestvo elementov massiva : "); scanf("%d", &n); http://www.cyberforum.ru/cpp-beginners/thread1065190.html
Придумать программу, в которой должны быть задействованы некоторые темы C++
Помогите, пожалуйста. Нужно придумать программу и алгоритм к ней, в которой затронулись бы эти темы: 1. Вычисление арифметических выражений 2. Операторы С++ 3. Вычисление ряда. Форматное введение - вывод данных 4. Массивы(одномерные и двумерные). Спасибо большое заранее. P.S. Очень срочно.
C++ Обработка одномерных массивов. Сортировка массивов
Здравствуйсте! Помогите пожалуйста написать программу! В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) максимальный по модулю элемент массива; 2) сумму элементов массива, расположенных между первым и вторым положительными элементами. Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных. Простым способом пожалуйста....
C++ Поиск по шаблону http://www.cyberforum.ru/cpp-beginners/thread1065146.html
При реализации поиска по шаблону столкнулся со следующей проблемой: Шаблон: *abc Тест1: abc Тест2: fabc Тест3: ssabk_abc Первые два, конечно же, проходит нормально, а вот последний нет. По сути, "*" - сколь угодно символов и при текущей реализации я просто проверяю строку до тех пор, пока не встречу следующий за "*" символ. Однако, из-за этого на третьем тесте я получаю ошибку, хотя строка...
C++: IDE, инструментарий Есть ли в студии функционал, позволяющий убирать лишние симолы? привет всем кое где слышал есть фишка в студии она позволяет убрать сивол из кода плиз научите на примере кода #include <fstream> main(int n){ std::fstream i("input.txt"), o("output.txt", 2); i>>n; o<<n/6<<" "<<2*n/3<<" "<<n/6; } подробнее

Показать сообщение отдельно
TrueBit
 Аватар для TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
08.01.2014, 18:58     Перевод строк в верхний и нижний регистры не работает для кириллицы
Цитата Сообщение от Troo Посмотреть сообщение
Почему -113
Потому, что тип знаковый char(-113) тоже самое, что unsigned char(143). Войдите в калькулятор win+r calc. Вид-программист. Введите выберите размер 2 байта, введите 143 получится 10001111 бит последовательность, выберите размер 1 байт. Получится та же последовательность 10001111. Просто при использовании знакового типа старший разряд 1 байта используется под знак, а оставшиеся 7 бит используются под число. Поэтому число -113 знаковое и 143 без знаковое хранятся одинакого (таблицу для без знаковых можете посмотреть выше).

Вот переписал функцию, под без знаковый тип, чтобы она полностью соответствовала таблице кодов с диапазаном значений от 0 до 255

C++
1
2
3
4
5
6
7
8
9
10
11
char* Rtolower (char *s)
{
    for (int i=0;i<(int)strlen(s);i++)
        if (128<=(unsigned char)s[i] && (unsigned char)s[i]<=143) // если символ лежит в диапазан [128,143] - тоесть большие буквы
            s[i]+=32; // то переводим в другой диапазон [160,175] (маленькие буквы)
        else if(144<=(unsigned char)s[i] && (unsigned char)s[i]<=159) // тут вторая часть больших букв, потому, что продолжение(вторая половина)
            s[i]+=80; // маленьких букв находится чуть дальше, через 80 символов от больших
        else if(65<=s[i] && s[i]<=90) // en
            s[i]+=32;
    return s;
}
Добавлено через 12 минут
То есть если рассматривать эти 8 бит как знаковые числа(от -128 до 127), то один бит для знака(1000 0000 либо 1000 0000), остальные под число(от 000 0000 до 111 1111 ). Если рассматривать как без знаковый(от 0 до 255), то отрицательных нет и все первые 127 положительных чисел одинаковые ( 0111 1111 = 127 максимальное положительное знаковое, 0111 1111 = 127 положительное без знаковое). А дальше ( 1000 0000 - тут начинается отрицательные знаковые, а тут 1000 000 - следующее положительное без знаковое). Но с точки зрения символа это одно и то же.
 
Текущее время: 22:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru