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

динамический массив строк - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 73, средняя оценка - 4.79
Deleter
2 / 2 / 0
Регистрация: 10.01.2011
Сообщений: 35
19.02.2011, 02:12     динамический массив строк #1
Вот такое дело есть а как зделать так чтобы я мог ввести то количество строк что я хочю ? а не 3. Тоесть сделать динамический массив строк.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <conio.h>
using namespace std;
 
int main(){
int n; 
char Stroki[3][255];
for(int i=0; i<3; i++){
    cin.getline(Stroki[i], 255);
}
for(int i=0; i<3; i++){
    cout<<Stroki[i];
}
_getch();
return 0; 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
19.02.2011, 04:13     динамический массив строк #2
Определись, с каким языком ты работаешь (С/С++), и используй соответствующие средства выделения/освобождения памяти. В С++ это операторы new, delete, в С - функции выделения памяти malloc, calloc, alloca и функция освобождения памяти free.
Deleter
2 / 2 / 0
Регистрация: 10.01.2011
Сообщений: 35
19.02.2011, 11:05  [ТС]     динамический массив строк #3
А можно в обоих вариантах покозать пример? С / С++ на том коде что я написал поменять его.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2295 / 1665 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
19.02.2011, 11:12     динамический массив строк #4
Deleter,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cstddef>
#include <iostream>
#include <string>
 
int main() {
  const std::size_t size = 3;
  
  std::string array[size];
  
  for (std::size_t i = 0; i < size; ++i)
    std::getline(std::cin, array[i]);
    
  for (std::size_t i = 0; i < size; ++i)
    std::cout << array[i]<< std::endl;
    
  return 0;
}
Deleter
2 / 2 / 0
Регистрация: 10.01.2011
Сообщений: 35
19.02.2011, 12:42  [ТС]     динамический массив строк #5
Да ну вот так у меня есть только цифра сколько строк в массиве уже задана она 3 и я её могу менять и получится сколько угодно.
А я хочу
C++
1
2
3
4
5
6
7
8
9
int n;
cin >> n;
char Stroki[n][255];
For(int i =0; i<n; i++){
cin.getline(Stroki[i],255);
} 
For(int i =0; i<n; i++){
cout >> Stroki[i];
}
Както так я ввожу сколько мне надо строк их количество за ранее не задано.

Добавлено через 1 час 22 минуты
Хорошо так сейчас я сделал как думал только не понемаю почему когда я ввожу 5 ну чтоб было 5 строк он мне даёт ввести только 4.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int n, m = 100; cin >> n; // тут я ввожу 5
 
char **s = new char* [n];
for(int i = 0; i < n; i++ ){ s[i] = new char [m];}
for(int i = 0; i < n; i++ ){ cin.getline(s[i],m);} //Тут даёт 4 строки ввести 
for(int i = 0; i < n; i++ ){ cout<<s[i];} //И соответственно выводит только 4
 
_getch();
return 0; 
}
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
19.02.2011, 12:56     динамический массив строк #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <algorithm>
#include <iterator>
#include <iostream>
#include <vector>
#include <string>
 
int main()
{
    std::vector<std::string> v;
    
    std::cout << "input strings, to end of enter input EOF" << std::endl;
 
    std::string s;
    while(std::getline(std::cin, s)) 
        v.push_back(s);
 
    std::cout << "\nCopied " << v.size() << " strings:" << std::endl;
    std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
 
    system("PAUSE");
    return 0;
}
Код
input strings, to end of enter input EOF
hello world!
hello user, how are you?
fine, thanks, how are you?
fine, thanks!
^Z

Copied 4 strings:
hello world!
hello user, how are you?
fine, thanks, how are you?
fine, thanks!
Press any key to continue . . .
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2011, 17:38     динамический массив строк
Еще ссылки по теме:

C++ Создать двухмерный динамический массив строк
C++ Как создать динамический массив строк?
C++ Сформировать динамический массив, состоящий из динамических строк
Класс динамический массив строк C++
Двумерный динамический массив строк C++

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

Или воспользуйтесь поиском по форуму:
Zero-cool
 Аватар для Zero-cool
5 / 5 / 1
Регистрация: 05.01.2011
Сообщений: 30
16.04.2011, 17:38     динамический массив строк #7
Цитата Сообщение от Deleter Посмотреть сообщение
for(int i = 0; i < n; i++ ){ cin.getline(s[i],m);} //Тут даёт 4 строки ввести
for(int i = 0; i < n; i++ ){ cout<<s[i];} //И соответственно выводит только 4
везде где
Цитата Сообщение от Deleter Посмотреть сообщение
i < n;
надо заменить на
Цитата Сообщение от Deleter Посмотреть сообщение
i <=n;
и будет счастье=)
Yandex
Объявления
16.04.2011, 17:38     динамический массив строк
Ответ Создать тему
Опции темы

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