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

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

Войти
Регистрация
Восстановить пароль
 
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
#1

Посчитать количество строковый символов в векторе - C++

23.09.2012, 20:25. Просмотров 769. Ответов 4
Метки нет (Все метки)

Добрый день. В нижеприведённом коде есть задание. У меня не получается организовать подсчёт символов в векторе для дальнейшего объявления массива (хотелось бы сделать это двумя способами: при помощи индексирования и итератора). Так же мне не понятен смысл пред-прдепоследнего предложения в задании.

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
// Напишите программу, читающую строки в вектор. Скопируйте
// этот вектор в массив указателей на тип char. Для каждого
// элемента в вектора создайте новый символьный массив и
// скопируйте данные из элемента вектора в этот символьный
// массив. Затем поместите указатель на смвольный массив в
// массив символьных указателей. Отобразите содержимое вектора
// и созданного массива. Не забудте удалить символьные массивы.
 
#include <iostream>
#include <vector>
#include <string>
#include <iterator>
#include <cstddef> // for size_t type
using namespace std;
 
int main(void)
{
  string line_one;
  vector<string> vect_one;
  for( ; getline(cin, line_one); ) {
    vect_one.push_back(line_one);
  }
 
  const  size_t max_size = vect_one.size() + 1;
  string *string_arr = new string [max_size + 1];
  vector<string>::const_iterator vect_iter = vect_one.begin();
 
  for(string *pLine = string_arr; 
      pLine != string_arr + max_size
    && vect_iter != vect_one.end(); ++pLine,
    ++vect_iter) {
    *pLine = *vect_iter;
    cout << *pLine;
  }
  cout << endl;
 
  // не пойму как дальше правильно организовать код:
  size_t elem_vect = 0;
  for(size_t vIter = 0; vIter != vect_one.size(); ++vIter)
    for(size_t sIter = 0; sIter != line_one.size(); ++sIter)    
      ++elem_vect;
  
  cout << endl << "Vector have " << elem_vect << " char(s)"
       << endl;
 
  delete [] string_arr;
 
 
  return 0;    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2012, 20:25     Посчитать количество строковый символов в векторе
Посмотрите здесь:

Посчитать количество символов в строке C++
Посчитать количество символов C++
C++ Посчитать количество символов в файле
Посчитать количество символов в слове C++
Посчитать количество различных символов в тексте C++
Посчитать количество символов в строке C++
C++ посчитать количество символов в текстовом файле
C++ Вводится последовательность символов. Признак конца ввода – точка. Посчитать количество символов не являющихся пробелами
C++ Посчитать количество символов в файле
Строки: посчитать количество символов без пробелов C++
Посчитать количество символов в файле C++
C++ Посчитать в строке количество латинских символов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
23.09.2012, 21:18     Посчитать количество строковый символов в векторе #2
Цитата Сообщение от xtorne21st Посмотреть сообщение
// не пойму как дальше правильно организовать код:
А это смотря что вы там собрались делать.
Замечу лишь что в задании просят сделать символьный массив, а вы делаете непойми что с типом string так как вы создаёте массив указателей на string и копируете адреса, а не содержимое.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
23.09.2012, 21:49  [ТС]     Посчитать количество строковый символов в векторе #3
я собрался там посчетать количество символов в типе vector<string> для дальнейшего обявления динамического или статического массива.

Добавлено через 27 минут
Цитата Сообщение от Gepar Посмотреть сообщение
массив указателей
Разьясните пожалейста, динамический массив и массив указателей это одно и тоже?
vitaska
84 / 84 / 2
Регистрация: 04.02.2010
Сообщений: 162
24.09.2012, 09:15     Посчитать количество строковый символов в векторе #4
Цитата Сообщение от xtorne21st Посмотреть сообщение

Разьясните пожалейста, динамический массив и массив указателей это одно и тоже?
В динамическом массиве просто заранее неизвестен размер массива и хранится там будут те данные, какого он типа, а в массиве указателей будут хранится только адреса переменных!
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
24.09.2012, 16:35  [ТС]     Посчитать количество строковый символов в векторе #5
Цитата Сообщение от xtorne21st Посмотреть сообщение
string *string_arr = new string [max_size + 1];
В таком случаи что означает эта стока?

Добавлено через 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
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
57
58
// Напишите программу, читающую строки в вектор. Скопируйте
// этот вектор в массив указателей на тип char. Для каждого
// элемента в вектора создайте новый символьный массив и
// скопируйте данные из элемента вектора в этот символьный
// массив. Затем поместите указатель на смвольный массив в
// массив символьных указателей. Отобразите содержимое вектора
// и созданного массива. Не забудте удалить символьные массивы.
 
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <cstddef> // for size_t type
 
using namespace std;
 
int main(void)
{
  string c_line;
  vector<string> c_vect;
 
  cout << "Please enter some line: \n";
 
  while(getline(cin, c_line))
    c_vect.push_back(c_line);
 
  // Подсчитаем количество символов в векторе
  size_t count_chars = 0;
  for( vector<string>::size_type vi = 0;
       vi != c_vect.size(); ++vi ) {
    c_line = c_vect[vi];
    for( string::size_type si = 0; si != c_line.size();
     ++si ) { 
      ++count_chars;
    }
  }
  cout << endl;
 
  // создадим массив указателей на тип char
  char *char_arr = new char [count_chars + 1];
  char *cpnt = char_arr;
 
  // скопируем элементы вектора в массив и отобразим результат
  for( vector<string>::const_iterator viter = c_vect.begin();
       viter != c_vect.end(); ++ viter ) {
    c_line = *viter;
    for( string::const_iterator siter = c_line.begin();
     siter != c_line.end(); ++siter, ++cpnt ) {
      *cpnt = *siter;
      cout << *cpnt;
    }
  }
  cout << endl;
 
  delete [] char_arr;
 
  return 0;
}
Yandex
Объявления
24.09.2012, 16:35     Посчитать количество строковый символов в векторе
Ответ Создать тему
Опции темы

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