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

Остановка вектора - C++

Восстановить пароль Регистрация
 
MartinSeptim
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 19
19.02.2012, 18:19     Остановка вектора #1
Здравствуйте! Помогите пожалуйста реализовать в ниже приведенном коде, как остановить функцию readlong как только появиться точка или запятая?

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
56
#include "StdAfx.h"
#include "conio.h"
#include <iostream>
#include <vector>
#include <iomanip>
#include <string>
#include <cstdlib>
#define BASE 10
#define LEN 1
 
typedef std::vector <int> type;
 
void readlong (type &);
void mult (type &, type &, type &);
 
int main()
{
    type a, b, c, d, rez;
 
    std::cout << "First long number: "; 
    readlong (a);
    std::cout << "Second long number: ";
    readlong (b);
 
    mult (a, b, rez); //использование умножения
 
    std::cout << rez.back ();
    for (int i = rez.size () - 2; i >= 0; i--)
        std::cout << rez[i];
 getch();
    return 0;
}
 
void readlong (type &vec)
{
    std::string str;
    std::cin >> str;
 
    for (int i = str.size (); i > 0; i--)
        vec.push_back (atoi (str.substr (i - LEN, LEN).c_str()));
}
 
void mult (type &a, type &b, type &rez)
{
    rez.resize (a.size() + b.size());
    for (int i = 0; i < a.size(); ++i)
        for (int j = 0, carry = 0; j < b.size() || carry; ++j) //сarry вес разряда
        {
            long long cur = rez[i+j] + a[i] * (j < b.size() ? b[j] : 0) + carry;
            rez[i+j] = cur % BASE;
            carry = cur / BASE;
        }
 
    while (rez.size() > 1 && rez.back() == 0)
        rez.pop_back();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 18:19     Остановка вектора
Посмотрите здесь:

Дан список, элементы которого являются координатами вектора. Найти длину вектора C++
C++ Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае
Заданы три вектора a(n), b(m), c(k). Вывести наименование вектора, в котором максимальна сумма четных элементов, стоящих на нечетных местах C++
Заданный вектор А, состоящий из n элементов. Переставить компоненты вектора, размещенные после самого элемента вектора А C++
Определить количество положительных элементов вектора С(10) и заменить этим значением минимальный элемент вектора А(5) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.02.2012, 18:28     Остановка вектора #2
C++
1
2
if (c == '.') // с -Очередной символ
    return ;
MartinSeptim
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 19
19.02.2012, 18:37  [ТС]     Остановка вектора #3
Как я понимаю это нужно вставить после
C++
1
2
 std::cout << "First long number: "; 
        readlong (a);
или по-другому?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.02.2012, 18:39     Остановка вектора #4
MartinSeptim, вставить нужно в функции.
Цитата Сообщение от MartinSeptim Посмотреть сообщение
как остановить функцию readlong как только появиться точка или запятая?
Где появится?

Для запятой
C++
1
2
if ( c == '.' || c == ',' ) // с -Очередной символ
    return ;
MartinSeptim
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 19
19.02.2012, 18:42  [ТС]     Остановка вектора #5
Цитата Сообщение от go Посмотреть сообщение
MartinSeptim, вставить нужно в функции.
Где появится?

Для запятой
C++
1
2
if ( c == '.' || c == ',' ) // с -Очередной символ
    return ;
Появится в readlong(a) т.е. я вбиваю число (длинное), после появления запятой обрабатывается readlong(c). Вообщем вся программа реализация перемножения двух длинных чисел с фиксированной запятой.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.02.2012, 18:45     Остановка вектора #6
Как Вы определяете, что появилась точка?
нигде посимвольного перебора у Вас не вижу.
MartinSeptim
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 19
19.02.2012, 19:36  [ТС]     Остановка вектора #7
Прошу прощения за мой тупой вопрос, но как его реализовать? Я пытался добавить связку if-else и while-do, но мне выдает ошибку
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.02.2012, 19:39     Остановка вектора #8
Если хотите получить вопрос в шапке топика, то ответьте
Цитата Сообщение от go Посмотреть сообщение
Как Вы определяете, что появилась точка?
MartinSeptim
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 19
19.02.2012, 19:45  [ТС]     Остановка вектора #9
Цитата Сообщение от go Посмотреть сообщение
Если хотите получить вопрос в шапке топика, то ответьте
В выше приведенном коде никак, но я пытался сделать
C++
1
2
std::cout << "First long number: ";
   do readlong (a); while(a!=",")
Но как я понимаю это в корне неверно.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.02.2012, 19:47     Остановка вектора #10
std::find ищете точку.
MartinSeptim
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 19
19.02.2012, 21:38  [ТС]     Остановка вектора #11
Пожалуйста, можете привести пример использования std::find в моем случае? Стоящего примера в гугле не нашел
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2012, 21:51     Остановка вектора
Еще ссылки по теме:

STL. Функция, которая будет искать элементы большее среднего арифметического вектора и удалять их из вектора C++
Составить главную программу и функцию. Для данного вектора А(М) найти количество неповторяющихся элементов вектора C++

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.02.2012, 21:51     Остановка вектора #12
http://www.cplusplus.com/reference/algorithm/find/

Добавлено через 17 секунд
Там есть пример.
Yandex
Объявления
19.02.2012, 21:51     Остановка вектора
Ответ Создать тему
Опции темы

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