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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
#1

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

19.03.2012, 18:32. Просмотров 2054. Ответов 26
Метки нет (Все метки)

Всем привет ! Нужно найти в строке точку. Делаю

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;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2012, 18:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти в строке точку (C++):

В введенной строке заменить каждую запятую и точку на точку с запятой - C++
В введенной строке заменить каждую запятую и точку на точку с запятой и вывести полученную строку.

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

Найти точку D, симметричную точку A относительно стороны BC. - C++
помогите решить пожалуйста...

Замена в строке восклицательного знака на точку - C++
Надо написать функцию которает поменяет влюбом тексте все &quot;!&quot; знаки на &quot;.&quot; надо использовать указатели.

В строке заменить все запятые на точку - C++
В строке заменить все запятые на точку. Подсчитать количество замен.

Найти точку на окружности - C++
Здравствуйте. Подскажите, пожалуйста. По написанной программе надо найти точку, лежащую на окружности. Было задание :Составить...

26
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
19.03.2012, 18:41 #2
Исправляю только это, дальше пробуйте сами - это к лучшему если самому учиться.
Конкретно по поводу ошибок: вы вместо проверки производили присваивание ну и string[i] элемент это ведь символ, а не строка так что и сравнивать его нужно с символом (который берётся в ' '), а не со строкой (что берётся в " ").
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#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;
}
Добавлено через 2 минуты
Добавлю что точек же может быть несколько, возможно лучше выводить сразу результат что мол точка есть там организовав цикл например так:
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
#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;
          cout<<pntr<<'\t';
      }
    return 0;
}
А ещё у string есть хорошие функции поиска подстроки ... но о них я думаю вы узнаете чуть позже.
1
seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
19.03.2012, 18:47  [ТС] #3
Gepar, в данном случаи точка в строке только одна, что упрощает задачу
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
19.03.2012, 18:57 #4
seruy-t, ну а вот код используя функцию string если вам интересно
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    int x;
    string input;
    cin >> input;
    if((x=input.find("."))!=string::npos)
     cout<<x;
}
Длина кода значительно уменьшилась
1
seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
19.03.2012, 19:07  [ТС] #5
C++
1
2
3
4
5
6
7
8
9
int lft=0;
 
   for(i=0;i<pntr;i++){
   lft = lft + atoi(input[i]) ;
     //cout << input[i]<<"\n";
 
                   }
 
cout << lft<<endl;
А здесь что не так ?

Добавлено через 5 минут
Gepar, можно линк на функции работы с строками ?
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
19.03.2012, 19:10 #6
Цитата Сообщение от seruy-t Посмотреть сообщение
А здесь что не так ?
Не знаю,может и всё так, код ведь не полный.

Цитата Сообщение от seruy-t Посмотреть сообщение
Gepar, можно линк на функции работы с строками ?
можно.
0
seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
19.03.2012, 19:14  [ТС] #7
Вот полный код

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
#include <iostream>
#include <string>
#include <stdlib.h>
//---------------------------------------------------------------------------
using namespace std;
int main()
{
    string input;
    cin >> input;
 
    short int i,pntr;
 
    for(i=0;i<=input.length();i++)
    {
        if(input[i] == '.' )
        pntr =i;
    }
    
 
int lft=0;
 
   for(i=0;i<pntr;i++){
   lft = lft + atoi(input[i]) ;
     cout << input[i]<<"\n";
 
                   }
 
cout << lft<<endl;
 
    return 0;
}
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
19.03.2012, 19:20 #8
C++
1
atoi(input[i])
с чего такая уверенность что там обязательно цифры?
0
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
19.03.2012, 19:23 #9
seruy-t,
C++
1
lft = lft + atoi("input[i]") ;
ну и для соответствия лучше объявить
C++
1
short unsigned int i,pntr;
0
seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
19.03.2012, 19:24  [ТС] #10
Расчет на то, что будут введены только цифры и один раз точка. Словом, проверку входных данных я потом реализую
0
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
19.03.2012, 19:29 #11
хотя.чет я не-то написал. там же вывод строки до точки
правильно Gepar сказал, нужна проверка и правильное преобразование
0
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
19.03.2012, 19:38 #12
Цитата Сообщение от seruy-t Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
int lft=0;
 
   for(i=0;i<pntr;i++){
   lft = lft + atoi(input[i]) ;
     //cout << input[i]<<"\n";
 
                   }
 
cout << lft<<endl;
А здесь что не так ?
У atoi в аргументе должен быть константный указатель на char, грубо говоря строка. atoi

Добавлено через 8 минут
Цитата Сообщение от seruy-t Посмотреть сообщение
lft = lft + atoi(input[i])
замените на
C++
1
lft += input[i] - '0';
1
seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
19.03.2012, 20:02  [ТС] #13
Ребята, программа должна сравнить целую и дробную части.

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
#include <iostream>
#include <string>
#include <stdlib.h>
//---------------------------------------------------------------------------
using namespace std;
int main()
{
    string input;
    cin >> input;
 
    short unsigned int i,pntr;
 
    for(i=0;i<=input.length();i++)
    {
        if(input[i] == '.' )
        pntr =i;
    }
 
 
int lft=0;
 
   for(i=0;i<pntr;i++){
   lft += input[i] - '0';
                     }
 
 
 
  int right =0;
 
       for(i=pntr+1;i<input.length();i++){
   right += input[i] - '0';
                     }
 
 
 
 
if(lft=right) cout << "Yes"<<endl;
else cout << "No"<<endl;
 
 
    return 0;
}
Работает, но только для положительный значений. Как быть с отрицательными ?

заменил

C++
1
2
3
 for(i=0;i<pntr;i++){
   lft += input[i] - '0';
                     }
на

C++
1
2
3
4
5
6
7
int lft=0;
 
   for(i=0;i<pntr;i++){
       if(i!='-'){
   lft += input[i] - '0';
       }
                     }
0
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
19.03.2012, 20:22 #14
у вас ошибка в 37 строчке
Цитата Сообщение от seruy-t Посмотреть сообщение
if(lft=right) cout << "Yes"<<endl;
Вы не сравниваете, а присваиваете.
Я бы сделал проще:
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
#include <iostream>
#include <cstring>
#include <cstdlib>
 
int main()
{
        char num[10];
        int left;
        int right;
 
        std::cin.getline(num,10);
 
        char *numToken = strtok(num,".");
 
        int count = 0;
 
        while(numToken != NULL)
        {
                if(!count)
                        left = atoi(numToken);
                else
                        right = atoi(numToken);
 
                numToken = strtok(NULL,".");
 
                count++;
        }
 
        if(left == right)
                std::cout << "yes" << std::endl;
        else
                std::cout << "no" << std::endl;
 
        return 0;
}
Цитата Сообщение от seruy-t Посмотреть сообщение
Работает, но только для положительный значений. Как быть с отрицательными ?
Это как?
1
seruy-t
2 / 2 / 0
Регистрация: 21.08.2010
Сообщений: 216
19.03.2012, 20:27  [ТС] #15
R136a1,
Это как?
Когда вводил отрицательное число программа выдавала бред
Я уже это поправил (вроде )
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2012, 20:27
Привет! Вот еще темы с ответами:

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

Найти точку на прямой - C++
Найти на кривой Y(X)=sin2(2X)cos(4X) точку, абсцисса которой принадлежит интервалу и сумма расстояний от которой до прямых a1x+b1y+c1=0 и...

Найти седловую точку матрицы! - C++
Седловой точкой матрицы назовём такой элемент, который является одновременно максимальным в столбце и минимальным в строке. Найти одну,...

Найти точку принадлежащую прямой - C++
Имею координаты двух точек, нужно найти точку, которая принадлежит этой прямой. Точка должна быть ближе ко второй вершине, ну или к первой...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
19.03.2012, 20:27
Ответ Создать тему
Опции темы

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