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

Найти в строке точку - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
seruy-t
 Аватар для seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
19.03.2012, 18:32     Найти в строке точку #1
Всем привет ! Нужно найти в строке точку. Делаю

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
#include <iostream>
#include <string>
 
//---------------------------------------------------------------------------
using std::cout;
using std::cin;
using std::endl;
using std::string;
 
int main()
{
 
string input;
cin >> input;
 
short int i,pntr;
 
for(i=0;i<=input.length();i++){
 
                if(input[i] = "." ) pntr =i;
 
 
 
                       }
 
 
 
 
 
        return 0;
}
//---------------------------------------------------------------------------
Ошибка преобразования типов в
C++
1
      if(input[i] = "." ) pntr =i;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
seruy-t
 Аватар для seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
19.03.2012, 21:12  [ТС]     Найти в строке точку #21
Ну так если целая часть отрицательная, по идеи, дробная тоже ?

Добавлено через 1 минуту
R136a1, вот и я не знаю )))

Добавлено через 8 минут
Вот что интересно : мой код сервер принял на 78.9% , а ваш на 47.4%. Хотя оба они рабочие


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
39
40
41
42
43
44
45
46
47
 #include <iostream>
#include <string>
#include <stdlib.h>
//---------------------------------------------------------------------------
using namespace std;
int main()
 {
    string input;
    cin >> input;
 
    long int i,pntr;
 
    for(i=0;i<input.length();i++)
    {
        if(input[i] == '.' )
        pntr =i;
    }
 
 
int lft=0;
 
   for(i=0;i<pntr;i++){
       if(i!='-'){
   lft += input[i] - '0';
       }
                     }
 
 
 
  int right =0;
 
       for(i=pntr+1;i<input.length();i++){
 
           if(i!='-'){
   right += input[i] - '0';
           }
                     }
 
 
//cout << lft <<" "<<right<<endl;
 
if(lft-right==0) cout << "Yes"<<endl;
else cout << "No"<<endl;
 
 
    return 0;
 }
Есть идеи что не так ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
19.03.2012, 21:29     Найти в строке точку #22
Цитата Сообщение от seruy-t Посмотреть сообщение
Ну так если целая часть отрицательная, по идеи, дробная тоже ?
Если так, то:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <cstring>
#include <cstdlib>
 
int main()
{
        char num[10];
        int left = 0;
        int right = 0;
 
        std::cin.getline(num,10);
 
        char *numToken = strtok(num,".");
 
        int count = 0;
 
    bool isnegative = false;
 
        while(numToken != NULL)
        {
        int  ptr_count = 0;
 
                if(!count)
        {
            if(*numToken == '-')
            {
                isnegative = true;
                ptr_count++;
            }
 
            for( ; *(numToken + ptr_count) != '\0'; ptr_count++)
                if(!isnegative)
                                left += *(numToken + ptr_count) - '0';
                else
                    left -= *(numToken + ptr_count) - '0';
        }
                else
            for( ; *(numToken + ptr_count) != '\0'; ptr_count++)
                if(!isnegative)
                                right += *(numToken + ptr_count) - '0';
                else
                    right -= *(numToken + ptr_count) - '0';
 
                numToken = strtok(NULL,".");
 
                count++;
        }
 
        if(left == right)
                std::cout << "yes" << std::endl;
        else
                std::cout << "no" << std::endl;
 
        return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от seruy-t Посмотреть сообщение
Вот что интересно : мой код сервер принял на 78.9% , а ваш на 47.4%. Хотя оба они рабочие
что за сервер?
seruy-t
 Аватар для seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
19.03.2012, 21:39  [ТС]     Найти в строке точку #23
R136a1,
что за сервер?
e-olimp.com Здесь есть много задач на программирование, готовимся к олимпиаде


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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <cstring>
#include <cstdlib>
 
int main()
{
        char num[10];
        int left = 0;
        int right = 0;
 
        std::cin.getline(num,10);
 
        char *numToken = strtok(num,".");
 
        int count = 0;
 
        bool isnegative = false;
 
        while(numToken != NULL)
        {
                int  ptr_count = 0;
 
                if(!count)
                {
                        if(*numToken == '-')
                        {
                                isnegative = true;
                                ptr_count++;
                        }
 
                        for( ; *(numToken + ptr_count) != '\0'; ptr_count++)
                                if(!isnegative)
                                        left += *(numToken + ptr_count) - '0';
                                else
                                        left -= *(numToken + ptr_count) - '0';
                }
                else
                        for( ; *(numToken + ptr_count) != '\0'; ptr_count++)
                                if(!isnegative)
                                        right += *(numToken + ptr_count) - '0';
                                else
                                        right -= *(numToken + ptr_count) - '0';
 
                numToken = strtok(NULL,".");
 
                count++;
        }
 
        if(left == right)
                std::cout << "yes" << std::endl;
        else
                std::cout << "no" << std::endl;
 
        return 0;
}
68%
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
19.03.2012, 22:05     Найти в строке точку #24
Глянул компиляторы на сайте, там можно выбрать компилятор? Если да, то мой код прогоняйте через gcc . Если нет, то вот это прочитайте
seruy-t
 Аватар для seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
19.03.2012, 22:14  [ТС]     Найти в строке точку #25
R136a1, так и делаю, сам им пользуюсь.
читал, там толком ничего и не сказано
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
19.03.2012, 22:16     Найти в строке точку #26
Цитата Сообщение от seruy-t Посмотреть сообщение
R136a1, так и делаю, сам им пользуюсь.
читал, там толком ничего и не сказано
Меняли хидеры как показано в примерах ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2012, 16:51     Найти в строке точку
Еще ссылки по теме:

C++ Найти точку максимума функции
Найти точку на прямой C++
C++ В введенной строке заменить каждую запятую и точку на точку с запятой

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

Или воспользуйтесь поиском по форуму:
seruy-t
 Аватар для seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
20.03.2012, 16:51  [ТС]     Найти в строке точку #27
R136a1, это не играет роли, если бы проблема была в хедерах выдало бы ошибку компилирования
Yandex
Объявления
20.03.2012, 16:51     Найти в строке точку
Ответ Создать тему
Опции темы

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