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

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

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

Скопировать один элемент в другой в рамках такого массива - C++

25.08.2013, 01:16. Просмотров 1144. Ответов 21
Метки нет (Все метки)

скажите, плиз, кто-нибудь, как перекочевать, то бишь, скопировать один элемент в другой в рамках такого массива?
C++
1
char *name[COUNT][NAME];
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2013, 01:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Скопировать один элемент в другой в рамках такого массива (C++):

Скопировать все элементы массива в другой массив такого же размера - C++
Дан массив. Скопировать все его элементы в другой массив такого же размера: а) в том же порядке расположения элементов; б) в обратном...

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

Скопировать один динамический массив в другой - C++
Доброго времени суток. int *Array = new int; int *B_Array = new int; Первый массив я наполняю содержимым и мне нужно потом его...

Скопировать один массив char в другой - C++
у меня двухмерный символьный и одномерный массивы символов. Что в общем то мне нужно. После небольших манипуляций над одномерным массивом,...

Скопировать один символьный массив в другой - C++
Привет всем, многоуважаемые пользователи не могу сделать программу. Нам даны два массива s1 и s2 пользователь вводит фразу в массив s2 а...

Скопировать один массив в другой, используя указатели - C++
всем привет. простейшая задачка на копирование массива при помощи указателей. все работает, но хочу, чтобы массив рисовался в ряд. а...

21
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3139 / 307
Регистрация: 04.12.2011
Сообщений: 8,661
Записей в блоге: 5
28.08.2013, 20:09 #16
Цитата Сообщение от Ko4evnik Посмотреть сообщение
Итак, заполняется таблица.
Зачем? Задано ли количество строк?
Дело в том, что для инициализации двумерного массива, нужно сначала инициализировать одномерный массив. Это массив указателей, которые будут указывать на массивы. В С++ 2-х мерный массив это массив массивов. И тут важно даже не то, что изменять размер первого массива нельзя, (легче создать новый двухмерный), а то что Вы не создали даже такой массив, и пытаетесь инициализировать массив строк name[0][0] = new char[sz+1];
когда массива указателей вроде указателя name[0] = new char*[some_const_int] у Вас нет. А должен быть целый массив таких. Смотрите пример. Там всё есть, но без литературы тут не обойтись. Или почитайте или упростите себе задачу. Но сначала бы понять в чём она состоит. Просто "создаётся таблица" не подходит. Попробуйте сказать, что хотите сделать. Ещё невредно нарисовать как выглядит одномерный массив char*.
Но главное, похоже, у Вас трудности с пониманием как выделить память под массив даже int. Как одномерный так и двухмерный. Советую позаниматься этим. К char* приступайте только когда тема указателей и массивов на int будет от зубов отскакивать.
1
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,051
28.08.2013, 20:14 #17
Цитата Сообщение от Ko4evnik Посмотреть сообщение
Одним из этих пунктов является удаление ненужного нам поля и сдвиг всех нижестоящих элементов вверх.
я бы записал на место удаленной строки пустую строку и не мучался
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3139 / 307
Регистрация: 04.12.2011
Сообщений: 8,661
Записей в блоге: 5
28.08.2013, 21:00 #18
Цитата Сообщение от ValeryS Посмотреть сообщение
я бы записал на место удаленной строки пустую строку и не мучался
Хорошо, что Вы понимаете, что нужно сделать. Мне и правду непонятно.
Нужно ли поведение прямоугольного массива или нужен как раз зубчатый? В чём задача? Зачем смешаны библиотеки ввода-вывода. Может вектор векторов строк string самое то? Непонятно.
0
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,051
28.08.2013, 21:19 #19
Цитата Сообщение от IGPIGP Посмотреть сообщение
Хорошо, что Вы понимаете, что нужно сделать. Мне и правду непонятно.
мне тоже не понятно что нужно ТС
я говорю как бы я сделал
например есть строка
C++
1
char str[]="Мама"
которая в памяти будет лежать как
C++
1
char str[]={'М', 'а','м','а', 0}
ну можно так написать
C++
1
char str[]={'М', 'а','м','а',\0}
теперь мне нужно удалить строку
в первый (нулевой) элемент массива записываем 0(конец строки)
C++
1
char str[]={0, 'а','м','а', 0}
и все у нас пустая строка
которая ничего не делает( даже на экран не выводится)
но это если только удаление а если вставка то без динамического распределения памяти не обойтись
тогда бы я наплевал на массив и работал бы со списком
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3139 / 307
Регистрация: 04.12.2011
Сообщений: 8,661
Записей в блоге: 5
28.08.2013, 21:38 #20
ValeryS, да можно и так.
Если знать максимальный возможный размер например 100 то можно:
char buf[100]
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
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
int main()
{
    SetConsoleCP (1251); SetConsoleOutputCP (1251);
typedef char Buff[100];
 
Buff ch_matrix[3][4];
for(int i=0; i<3; ++i)
for(int j=0; j<4; ++j)strcpy(ch_matrix[i][j],"mama");
 
for(int i=0; i<3; ++i){
for(int j=0; j<4; ++j)cout<<ch_matrix[i][j]<<" ";
cout<<endl;
}
cout<<"-------------------"<<endl;
strcpy(ch_matrix[0][0],"dusya");
strcpy(ch_matrix[1][1],"busya");
strcpy(ch_matrix[2][3],"papa");
 
for(int i=0; i<3; ++i){
for(int j=0; j<4; ++j)cout<<ch_matrix[i][j]<<" ";
cout<<endl;
}
 
cin.get();
    return 0;
}
0
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,051
28.08.2013, 21:55 #21
Цитата Сообщение от IGPIGP Посмотреть сообщение
Если знать максимальный возможный размер например 100 то можно:
можно
даже можно взять размер 1000 байт точно хватит
при тыще строк это мегабайт, при современной памяти копейки
и просто копируй
но если между строками
"мама" и "раму" надо вставить "мыла" то уже просто так не отделаешься
или количество элементов(строк) с запасом или динамическое перераспределение
с копированием строк
тут даже вектор может не помочь насколько я помню он не позволяет элементы впихивать между другими
или список самый лучший вариант, но не самый быстрый
в смысле вставит то быстро а вот искать элемент не очень
короче нужно полное и четкое ТЗ
я исходил из этого
Цитата Сообщение от Ko4evnik Посмотреть сообщение
Одним из этих пунктов является удаление ненужного нам поля
никаких удалений копирований
но при работе с массивом строк нужно учитывать что пустая строка не считается
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3139 / 307
Регистрация: 04.12.2011
Сообщений: 8,661
Записей в блоге: 5
28.08.2013, 22:02 #22
Цитата Сообщение от ValeryS Посмотреть сообщение
"мама" и "раму" надо вставить "мыла" то уже просто так не отделаешься
Ну так максимальные размеры 2-d массива строк тоже нужно знать. Ну и там переписывать как угодно. Непонятно, же что нужно.
Предполагаю, что задача о которой мы не знаем, решается совсем иначе.
0
28.08.2013, 22:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2013, 22:02
Привет! Вот еще темы с ответами:

Скопировать один файл в другой средствами experimental/filesystem - C++
Хочу скопировать один файл в другой с помощью experimental/filesystem. Вот так получается: #include &lt;fstream&gt; #include...

Скопировать из исходного вектора положительные элементы в один массив, а отрицательные - в другой - C++
Переписать отдельно в разные массивы положительные и отрицательные элементы вектора.

Скопировать один массив в другой так, чтобы элементы оказались в обратном порядке - C++
Пользуясь двумя указателями на массивы целых чисел, скопировать один массив в другой так, чтобы во втором массиве элементы находились в...

Если елементы массива соседние одинаковы то один из них заменяется на 0 а другой увеличиваетмя на один - C++
#include &quot;stdafx.h&quot; #include&lt;string&gt; #include &lt;cmath&gt; #include &lt;iostream&gt; #include&lt;locale&gt; using namespace std; const int...


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

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

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