С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/75: Рейтинг темы: голосов - 75, средняя оценка - 4.63
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359

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

26.05.2014, 14:25. Показов 16092. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.05.2014, 14:25
Ответы с готовыми решениями:

Вывести на экран уникальные элементы вектора стринг
Я перепробовал множество способов, просмотрел темы на этом форуме, но для стрингового вектора ни один способ не подошел. Задача:...

Вывести рекурсивно элементы вектора
Вектор из пяти-шести цифр, заполнить вектор рандомно

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

14
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
26.05.2014, 15:25
Ты плохо понимаешь, что такое указатели. Откуда ив вообще взяться, если у тебя vector содержит символы.
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
26.05.2014, 15:54  [ТС]
Ну я знаю что указатели эти такие штуки которые указывают на некий объект. Не важно что это такое главное чтоб это было записано в памяти. К стати указатели самостоятельные объекты в памяти.

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

Добавлено через 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
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
26.05.2014, 16:31
Цитата Сообщение от 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
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
26.05.2014, 16:51  [ТС]
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
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
26.05.2014, 16:55
Цитата Сообщение от Altair42 Посмотреть сообщение
Зачем это? Вид класс вектор тащит в себе итераторы. И причем тут математика?
Цитата Сообщение от dzrkot Посмотреть сообщение
тут пара лишних хедеров т.к. я делал кое-что дургое что удалил,
я делал это в своём коде, который просто вынес и не выкидывал, так что вам они не нужны, а мне было просто лень удалять их)

Цитата Сообщение от Altair42 Посмотреть сообщение
Уровень знаний С++ не позволяет.
так вот вам и пример - разберитесь что и как, будут вопросы - обращайтесь, помогу если вам действительно это интересно а не "лишь бы лабу сдать")
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
26.05.2014, 17:06  [ТС]
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
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
26.05.2014, 17:19
Цитата Сообщение от Altair42 Посмотреть сообщение
while(std::cin >> a, a != '\n')
я честно не помню уже т.к. никогда в while() не вставляю cin>>, но вы уверены что там , а не && ?

Добавлено через 6 минут
вроде так вообще не делается....мб меня поправит тот, кто знает...
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
26.05.2014, 17:33  [ТС]
dzrkot, оператор AND ... в принципе можно попробовать. Шас посмотрим
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
26.05.2014, 17:38
сделайте и не парьтесь)
if( a=='\')
break;
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
26.05.2014, 17:52  [ТС]
Должно работать но не работает. При получение значение a = '\n' условие функции не выполняеться. цикл должен прекратится. Но не чего не произходит.

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

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

Добавлено через 3 минуты
Есть и более сложный вариант с и спользованием cin.get() cin.clear() Показали на форуме для решение проблемы с переходом на новую строку в другой программе. У меня не сработало. Так как не знаю всех деталей не стал искать почему не сработало.
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
26.05.2014, 18:00
вообщем если найдёте ответ - скиньте, самому уже интересно)
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
26.05.2014, 18:01
Цитата Сообщение от dzrkot Посмотреть сообщение
нильзя так =(( это же rvalue
Где нельзя? Почему нельзя? Кто rvalue?
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
26.05.2014, 18:09
Цитата Сообщение от 0x10 Посмотреть сообщение
Где нельзя? Почему нельзя? Кто rvalue?
пардон, там 0, мне показалось там 5 ....o_0
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
26.05.2014, 19:23  [ТС]
0x10,

Добавлено через 1 час 13 минут
Не у кого нет идей?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.05.2014, 19:23
Помогаю со студенческими работами здесь

Как вывести элементы двумерного вектора через итератор?
int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); using namespace std; vector &lt; vector &lt;string&gt;&gt;::iterator...

Как вывести элементы вектора, тип которых pair<string>?
#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;...

Вывести на экран сначала все отрицательные элементы вектора, а потом положительные
Нужно написать программу, которая выводит на экран сначало все отрицательные элементы вектора, а потом положительные

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

Вывести на экран фамилию, адрес, имя и адрес тех учеников, кто учится в данной школе в старших классах
Дан текстовый файл, в котором хранятся данные об учениках нескольких школ: фамилия, имя, отчество, адрес(улица, дом, квартира), школа и...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru