Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2012, 19:33   #161
ITTI
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 65
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
2.Не понятно, откуда ты это взяла)
3.Посмотри получше реализацию функции int GetValue(...);
5.Причем при подключении заголовка "BersLibrary.h", автоматически происходит настройка стандартной консоли (что бы русские буквы были, дробную часть числа лучше отображала, и тп).
угу, тебя тоже.
2. и мне не понятно откуда взяла.
3. т.е. если введенная строка есть в "списке_чисел" (if (Bers::IsDigit(val)==1)), каким-то образом(?) функция StrToInt возвращает соответствующее число?
5. русский текст в консоли - дай ссылку, где легко для понимания.
6. написано: в файле std_lib_facilities.h есть error(). почему мне пишет: нет такой директории или файла?
ITTI вне форума Ответить с цитированием
Старый 04.01.2012, 20:03   #162
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от ITTI Посмотреть сообщение
угу, тебя тоже.
2. и мне не понятно откуда взяла.
3. т.е. если введенная строка есть в "списке_чисел" (if (Bers::IsDigit(val)==1)), каким-то образом(?) функция StrToInt возвращает соответствующее число?
5. русский текст в консоли - дай ссылку, где легко для понимания.
6. написано: в файле std_lib_facilities.h есть error(). почему мне пишет: нет такой директории или файла?
3. Смотри, допустим у тебя строка, и тебе нужно узнать, является ли строка представлением числа?

"йцукен" - не является представлением числа
"12345" - является представлением целого числа
"-12345" - является представлением отрицательного целого числа
"123.456" - является представлением дробного числа
"-123.456" - является представлением отрицательного дробного числа
"0.456" -является представлением дробного числа, у которого целая часть равна нулю
".456" - является представлением дробного числа, у которого целая часть равна нулю

ну и тп.

Функцию Bers::isDigit(const std::string& text);
Нужно читать так: "Является ли строка числом?"
Функция получает на входе строку.
А на выходе возвращает:

0 - строка не является числом
1 - строка является целым числом
2 - строка является дробным числом

Причем, моя функция сделана через задницу (мне лень было, я поюзал стандартную библиотеку, в результате родилось жутко неоптимизированное чудо)

Вот надо бы этим заняться когда нибудь, и сделать по человечески.
Если хочешь - можно заняться этим вместе. Ибо такая функция проста в реализации.


int StrToInt(const std::string); //получает на входе строку, которая содержит представление числа, а на выходе - само это число

5. Сделать так, что бы вместо кракозябр в консоли отображались русские буквы очень просто. В Windows делается это примерно так:

Код:
//требует подключений <windows.h>
//                               <iostream>

SetConsoleOutputCP(1251); //кодировка вывода 
SetConsoleCP(1251);          //кодировка ввода

std::cout.setf(std::ios::fixed,std::ios::floatfield); //увеличивает точность показа дробной части чисел в консоли
Фокус в том, что бы не писать эти строки каждый раз заново в каждом новом консольном проекте.

Хочется просто подключить один раз #include "BersLibrary.h"
И что бы все настройки произошли автоматически.

Для этого нужно запустить функцию настройки консоли на выполнение ещё до того, как управляющий процесс дойдёт до точки входа в программу int main()

Сделать это очень просто, но для этого нужно немножко понимать, что такое "статические переменные", "статические функции"
И какие у них есть особенности.

6. А он и не должен был скомпилироваться, потому что у тебя как минимум отсутствует файл "BersLibrary.h"

Этот код был написан скорее в качестве иллюстрации, и не более того.
Что бы ты просто могла оценить идею, и реализовать нечто подобное самостоятельно.
_Bers вне форума Ответить с цитированием
Старый 04.01.2012, 20:36   #163
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Вот в простейшей реализации, без проверок на ошибки и прочего, только чтобы суть была ясна.
http://ideone.com/QRwAn
netrino вне форума Ответить с цитированием
Старый 04.01.2012, 20:54   #164
ITTI
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 65
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
3. Причем, моя функция сделана через задницу .
Если хочешь - можно заняться этим вместе.
5. В Windows делается это примерно так:
SetConsoleOutputCP(1251); //кодировка вывода
SetConsoleCP(1251); //кодировка ввода
6.Этот код был написан скорее в качестве иллюстрации, и не более того.
Что бы ты просто могла оценить идею, и реализовать нечто подобное самостоятельно.
3. в таком случае будет через две задници.
5. что означает 1251?
6. где out_of_range, runtime_error? написано есть в vector, но выдает ошибку.
ITTI вне форума Ответить с цитированием
Старый 04.01.2012, 21:10   #165
sVasilich
Форумчанин
 
Аватар для sVasilich
 
Регистрация: 16.12.2009
Сообщений: 224
По умолчанию

Цитата:
Сообщение от ITTI Посмотреть сообщение
5. что означает 1251?
Номер кодовой страницы, которую Windows использует по умолчанию для кириллицы.
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
sVasilich вне форума Ответить с цитированием
Старый 04.01.2012, 21:16   #166
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от ITTI Посмотреть сообщение
3. в таком случае будет через две задници.
5. что означает 1251?
6. где out_of_range, runtime_error? написано есть в vector, но выдает ошибку.
3. Да там нет ничего сложного.

5. По дефолту кодовая страница Windows 1251
Ты лучше не лезь сейчас в эти дебри.

6. Вот с этого момента поподробнее. С толком, с расстановкой. Где? Чего? Когда?
_Bers вне форума Ответить с цитированием
Старый 04.01.2012, 21:17   #167
ITTI
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 65
По умолчанию

Цитата:
Сообщение от sVasilich Посмотреть сообщение
Номер кодовой страницы, которую Windows использует по умолчанию для кириллицы.
т.е. потом: cout <<"Аяя"; и должно получится "Аяя", а не нечто другое?
ITTI вне форума Ответить с цитированием
Старый 04.01.2012, 21:22   #168
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Скомпилируй, и посмотри
Код:
#include <iostream>
#include <windows.h>

int main()
{
    SetConsoleOutputCP(1251); //кодировка вывода 
    SetConsoleCP(1251);          //кодировка ввода
    std::cout.setf(std::ios::fixed,std::ios::floatfield); //увеличивает точность показа дробной части чисел в консоли

    std::cout<<"Привет, мир!\n";

    return 0;
}
_Bers вне форума Ответить с цитированием
Старый 04.01.2012, 21:29   #169
ITTI
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 65
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
5. По дефолту кодовая страница Windows 1251
Ты лучше не лезь сейчас в эти дебри.
6. Вот с этого момента поподробнее. С толком, с расстановкой. Где? Чего? Когда?
5. теперь еще раз и помедленней.
SetConsoleOutputCP(1285); //куда это пихать
SetConsoleCP(1285); //и как выводить текст, обычно через cout?
6. void error(string s1, string s2){
throw runtime_error(s1+s2);}
"в стандартной библиотеке определено несколько типов исключений, таких как out_of_range, генерируемых классом vector...также в этой библ есть runtime_error" и т.п. у меня в векторе, по-моему, ничего нету.
ITTI вне форума Ответить с цитированием
Старый 04.01.2012, 21:32   #170
ITTI
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 65
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
Скомпилируй, и посмотри
Код:
#include <iostream>
#include <windows.h>

int main()
{
    SetConsoleOutputCP(1251); //кодировка вывода 
    SetConsoleCP(1251);          //кодировка ввода
    std::cout.setf(std::ios::fixed,std::ios::floatfield); //увеличивает точность показа дробной части чисел в консоли

    std::cout<<"Привет, мир!\n";

    return 0;
}
получилось что-то очень стремное.
ITTI вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PopupMenu со мной не дружит Жигилий_Ульяна Компоненты Delphi 5 25.12.2008 11:04
проблемы с select или со мной... smoke888 JavaScript, Ajax 2 23.09.2008 19:02