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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.87
Сатсухару
0 / 0 / 0
Регистрация: 04.10.2009
Сообщений: 8
#1

Нижний регистр - C++

05.10.2009, 12:17. Просмотров 2864. Ответов 15
Метки нет (Все метки)

Помогите пожалуйста с заданием. Как правильно написать. А то мучалась, так ни чего не смогла сделать.
Задание:
Написать программу, печатающую все вводимые символы в нижнем регистре.
Программа должна использовать цикл while. Входные данные поступают с
клавиатуры. Предусмотреть обработку ошибок
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8506 / 2173 / 61
Регистрация: 07.03.2007
Сообщений: 10,848
Завершенные тесты: 1
05.10.2009, 12:18     Нижний регистр #2
Сатсухару, покажи, что ты там уже намучала
Сатсухару
0 / 0 / 0
Регистрация: 04.10.2009
Сообщений: 8
05.10.2009, 12:30  [ТС]     Нижний регистр #3
В принцыпе я не знаю как объявляется флаг нижнего регистра. Верхний прописан в учебнике, а нижний нет
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8506 / 2173 / 61
Регистрация: 07.03.2007
Сообщений: 10,848
Завершенные тесты: 1
05.10.2009, 12:58     Нижний регистр #4
Сатсухару, зачем вам флаги, берете charmap.exe и смотрите в system - какие коды отвечают за большие символы. а какие за маленькие... вообще в принципе есть функции isupper, islower, toupper, tolower, но они не рабоают с кириллицей....

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
int main()
{
    int i = 0;
    unsigned char str[256];
    cout << "enter string:" << endl;
    cin.getline((char*)str, 255);
    while(str[i]){
      if(isupper(str[i])) str[i] = tolower(str[i]);
      i++;
    }
    cout<<str<<endl;
    return 0;
}
Сатсухару
0 / 0 / 0
Регистрация: 04.10.2009
Сообщений: 8
05.10.2009, 13:24  [ТС]     Нижний регистр #5
VoodooMan,
Спасибо большое за помощь. Хоть с мертвой точки сдвинусь. Хотя такой момент переводит в нижний регистр только если убрать unsigned перед чаром. А без него кирилецу не печатает. Но мне это не так и важно. Благодарна за помощь
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8506 / 2173 / 61
Регистрация: 07.03.2007
Сообщений: 10,848
Завершенные тесты: 1
05.10.2009, 13:53     Нижний регистр #6
Сатсухару, да погоди, это решение не предполагает работу с кирилицей, а символы все равно должны быть беззнаковыми, иначе кириллица - с отрицательными значениями:
что-то вроде такого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main()
{
    system("chcp 1251");
    int i = 0;
    char str[256] = "df;lkjдловылдОЛДОдлволдГРРОЛПолвыорОЛРЛОРЛО";
    //cout << "enter string:" << endl;
    //cin.getline(str, 255);
    while(str[i]){
      if((unsigned char)str[i] >= 0xC0 && (unsigned char)str[i] <= 0xDF){
        str[i] = (unsigned char)str[i] + 0x20;
      }else if(isupper(str[i])) str[i] = tolower(str[i]);
      i++;
    }
    cout<<str<<endl;
    return 0;
}
Сатсухару
0 / 0 / 0
Регистрация: 04.10.2009
Сообщений: 8
05.10.2009, 14:03  [ТС]     Нижний регистр #7
VoodooMan,
Для этого в программе и идет обработка ошибок. Программа будет закрыватся если будет отрицательно. Я это уже сделала. Сейчас это посмотрю ещё.
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8506 / 2173 / 61
Регистрация: 07.03.2007
Сообщений: 10,848
Завершенные тесты: 1
05.10.2009, 14:06     Нижний регистр #8
Сатсухару, а кто вам сказал, что отрицательное есть неверно, это просто кириллица
Сатсухару
0 / 0 / 0
Регистрация: 04.10.2009
Сообщений: 8
05.10.2009, 14:09  [ТС]     Нижний регистр #9
VoodooMan,
Ну это в принцыпе нужно исключить по заданию, если не ошибаюсь. Я не говорю, что это не верно
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8506 / 2173 / 61
Регистрация: 07.03.2007
Сообщений: 10,848
Завершенные тесты: 1
05.10.2009, 14:18     Нижний регистр #10
Сатсухару, вот я про ошибки ничего не придумал, вот и ничего не написал, а код хоть пойдет?
Сатсухару
0 / 0 / 0
Регистрация: 04.10.2009
Сообщений: 8
05.10.2009, 14:23  [ТС]     Нижний регистр #11
VoodooMan, да с кодом вы мне помогли. Сижу вот делаю вторую часть задания. Вот вопрос такой. Есть ли смысл пытатся перевести буквы в 10-ую, 16-ую и 8-ую системы?
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8506 / 2173 / 61
Регистрация: 07.03.2007
Сообщений: 10,848
Завершенные тесты: 1
05.10.2009, 14:30     Нижний регистр #12
Сатсухару, это смотря для чего...
Сатсухару
0 / 0 / 0
Регистрация: 04.10.2009
Сообщений: 8
05.10.2009, 14:34  [ТС]     Нижний регистр #13
VoodooMan,
ну вот лично для этой программы. В общем задание полностью звучит так.
Написать программу, печатающую все вводимые символы в нижнем регистре.
Программа должна использовать цикл while. Входные данные поступают с
клавиатуры. Предусмотреть обработку ошибок. Результат выводится на экран в
десятичной, шестнадцатеричной и восьмеричной системе. Установить ширину
поля 10 символов, установить точность 4 цифры, заполнить вместо пробелов
символом & с помощью функций и манипуляторов.


Просто спросить совет. Стоит ли с системами мудохкатся или легче с преподом поспорить?!
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8506 / 2173 / 61
Регистрация: 07.03.2007
Сообщений: 10,848
Завершенные тесты: 1
05.10.2009, 14:41     Нижний регистр #14
Сатсухару, вообще в задании все четко оговорено, что тут уже спорить, делать надо
Сатсухару
0 / 0 / 0
Регистрация: 04.10.2009
Сообщений: 8
05.10.2009, 14:45  [ТС]     Нижний регистр #15
VoodooMan, говорится то говорится, ладно помучаюсь. А за помощь спасибо^^
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2009, 15:53     Нижний регистр
Еще ссылки по теме:

Русские символы в нижний регистр в С++ (debian) C++
C++ Верхний и нижний регистр буквы
C++ Преобразовать текст файла в нижний регистр
C++ Не работает замена символов в файле на нижний регистр
Преобразование в нижний регистр C++

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

Или воспользуйтесь поиском по форуму:
Adler
 Аватар для Adler
78 / 78 / 3
Регистрация: 07.05.2009
Сообщений: 316
11.10.2009, 15:53     Нижний регистр #16
C++
1
2
3
4
5
6
7
8
9
string LowStr(string str)
{
  //DWORD CodePage=0x419;
  for(int i=0; (i+1)<(int)str.length(); i++)
  {
    if(isupper(str[i]))str[i]=tolower(str[i]);
  }
  return str;
}
Работает но только с латиницей. Как сделать что бы ещё и русские символы прожёвывал?
Yandex
Объявления
11.10.2009, 15:53     Нижний регистр
Ответ Создать тему
Опции темы

Текущее время: 01:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru