Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 76 из 87<  1 ... 73  74  75  76  77  78  79 ... 87  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
silent_assassin писал(а):
в общем надо написать на С++ программку

дана строка S. создать новую строку содержащую в начале буквы,
а после а затем остальные символы из s

То есть надо чтобы буквы которые есть в строке были в начале строки а цифры были в конце , как примерно это делается я понимаю но реализовать на С++ .
Помогите если кто знает :cry:


Да, вы нас озадачили тут всех

Код:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    wstring o_str;
    wcin >> o_str;

    int unAlphaIndex = 0;
    for( int index = 0; o_str[index]; ++index )
    {
        if( ::isalpha( o_str[index] ) )
            wcout << o_str[index];
        else
            o_str[ unAlphaIndex++ ] = o_str[index];
    }
    o_str[ unAlphaIndex ] = '\0';

    wcout << o_str.c_str() << endl;
   
    return 0;
}


Код для хотя бы какого челленджа написал тут, так что проверяйте. То что isalpha() тут заюзана это не есть гуд, но вы разберётесь как вам лучше. Я сделал вывод новой строки на экран, если вам нужна именно новая преобразованная строка, пару строк измените. И если вам нужно чтобы строка шла вместе с пробелом, заюзаете gets_s()



Партнер
 

Member
Статус: Не в сети
Регистрация: 27.12.2011
Откуда: Краснодар
Industrialice Я только недавно начал позновать с++ так что я пока многого не знаю , щас буду разбираться что да как .
СПАСИБО :beer: :beer: :beer: :beer:
СПАСИБО
? вроде работает как сделать чтоб окно с программой сразу не закрывалось ? :bandhead: vs2008


 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
silent_assassin писал(а):
? вроде работает как сделать чтоб окно с программой сразу не закрывалось ? :bandhead: vs2008

Перед return 0; вставте строку ::system( "pause" );


 

Member
Статус: Не в сети
Регистрация: 27.12.2011
Откуда: Краснодар
Industrialice писал(а):
Перед return 0; вставте строку ::system( "pause" );

я поставил о в общем теперь вроде как вообще не работает
код#include <iostream>
[spoiler=код
#include <iostream>
#include <string>
using namespace std;

int main()
{
wstring o_str;
wcin >> o_str;

int unAlphaIndex = 0;
for( int index = 0; o_str[index]; ++index )
{
if( ::isalpha( o_str[index] ) )
wcout << o_str[index];
else
o_str[ unAlphaIndex++ ] = o_str[index];
}
o_str[ unAlphaIndex ] = &#39;\0&#39;;

wcout << o_str.c_str() << endl;
::system( "pause" );

return 0;
}


Добавлено спустя 4 минуты 32 секунды:
сейчас с преди двойное двоиточие убрал вроде все пашет :-) , блин с этим c++ голова сойдет с ума :crazy:


 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
Код:
#include <iostream>
using namespace std;

void main()
{
    wchar_t str[512];
    ::_getws_s( str, 511 );

    int unAlphaIndex = 0;
    for( int index = 0; str[index]; ++index )
    {
       if( ::isalpha( str[index] ) )
         wcout << str[index];
       else
         str[ unAlphaIndex++ ] = str[index];
    }
    str[ unAlphaIndex ] = '\0';

    wcout << str << endl;

    ::system( "pause" );
}


Вот точно рабочий вариант. С двойным двоеточием проблем быть не должно вообще


 

Member
Статус: Не в сети
Регистрация: 27.12.2011
Откуда: Краснодар
Industrialice Спасибо старый тоже работает но этот тоже рассмотрю жаль сейчас уже сколо дрыхнуть надо завтра в универ под пресс :crazy:


 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
silent_assassin писал(а):
Industrialice Спасибо старый тоже работает

Используйте новый, в старом я что-то забылся и не очень хорошее условие для цикла написал. Конечно же лучше писать
for( unsigned index = 0; index < o_str.size(); ++index )
а не
for( int index = 0; o_str[index]; ++index )
Да и незачем вам пока со string связываться


Последний раз редактировалось Industrialice 12.03.2012 21:57, всего редактировалось 2 раз(а).

 

Member
Статус: Не в сети
Регистрация: 27.12.2011
Откуда: Краснодар
Industrialice писал(а):
Используйте новый, в старом я что-то забылся и неправильное условие для цикла написал. Конечно же должно было быть
for( unsigned index = 0; index < o_str.size(); ++index )
а не
for( int index = 0; o_str[index]; ++index )

бывает :-) , я ж еще в нем чайник , как говорится это вам не видуху разгонять .


 

Member
Статус: Не в сети
Регистрация: 08.05.2006
Откуда: СПБ
есть ли C++ генератор случайных чисел с заданной вероятностью?
если нет, подскажите алгоритм

_________________
Мы все знаем, что Linux — это круто… он выполняет бесконечные циклы за 5 секунд.
* Линус Торвальдс


 

Member
Статус: Не в сети
Регистрация: 20.03.2009
Откуда: Санкт-Петербург
Russian
А конкретнее, что требуется генерировать? Будет задан диапазон чисел, где каждому отрезку соответствует своя вероятность?
В принципе начало такое - генерируешь случайное число типа int. После делишь его на MAX_INT. Этим получил какое-либо значение от 0 до 1. Если нужно выдавать например 10 с вероятностью 30%, 15 с 50%, 16 с 20%, то тогда, если полученное значение от 0,5 до 1, то выдаешь 15. От 0.2 до 0.5 - выдаешь 10. От 0 до 0.2 - выдаешь 16.

_________________
Задачи бывают простыми и очень простыми...


 

Member
Статус: Не в сети
Регистрация: 27.12.2011
Откуда: Краснодар
как в VS 2008 включить отображение ошибок когда пишешь программу на С++ ? во вкладке window смотрел но что то не нашел :scare:


 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
Danmerpro писал(а):
Russian
А конкретнее, что требуется генерировать? Будет задан диапазон чисел, где каждому отрезку соответствует своя вероятность?
В принципе начало такое - генерируешь случайное число типа int. После делишь его на MAX_INT. Этим получил какое-либо значение от 0 до 1. Если нужно выдавать например 10 с вероятностью 30%, 15 с 50%, 16 с 20%, то тогда, если полученное значение от 0,5 до 1, то выдаешь 15. От 0.2 до 0.5 - выдаешь 10. От 0 до 0.2 - выдаешь 16.

А я не понял зачем нам делить на MAX_INT( кстати INT_MAX ), ведь тот же rand() выдаёт числа от 0 до RAND_MAX. И исходя из вопроса я вообще не понял - с заданной вероятностью чего именно?

silent_assassin писал(а):
как в VS 2008 включить отображение ошибок когда пишешь программу на С++ ? во вкладке window смотрел но что то не нашел :scare:

Ээээ, вы про IntelliSence? Проверка синтаксиса во время написания кода и ещё некоторые функции


 

Member
Статус: Не в сети
Регистрация: 08.05.2006
Откуда: СПБ
есть диапазон чисел, точнее всего два 0 и 1
сейчас вроде как функцией rand() числа выпадают равномерно,но мне надо чтоб например число выпадало с определенной вероятностью, которую можно задать.
Например число 0 выпадает с вероятностью 0.8, число 1 с вероятностью 0.2 соответственно

_________________
Мы все знаем, что Linux — это круто… он выполняет бесконечные циклы за 5 секунд.
* Линус Торвальдс


 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
Russian писал(а):
есть диапазон чисел, точнее всего два 0 и 1
сейчас вроде как функцией rand() числа выпадают равномерно,но мне надо чтоб например число выпадало с определенной вероятностью, которую можно задать.
Например число 0 выпадает с вероятностью 0.8, число 1 с вероятностью 0.2 соответственно

Ну, первый гамно-код что при пришёл мне в голову в такое время примерно так выглядит
Код:
int CrapRand( float zeroP, float oneP )
{
    int zeroPercent = zeroP * 100.f + 0.1f;  //  + 0.1f для защиты от погрешности вычислений вещественных чисел
    int onePercent = oneP * 100.f + 0.1f;

    int random = rand() % 100;
    if( random < zeroPercent )
        return 0;
    return 1;
}

Функция, кидаете в неё свои CrapRound( 0.8f, 0.2f ) и забираете резалт. Будет голова свежая подумаю получше. Но вроде итак всё ок работает


Последний раз редактировалось Industrialice 21.03.2012 1:21, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 08.05.2006
Откуда: СПБ
Industrialice
сейчас попробуем
спасибо

_________________
Мы все знаем, что Linux — это круто… он выполняет бесконечные циклы за 5 секунд.
* Линус Торвальдс


 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
Russian, кстати если у вас так и будет 2 числа, то во втором % смысла нету - понятно что его можно получить 100% - % первого числа. Да и в любом случае у меня он не юзается


 

Member
Статус: Не в сети
Регистрация: 27.12.2011
Откуда: Краснодар
Industrialice писал(а):
Ээээ, вы про IntelliSence? Проверка синтаксиса во время написания кода и ещё некоторые функции

Ну в общем в универе такой же стоит ВБ2008 и там если какой косяк компилятор находит пишет в окне ошибок тама стразу смотришь и исправляешь


 

Member
Статус: Не в сети
Регистрация: 12.09.2010
Откуда: Калининград
silent_assassin писал(а):
Ну в общем в универе такой же стоит ВБ2008 и там если какой косяк компилятор находит пишет в окне ошибок тама стразу смотришь и исправляешь

Попробуйте импортировать настройки ВБ. А вообще ошибки всегда пишутся, их как раз никак и не отключить. Попробуйте ещё в Вид нажать на Список ошибок


 

Member
Статус: Не в сети
Регистрация: 27.12.2011
Откуда: Краснодар
Industrialice Домой приду фоту кину главного окна с программой :-)


 

Member
Статус: Не в сети
Регистрация: 20.03.2009
Откуда: Санкт-Петербург
Industrialice писал(а):
зачем нам делить на MAX_INT( кстати INT_MAX ),

Затем, чтобы не делать так
Industrialice писал(а):
int random = rand() % 100;

Этот код вернет целое число в диапазоне, ограниченным модулем. То есть 53,567892 получить не удастя. То, что предложил я, позволяет задать вероятность с максимальной точностью по количеству знаков.

_________________
Задачи бывают простыми и очень простыми...


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 76 из 87<  1 ... 73  74  75  76  77  78  79 ... 87  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan