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

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

Войти
Регистрация
Восстановить пароль
 
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 346
#1

Вывести элементы вектора, вывести их адрес - C++

26.05.2014, 14:25. Просмотров 1562. Ответов 14
Метки нет (Все метки)

Задача. Создать вектор указателей на строки. Вывести элементы вектора, вывести их адрес. При решение задачи надо использовать логические выражение. Ибо задача этого раздела. Но не знаю как использовать тут логические выражение. Написал программу. По моему мнению очень плохую но по другому не могу. Компилировал с ошибкой зависла программа не хочет выйти с программы надо перезагрузит комп. Но не хочу тратит времени на перезагрузку. Потом надо будет заново писать все.

Код С++
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
#include <iostream>
#include <conio.h>
#include <string>
#include <vector>
int main()
{ //Задача создат вектор указателей на элементы строки. Вывести элементы вектора, адрес элементов.
    setlocale (LC_ALL , "Russian");
    std::string str; 
    std::cout << "Введите строку" << std::endl;
    int a = 0;
    std::vector<char> us(10);
        std::vector<char>::iterator b;
        int *x = 0;
    if(std::cin >> str, std::cin.get() != '\n')
        //создаем указатели на элементы строки
        for(std::string::size_type ix = 0; ix != str.size(); ++ix)
        {   *x = str[ix]; 
            a = *x;
           //сохраняем указатели в вектор.
            us.push_back(a); 
    }
    //выводим элементы вектора и их адрес.
    for(std::vector<char>::iterator d = us.begin(); d != us.end(); ++d)
        std::cout << "Элемент вектора " << " - " << *d << " "
        << " Адрес элемента "  << us[d] << std::endl; 
 
            _getch ();
            return 0;
}


Добавлено через 2 минуты
И я без понятие как вывести адрес элементов вектора если использовал итераторы. Могу переписать код с индексом в место итератора но интересно узнать как вывести адрес элемента вектора при использование итератора.

Добавлено через 1 минуту
И почему не могу закрыт программу даже с диспетчера задач?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2014, 14:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести элементы вектора, вывести их адрес (C++):

Как вывести элементы вектора, являющиеся членами класса? - C++
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;cstdio&gt; using namespace std; typedef struct moment{ int h,m,s; ...

Как вывести элементы вектора, тип которых pair<string>? - C++
#include &lt;iostream&gt; #include &lt;utility&gt; #include &lt;vector&gt; #include &lt;iterator&gt; #include &lt;string&gt; using std::cin; using std::cout;...

Отсортировать по возрастанию и вывести на экран сперва чётные элементы вектора, а затем нечётные - C++
Привет. Вообщем, стоит такая задача: &quot;Вывести на экран сначала отсортированные по возрастанию элементы массива Y(25) стоящие на чётных...

Заданы три вектора a(n), b(m), c(k). Вывести наименование вектора, в котором максимальна сумма четных элементов, стоящих на нечетных местах - C++
Заданы три вектора a(n), b(m), c(k). Вывести наименование вектора, в котором максимальна сумма четных элементов, стоящих на нечетных...

Если возможно, упорядочить булевы вектора, или вывести сообщение "Вектора несравнимы" - C++
помогите пожалуйста с задачей: Даны булева вектора a и b длины n. Если возможно, упорядочить их, или вывести сообщение &quot;Вектора...

Ввести элементы двумерного массива с клавы С++.Нужно вывести его на экран в виде таблицы, в конце каждой строки надо вывести самый большой элемент - C++
Вот мой код : #include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; using std::cout; using std::cin; int...

14
nmcf
5557 / 4867 / 1651
Регистрация: 14.04.2014
Сообщений: 19,766
26.05.2014, 15:25 #2
Ты плохо понимаешь, что такое указатели. Откуда ив вообще взяться, если у тебя vector содержит символы.
0
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 346
26.05.2014, 15:54  [ТС] #3
Ну я знаю что указатели эти такие штуки которые указывают на некий объект. Не важно что это такое главное чтоб это было записано в памяти. К стати указатели самостоятельные объекты в памяти.

Я знаю что я не правильно написал код. Код компилируеться но символы строки не сохраняются в веектор.

Добавлено через 5 минут
Unhandled exception at 0x00187F14 in Project10.exe: 0xC0000005: Access violation writing location 0x00000000.

Выдает такую вот ошибку. Что это такое? Это не связано с кодом. (на сколько я понял)

Добавлено через 3 минуты
И еще этот код не работает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <conio.h>
#include <vector>
int main()
{
    setlocale( LC_ALL, "Russian");
    std::vector<int> num;
    int a;
std::cout << "Введите несколько чисел: \n";
while(std::cin >> a, a != '\n')
a % 2 != 0 ? num.push_back(a): num.push_back(a*2);
for(int r = 0; r < num.size(); r++)
    std::cout << r << " Элемент вектора: " << num[r] << std::endl;
_getch();
return 0;
}
А именно эта строка
C++
1
while(std::cin >> a, a != '\n')
Добавлено через 5 минут
Первая программа которую я показал тут выводил элементы пустого вектора. Не сколько раз запустил пару раз сработало выводило элементы пустого вектора. Убрал ввод строки записал строку в память. Перестал работать.Тепер код выглядит так.
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
#include <iostream>
#include <conio.h>
#include <string>
#include <vector>
int main()
{ //Задача создат вектор указателей на элементы строки. Вывести элементы вектора, адрес элементов.
    setlocale (LC_ALL , "Russian");
    std::string str("Hello!!")
    
   
    std::vector<char> us;
        
        int *x = 0;
   
        //создаем указатели на элементы строки
        for(std::string::size_type ix = 0; ix != str.size(); ++ix)
        {   *x = str[ix]; 
            a = *x;
           //сохраняем указатели в вектор.
            us.push_back(a); 
    }
    //выводим элементы вектора и их адрес.
    for(std::vector<char>::iterator d = us.begin(); d != us.end(); ++d)
        std::cout << "Элемент вектора " << " - " << *d << " "
        << " Адрес элемента "  << us[d] << std::endl; 
 
            _getch ();
            return 0;
}
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,029
26.05.2014, 16:31 #4
Цитата Сообщение от Altair42 Посмотреть сообщение
int *x = 0;
нильзя так =(( это же rvalue

тут пара лишних хедеров т.к. я делал кое-что дургое что удалил, ну и создал я для простоты объекты string, а не *char ... хотя тут уже...string те же строки
Добавлено через 9 минут
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 <cstdlib>
#include <ctime>
#include <iomanip>
#include <vector>
#include <iterator>
#include <algorithm>>
#include <cmath>
using namespace std;
 
void show(const string &str)
{
  cout<<str<<endl;
}
void show_adres(const string &str)
{
  cout<<&str<<endl;
}
 
int main()
{
int size;
cout<<"enter number of strings: ";
cin>>size;
vector<string> a(size+1);
vector<string>::iterator it;
for (it=a.begin();it!=a.end();it++)
    getline(cin,*it);
for_each(a.begin(),a.end(),show);
for_each(a.begin(),a.end(),show_adres);
return 0;
}
Добавлено через 5 минут
Цитата Сообщение от Altair42 Посмотреть сообщение
не знаю как использовать тут логические выражение.
я тоже...что-то лишнее)
0
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 346
26.05.2014, 16:51  [ТС] #5
dzrkot, В этом коде много чего я не могу понят. Я только изучаю асновы.
C++
1
2
for_each(a.begin(),a.end(),show);
for_each(a.begin(),a.end(),show_adres);
В принципе понял что это такое, но я не знаю как это использовать. Уровень знаний С++ не позволяет.
Цитата Сообщение от dzrkot Посмотреть сообщение
нильзя так =(( это же rvalue
Ок надо еще раз прочитать раздел с указателями.

Добавлено через 3 минуты
C++
1
2
#include <iterator>
#include <cmath>
Зачем это? Вид класс вектор тащит в себе итераторы. И причем тут математика?
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,029
26.05.2014, 16:55 #6
Цитата Сообщение от Altair42 Посмотреть сообщение
Зачем это? Вид класс вектор тащит в себе итераторы. И причем тут математика?
Цитата Сообщение от dzrkot Посмотреть сообщение
тут пара лишних хедеров т.к. я делал кое-что дургое что удалил,
я делал это в своём коде, который просто вынес и не выкидывал, так что вам они не нужны, а мне было просто лень удалять их)

Цитата Сообщение от Altair42 Посмотреть сообщение
Уровень знаний С++ не позволяет.
так вот вам и пример - разберитесь что и как, будут вопросы - обращайтесь, помогу если вам действительно это интересно а не "лишь бы лабу сдать")
0
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 346
26.05.2014, 17:06  [ТС] #7
dzrkot, нуу как бы я самостоятельно изучаю С++. с книги и форума

И какие то проблемы с VS. Раньше использовал VS 2010 все было просто шык. Перешел на VS 2012 начались проблемы. Вот данный код должен работать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <conio.h>
#include <vector>
int main()
{
    setlocale( LC_ALL, "Russian");
    std::vector<int> num;
    int a;
std::cout << "Введите несколько чисел: \n";
while(std::cin >> a, a != '\n')
a % 2 != 0 ? num.push_back(a): num.push_back(a*2);
for(int r = 0; r < num.size(); r++)
    std::cout << r << " Элемент вектора: " << num[r] << std::endl;
_getch();
return 0;
}
Цикл while не заверщаеться при получение символа новой строки. Такая же проблема была раньше в другом коде. Там просто инициализировал символ новый строки (типа char x = '\n'. Но тут не чего не помогает. Ввожу фнкцию if работает ( сохраняет в вектор только 1 символ). Работает даже без функции if.
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,029
26.05.2014, 17:19 #8
Цитата Сообщение от Altair42 Посмотреть сообщение
while(std::cin >> a, a != '\n')
я честно не помню уже т.к. никогда в while() не вставляю cin>>, но вы уверены что там , а не && ?

Добавлено через 6 минут
вроде так вообще не делается....мб меня поправит тот, кто знает...
0
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 346
26.05.2014, 17:33  [ТС] #9
dzrkot, оператор AND ... в принципе можно попробовать. Шас посмотрим
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,029
26.05.2014, 17:38 #10
сделайте и не парьтесь)
if( a=='\')
break;
0
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 346
26.05.2014, 17:52  [ТС] #11
Должно работать но не работает. При получение значение a = '\n' условие функции не выполняеться. цикл должен прекратится. Но не чего не произходит.

Добавлено через 6 минут
Цитата Сообщение от dzrkot Посмотреть сообщение
сделайте и не парьтесь)
if( a=='\')
break;
Не работает. Все эти варианты рабочие. Первый хоть и не правильный работал в другой программе, второй правильный и не работает ( оператор AND), ваше предложение ввести оператор if тоже вариант но не работает.

После перезагрузки программы может и будет. Мне что каждый раз перезагрузит программу?

Добавлено через 3 минуты
Есть и более сложный вариант с и спользованием cin.get() cin.clear() Показали на форуме для решение проблемы с переходом на новую строку в другой программе. У меня не сработало. Так как не знаю всех деталей не стал искать почему не сработало.
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,029
26.05.2014, 18:00 #12
вообщем если найдёте ответ - скиньте, самому уже интересно)
0
0x10
2480 / 1655 / 248
Регистрация: 24.11.2012
Сообщений: 4,102
26.05.2014, 18:01 #13
Цитата Сообщение от dzrkot Посмотреть сообщение
нильзя так =(( это же rvalue
Где нельзя? Почему нельзя? Кто rvalue?
0
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,029
26.05.2014, 18:09 #14
Цитата Сообщение от 0x10 Посмотреть сообщение
Где нельзя? Почему нельзя? Кто rvalue?
пардон, там 0, мне показалось там 5 ....o_0
0
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 346
26.05.2014, 19:23  [ТС] #15
0x10,

Добавлено через 1 час 13 минут
Не у кого нет идей?
0
26.05.2014, 19:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2014, 19:23
Привет! Вот еще темы с ответами:

как вывести адрес - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; void main() { char s; char (*a) =...

Вывести адрес переменной - C++
Как вывести на экран адрес переменной? #include &lt;iostream&gt; #include &lt;conio.h&gt; int main(){ int a=2,*p; *p=a; ...

Вывести введенные имя и адрес - C++
Полный ноль в программировании. Но нужно сделать программу которая запрашивает ваше имя и адрес( город, улица, дом, квартира). потом...

Вывести последний элемент вектора - C++
#include &quot;stdafx.h&quot; #include &quot;../../std_lib_facilities.h&quot; int _tmain(int argc, _TCHAR* argv) { double b; cout &lt;&lt;...


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

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

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