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

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

Войти
Регистрация
Восстановить пароль
 
 
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
#1

не получается сделать задание с оператором -> - C++

21.06.2011, 19:02. Просмотров 779. Ответов 15
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//тема про оператор стрелка -> я так понимаю задание надо сделать с использованием этого оператора
//напишите программу, в которой определен вектор указателей на строки. Организуйте
//перебор вектора с отображением каждой строки и ее размера
#include <iostream>
#include <vector>
#include <string>
using namespace std;   
 
int main()
{
    string word;
    vector<string> *ptr;
 
    while (cin >> word)
        ptr->push_back(word);
 
    for(vector<string>::iterator iter=ptr->begin(); iter!=ptr->end(); ++iter)
        cout << ptr << " = " << ptr->size() << " simbols";
 
    system("pause");
    return 0; 
}
ошибка: использована переманная ptr без инициализации... помогите сделать задание
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2011, 19:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не получается сделать задание с оператором -> (C++):

Не получается решить задание на рекурсией! - C++
Не получается решить задачу((( Помогите решить на С

Как сделать это задание? - C++
329 задание. Подскажите пожалуйста подробно, как это задание выполнить?

Как сделать это задание? - C++
Определить номер первого из чисел sin x, sin(sin x), sin(sin(sin x)),.., меньшего по модулю 10^-3.

Задание на переход транзактов в блок, отличный от последующего, с оператором Трансфер - GPSS
В автомобильной мастерской стоит одна полировальная машина для полирования некоторой детали двигателя машины. Для этого необходимо...

.NET 4.x Возможно ли воспользоваться в VB.NET оператором логического сдвига Shr (Shl) и оператором And? - Visual Basic .NET
Возможно ли воспользоваться в VB.NET оператором логического сдвига Shr (Shl) и оператором And?

Как оператором выбора сделать так, чтобы выбирало среди 5 возможных вариантов? - Delphi
Помогите, забыл))) Как оператором выбора сделать так чтобы выбирало среди 5 возможных вариантов?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.06.2011, 19:17 #2
память нужно выделить под вектор
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <string>
 
int main()
{
        std::string word;
        std::vector<std::string> * ptr = new std::vector<std::string>();
 
        while (std::cin >> word)
                ptr->push_back(word);
 
        for(std::vector<std::string>::iterator iter=ptr->begin(); iter!=ptr->end(); ++iter)
                std::cout << *iter << " = " << iter->size() << " simbols\n";
 
        system("pause");
        delete ptr;
        return 0; 
}
grizlik78
Эксперт С++
1908 / 1440 / 111
Регистрация: 29.05.2011
Сообщений: 2,996
21.06.2011, 19:20 #3
А начать можно с того, что
C++
1
vector<string> *ptr;
не соответствует заданию. Это указатель на вектор, а в задании про вектор указателей
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
21.06.2011, 19:28  [ТС] #4
Цитата Сообщение от grizlik78 Посмотреть сообщение
А начать можно с того, что
C++
1
vector<string> *ptr;
не соответствует заданию. Это указатель на вектор, а в задании про вектор указателей
а вектор указателей как сделать?

C++
1
vector<string*> ptr
так?
grizlik78
Эксперт С++
1908 / 1440 / 111
Регистрация: 29.05.2011
Сообщений: 2,996
21.06.2011, 19:30 #5
Да. Ну а под каждую строку надо выделять память, как уже было справедливо замечено.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.06.2011, 19:32 #6
Цитата Сообщение от grizlik78 Посмотреть сообщение
Да. Ну а под каждую строку надо выделять память, как уже было справедливо замечено.
и в конце работы программы пройтись по вектору и освободить
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
21.06.2011, 19:42  [ТС] #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
#include <string>
using namespace std;   
 
int main()
{
    string word;
    vector<string*> ptr=new vector<string>();
 
    while (cin >> word)
        ptr->push_back(word);
 
    for(vector<string>::iterator iter=ptr->begin(); iter!=ptr->end(); ++iter)
        cout << *iter << " = " << iter->size() << " simbols" << endl;
 
    system("pause");
    delete [] ptr;
    return 0; 
}
теперь new и ptr подчеркнуты везде...
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.06.2011, 19:50 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
#include <string>
 
int main()
{
    std::string word;
    std::vector<std::string*> ptr;
 
    while (std::cin >> word)
        ptr.push_back(new std::string(word));
 
    for(std::vector<std::string*>::iterator iter = ptr.begin(); iter != ptr.end(); ++iter)
    {
    std::cout << (*iter)->c_str() << " = " << (*iter)->size() << " simbols\n";
           //альтернатива std::cout << **iter << " = " << (*iter)->size() << " simbols\n";
    delete *iter;
    }
 
    system("pause");
    return 0; 
}
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
21.06.2011, 19:57  [ТС] #9
Цитата Сообщение от Maxwe11 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
#include <string>
 
int main()
{
    std::string word;
    std::vector<std::string*> ptr;
 
    while (std::cin >> word)
        ptr.push_back(new std::string(word));
 
    for(std::vector<std::string*>::iterator iter = ptr.begin(); iter != ptr.end(); ++iter)
    {
    std::cout << (*iter)->c_str() << " = " << (*iter)->size() << " simbols\n";
           //альтернатива std::cout << **iter << " = " << (*iter)->size() << " simbols\n";
    delete *iter;
    }
 
    system("pause");
    return 0; 
}
спасиб, только зачем в выводе писать (*iter) если оператор -> как раз сделан для того, чтобы не писать
C++
1
(*iter).size()
в книге так и написано, что он как раз для того, чтобы была простая запись типа
C++
1
iter->size()
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.06.2011, 20:01 #10
Olejeg85, суть итератора - указатель, а у вас в контейнере что лежит? указатель на стринг, значит итератор будет указателем на указатель, потому сначала разыменовуем итератор и через -> обращаемся к методам стринга
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
21.06.2011, 20:02  [ТС] #11
Цитата Сообщение от Maxwe11 Посмотреть сообщение
Olejeg85, суть итератора - указатель, а у вас в контейнере что лежит? указатель на стринг, значит итератор будет указателем на указатель, потому сначала разыменовуем итератор и через -> обращаемся к методам стринга
ясненько пасиб )
silent_1991
21.06.2011, 20:53
  #12

Не по теме:

Ппц, извращение так смешивать STL и указатели... ИМХО

Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
21.06.2011, 21:13  [ТС] #13
а в рабочик программах используются массивы указателей или векторы указателей? если да то в каких? просто не понимаю зачем их использовать, если можно обходится в программах и без них?
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
21.06.2011, 21:17 #14
Olejeg85, да, при наследовании удобнее всего оперировать массивом (вектором) указателей на базовый класс, чтобы правильно вызывались виртуальные функции. Правда, для тех же целей можно применить ссылки, но я как-то всегда пользовался именно указателями.
Olejeg85
13 / 10 / 0
Регистрация: 27.03.2011
Сообщений: 164
21.06.2011, 21:19  [ТС] #15
Цитата Сообщение от silent_1991 Посмотреть сообщение
Olejeg85, да, при наследовании удобнее всего оперировать массивом (вектором) указателей на базовый класс, чтобы правильно вызывались виртуальные функции. Правда, для тех же целей можно применить ссылки, но я как-то всегда пользовался именно указателями.
аа, пасибки, как раз скоро до классов дойду, а там уже не за горами и наследование, вирт функции и шаблоны ))

а использовать в качестве доступа к методу оператор . или -> это дело вкуса или есть более принципиальные причины использования оператора стрелки?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2011, 21:19
Привет! Вот еще темы с ответами:

Не получается задание, найти ошибки - MS Excel
Не получается задание в EXCEL В политехе задали работу вроде ее выполнил а припод говорит что не правильно ну так косяки, косяк в том...

Как сделать программу, работающую в диалоговом режиме? И что бы диалог организовать с оператором Case - Pascal ABC

Задание с модулем, не получается исправить ошибки - Lazarus
Вот 1 часть: Program MyModul; Uses Unit1; Var s1,s2,s3:string; Begin Writeln (' vvod stroki'); Readln(s1,s2); ...

Не получается задание. Построить конечный автомат! - Теория автоматов
Построить конечный автомат


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

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

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