Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
#1

Работа со string - C++

15.02.2012, 13:33. Просмотров 1517. Ответов 14
Метки нет (Все метки)

Посоветуйте как сделать? Есть переменная типа string .Ей присваивается значение дробного числа , например 17.5 . Нужно написать 2 функции :
  • 1я анализирует целую часть числа (то есть до точки) и записывает ее в переменную n .
  • 2я вторая функция анализирует дробную часть числа (после точки) и присваивает ее значение переменной i.
функции должны работать не зависимо друг от друга
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2012, 13:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа со string (C++):

Работа с map<string, map<string, string>> - C++
Всем привет! Что-то запарился в неожиданном месте... Есть тип данных, который выглядит так: map&lt;string, map&lt;string,string&gt;&gt; Мне...

Доступ к паре в map<string, vector<pair<string, string>>>Temp - C++
Подскажите пожалуйста как получить данные в векторе пар ? void showData(const map&lt;string, vector&lt;pair&lt;string, string&gt;&gt;&gt;Temp) { ...

Работа со string - C++
Есть строка string. Нужно разбить ее на несколько слов используя определенный символ. Никак не могу понять как. Помогите)

Работа с string в С++ - C++
Переменная string str = &quot;123456&quot;. Необходимо второй элемент переменной str (str) преобразовать в число и передать в переменную int i. Как...

работа со string - C++
Определить, имеется ли в заданной строке подстрока, содержащая заданное число повторяющихся заданных символов. (нужно штобы в задании...

работа со string - C++
Здравствуйте, такая проблема: Создаю например такой класс: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class...

14
fasked
Эксперт С++
4963 / 2543 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
15.02.2012, 14:34 #2
Цитата Сообщение от ahamoth Посмотреть сообщение
Посоветуйте как сделать?
stringstream + string::find (или что-то в этом духе).
0
ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
15.02.2012, 15:04  [ТС] #3
написал первую функцию, прога вылетает. что не правильно делаю?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cstdlib>
#include <iostream>
#include <string.h>
using namespace std;
 
int main(int argc, char *argv[])
{setlocale(LC_CTYPE,"Russian"); 
    string chislo , celaya_chast;
    int i,j;
   cout<<"введите число"<<endl;
   cin>>chislo;
   getline (cin, chislo);
   do 
   { celaya_chast[i]=chislo[i];}
   while (chislo[i]!='+');
cout<<celaya_chast;
  
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
15.02.2012, 15:05 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
using std::cin;
using std::string;
using std::cout;
 
int main()
{
    string s = "6666.3333";
    size_t sz=s.find_first_of('.');
    char buf1 [10];
    char buf2 [10];
    strncpy(buf1,&s[0],sz);
    strncpy(buf2,&s[sz+1],s.size()-sz);
    buf1[sz] =0;
    cout<<buf1<<"   "<<buf2;
        system("PAUSE");
    return 0;
}
работа с функциями строки. скидывает целую и дробную в 2 разных переменных.
но я вижу что ты и сам уже все написал
1
ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
15.02.2012, 15:10  [ТС] #5
AzaKendler, так мой то код не работает , что я не правильно делаю?
0
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
15.02.2012, 15:17 #6
Цитата Сообщение от ahamoth Посмотреть сообщение
while (chislo[i]!='+');
это символ + является разделителем целой и дробной части. я так понял?
наверно я не уловил задачи
0
ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
15.02.2012, 15:17  [ТС] #7
AzaKendler, да
0
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
15.02.2012, 15:23 #8
Цитата Сообщение от ahamoth Посмотреть сообщение
getline (cin, chislo);
эта строка что делает?
разве не cin.getline должно быть
0
ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
15.02.2012, 15:30  [ТС] #9
я как тут сделал http://www.mochima.com/tutorials/strings.html
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string param_name, param_value, url_encoded;
 
do
{
    getline (cin, param_name);
    if (param_name != "")
    {
        getline (cin, param_value);
        //  ... 
    }
}
while (param_name != "");
 
cout << "URL-encoded: " << url_encoded << endl;
0
KATbIK
86 / 81 / 10
Регистрация: 02.08.2011
Сообщений: 335
15.02.2012, 19:37 #10
Вообще учись на примере AzaKendler.
А это, вот, чуток поправил. Не проверял, прям в быстром ответе поправил. Не будет точки, капут проге))

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
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
 
int main(int argc, char *argv[])
{setlocale(LC_CTYPE,"Russian"); 
    string chislo , celaya_chast;
    int i = 0,j;
   cout<<"введите число"<<endl;
   cin>>chislo;
   while(chislo.at(i) != '.')
   {
      celaya_chast += chislo.at(i);
      ++i; 
   }
   //getline (cin, chislo);
   //do 
   //{ celaya_chast[i]=chislo[i];}
   //while (chislo[i]!='+');
cout<<celaya_chast << endl;
  
    system("PAUSE");
    return EXIT_SUCCESS;
}
алгоритмы stl
1
ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
15.02.2012, 21:37  [ТС] #11
А как реализовать следующий алгоритм . дана переменная типа string . в нее будет заноситься дробная часть десятичного числа.Требуется реализовать алгоритм перевода дробной части десятичного числа в 2ю сс.
вот принцип :Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.
0.11*2 = 0.22 (целая часть 0)
0.22*2 = 0.44 (целая часть 0)
0.44*2 = 0.88 (целая часть 0)
0.88*2 = 1.76 (целая часть 1)
0.76*2 = 1.52 (целая часть 1)
0.52*2 = 1.04 (целая часть 1)
Получаем число в 2-ой системе счисления: 000111
0.11 = 0001112
0
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
15.02.2012, 23:18 #12
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
35
36
37
38
#include <iostream>
#include <string>
using std::string;
using std::cout;
 
string convert (const string & s) //пересчет по твоей схеме с точностью 6 знаков
{
 
    char buf [20];  
    string rez = "000000";
    strncpy(buf,s.c_str(),s.size());
    int val = atoi(&buf[2]);
    double divider = (s.size()-2);
    divider = pow(10.0,divider);
    float num = val/divider;
    int precizion = 6;
    int count = 0;
    while(precizion--)
    {
        
        if((num*=2)<1)
            rez[count++] = '0';
        else
            rez[count++] = '1';
    }
 
    return rez;
};
 
 
int main()
 
{
    string s = "0.23456"; 
    cout<<convert(s); //возвращает дробную часть по твоей схеме 
 
return 0;
}
1
ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
16.02.2012, 00:12  [ТС] #13
на pow ругается
0
Jupiter
Каратель
Эксперт С++
6566 / 3987 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.02.2012, 00:25 #14
Цитата Сообщение от ahamoth Посмотреть сообщение
на pow ругается
C++
1
#include <cmath>
0
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
16.02.2012, 14:23 #15
ahamoth,

C++
1
2
3
4
5
6
7
8
9
10
11
while(precizion--)
    {
        
        if((num*=2)<1)
            rez[count++] = '0';
        else
        {                    // скобки обязательно 
            num-=1; // отбрасываем целое
            rez[count++] = '1';
        }
    }
исправленный цикл. ты прав. упустил кое- что в твоей системе. то что когда становится более 1 то надо опять отбросить целое. и скобки обязательны. попробуй так.
1
16.02.2012, 14:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2012, 14:23
Привет! Вот еще темы с ответами:

Работа с классом string в C++ - C++
Как прочитать данные из файлы в строковую переменную string?

Работа с Char и String - C++
Добрый день. Задание: Дан текст. Вставить в него точку после каждого второго слова. Как можно осуществить подобное используя char....

Работа с char и string - C++
Привет. Продолжаю изучать C++. Можете посоветовать хорошую книгу или что-нибудь вроде книги(может статью), про работу с типами char и...

работа с классом string - C++
у меня есть переменная типа string key(из 16 символов),мне нужно получить из нее 8 отдельных переменных (k) каждый по 2 байта,как это...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru