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

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

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

Динамический массив строк (вставить строку с номером к) - C++

08.06.2013, 14:32. Просмотров 599. Ответов 6
Метки нет (Все метки)

Написал программу,задача была сформировать динамический массив и вставить строку с номером к.(вводить пользователь).Никак не пойму как производится сдвиг,пытаюсь сдвинуть но происходит лишь замена элемента, подскажите пожалуйста как сдвигаются элементы.Вот код:
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
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
 
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int n,k;
cout<<"Пожалуйста введите количество строк";
cin>>n;
char **s = new char* [n];
for(int i = 0; i < n; ++i){
s[i] = new char [n];
}
  for (int i=0;i<n;i++)
      cin>>s[i];
  cout<<"Вы ввели данные строки: "<<endl;
  for (int i=0;i<n;i++)
      cout<<s[i]<<endl;
  cout<<"На какую позицию вы хотите вставить строчку?";
  cin>>k;
  cout<<"Введите строчку которую вы хотите вставить: ";
  char str[100];
  cin>>str;
  char **s1 = new char* [n+1];
  for(int i = 0; i < n; ++i){
   s1[i] = new char [n+1];
}
     
for (int i=0;i<n;i++)
{
    s1[i]=s[i];
    if (i==k-1)(s[i+1]=s[i]) && (s1[i]=str);
    else s1[i-1]=s[i];
    cout<<s1[i]<<endl;
}
cout<<endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2013, 14:32     Динамический массив строк (вставить строку с номером к)
Посмотрите здесь:

В матрицу вставить строку заданной последовательности чисел перед строкой с номером x - C++
Вообщем , задание : В матрицу вставить строку заданной последовательности чисел перед строкой с номером x (номер строки вводит...

Как добавить элемент с заданным номером в динамический массив? - C++
Добавить элемент с заданным номером в динамический массив. Как это сделать?

Массив: Вставить элемент с номером к. - C++
Задание состояло в том,чтобы написать программу выполняющую 5 действий: 1.Удаление элемента с заданым номером. 2.Вставить элемент с...

Вставить число k в массив после элемента с номером n - C++
Вставить число k в массив после элемента с номером n. Входные данные Сперва вводят количество элементов массива, затем сами элементы. ...

Вставить элемент в массив со значением 0 после элемента с номером N - C++
Массив А из 10 элементов заполнен случайными числами от 2 до 7. Вставить элемент со значением 0 после элемента с номером N. Вывести на...

Вставить элемент в динамический массив - C++
Дан одномерный массив целых чисел, заполненный случайным образом числами из промежутка . Вставить элемент #include &lt;iostream&gt; //...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
08.06.2013, 14:41     Динамический массив строк (вставить строку с номером к) #2
придется перевыделять память под массив строк перекопировать до нужной позиции, вставлять строчку, вставлять остальное
Kinroom
1 / 1 / 0
Регистрация: 13.12.2012
Сообщений: 99
08.06.2013, 14:51  [ТС]     Динамический массив строк (вставить строку с номером к) #3
Цитата Сообщение от Кудаив Посмотреть сообщение
придется перевыделять память под массив строк перекопировать до нужной позиции, вставлять строчку, вставлять остальное
я это и пробывал сделать,но ничего не выходит

Добавлено через 8 минут
Цитата Сообщение от Kinroom Посмотреть сообщение
я это и пробывал сделать,но ничего не выходит
Все сделал.Кому интерестно вот код:
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
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
 
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int n,k;
cout<<"Пожалуйста введите количество строк";
cin>>n;
char **s = new char* [n];
for(int i = 0; i < n; ++i){
s[i] = new char [n];
}
  for (int i=0;i<n;i++)
      cin>>s[i];
  cout<<"Вы ввели данные строки: "<<endl;
  for (int i=0;i<n;i++)
      cout<<s[i]<<endl;
  cout<<"На какую позицию вы хотите вставить строчку?";
  cin>>k;
  cout<<"Введите строчку которую вы хотите вставить: ";
  char str[100];
  cin>>str;
  char **s1 = new char* [n+1];
  for(int i = 0; i < n; ++i){
   s1[i] = new char [n+1];
}
     
for (int i=0;i<n+1;i++)
{
    
    if(i<k-1) s1[i]=s[i];
    if(i==k-1) s1[i]=str;
    if (i>k-1) (s1[i]=s[i-1]) ;
    
    cout<<s1[i]<<endl;
    
}
cout<<endl;
}
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
08.06.2013, 15:04     Динамический массив строк (вставить строку с номером к) #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
char **tmp = new char* [n + 1];
...
cout<<"На какую позицию вы хотите вставить строчку?";
cin>>k;
cout<<"Введите строчку которую вы хотите вставить: ";
int i = 0;
for(i = 0; i < k; ++i)
   tmp[i] = s[i];
tmp[i] =  new char[100]; 
cin>>tmp[i];
 
for(; i < n+1; ++i)
   tmp[i] = s[i - 1];
 
delete[] s;
s = tmp;
что то вроде этого - компилятора под рукой нет

Добавлено через 2 минуты
Kinroom, где у тебя освобождение ресурсов?
Kinroom
1 / 1 / 0
Регистрация: 13.12.2012
Сообщений: 99
08.06.2013, 15:09  [ТС]     Динамический массив строк (вставить строку с номером к) #5
Цитата Сообщение от Кудаив Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
char **tmp = new char* [n + 1];
...
cout<<"На какую позицию вы хотите вставить строчку?";
cin>>k;
cout<<"Введите строчку которую вы хотите вставить: ";
int i = 0;
for(i = 0; i < k; ++i)
   tmp[i] = s[i];
tmp[i] =  new char[100]; 
cin>>tmp[i];
 
for(; i < n+1; ++i)
   tmp[i] = s[i - 1];
 
delete[] s;
s = tmp;
что то вроде этого - компилятора под рукой нет

Добавлено через 2 минуты
Kinroom, где у тебя освобождение ресурсов?
дописал в конце это
C++
1
2
3
4
5
6
for(int i = 0; i < n; ++i)
delete [] s[i];
delete [] s;
for(int i = 0; i < n; ++i)
delete [] s1[i];
delete [] s1;
но почему-то в конце программа вылетает
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
08.06.2013, 15:12     Динамический массив строк (вставить строку с номером к) #6
Цитата Сообщение от Kinroom Посмотреть сообщение
for(int i = 0; i < n; ++i)
delete [] s1[i];
когда

Цитата Сообщение от Kinroom Посмотреть сообщение
char **s1 = new char* [n+1]
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2013, 15:24     Динамический массив строк (вставить строку с номером к)
Еще ссылки по теме:

Как в динамический массив вставить элемент? - C++
Задание: Дан массив целых чисел размера n. Вставить в массив заданное число перед последним отрицательным элементом ...

Как вставить элемент в динамический массив? - C++
Подскажите, как нормально реализовать функцию для вставки элемента в динамический массив? Ибо у меня элемент вставляется, но выводится...

Динамический массив строк - C++
Мне нужно считать строки из файла но я не знаю сколько будет строк! и занести их в массив указателей на строки. чтобы было так *a =...

Динамический массив строк - C++
Добрый вечер. Подскажите, пожалуйста, в чем может быть проблема. Первый элемент массива почему-то автоматически пропускается: ...


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

Или воспользуйтесь поиском по форуму:
Kinroom
1 / 1 / 0
Регистрация: 13.12.2012
Сообщений: 99
08.06.2013, 15:24  [ТС]     Динамический массив строк (вставить строку с номером к) #7
Цитата Сообщение от Кудаив Посмотреть сообщение
когда
исправил)спасибо)
Yandex
Объявления
08.06.2013, 15:24     Динамический массив строк (вставить строку с номером к)
Ответ Создать тему
Опции темы

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