Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Работа с динамическими массивами

Ответить
Настройки темы
C/C++ - [решено] Работа с динамическими массивами

Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Drongo
Дата: 05-05-2010
Описание: Тег код [code] - #
Доброго времени суток! Ребята помогите разобраться с проблемой:

И так...

Я создал цикл, в цикле создается динамический массив с определенным размером К, далее создается еще один цикл в котором буду заноситься значения в массив.

Код: Выделить весь код
for(i=0;i<k;i++){
     
      char *TempName=new char[k];
      for(j=0;j<k;j++){
                  TempName[j]=присваиваем определенную букву;
      }


}
Мне нужно чтобы после того как занесется определенное количество букв(будут заноситься имена по буквам), массив измени размер.
т. к. имена будут разного размера..........

как это сделать....??
пробовал и delete и memset ничего не помогло(((

Отправлено: 21:47, 04-05-2010

 

Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


John Harlamov, не совсем понятна такая конструкция, зачем в цикле каждый раз создавать один и тот же массив с разным размером? Так как каждый раз в каждом цикле будет происходить создание массива с размером +1 от прошлого, а в следующем цикле добавляться значения. После окончания цикла, у вас будет один массив с размером в конечное значение k

Тебе нужно использовать символьный массив указателей. И уточни чуть лучше вопрос.

В общем, когда будешь заносить имена, воспользуйся функцией получения длины строки strlen()
Код: Выделить весь код
...
#include <cstring>

   char *MyName;

   // Вот так можно создать массив нужного размера. +1 это место для нулевого символа   
   MyName = new char[strlen(name) + 1]; // name - переменная в которой хранится какое-то имя
...

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 10:57, 05-05-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


Drongo, объясню все как есть....

Есть текстовый файл, в нем записано количество имен(до первой звездочки) и сами имена (после первой звездочки и до "!" ):

3*alex*john*din*!

...я хотел сделать так чтобы программа считывала из файла инфу о количестве имен и сами имена, имена заносила в структуру а количество имен присваивала переменной.

Сделал по тому примеру который привел ранее, но вот беда.....если первое имя состоит из 4 букв а следующее имя из 3 букв, то последняя буква из первого имени останется во втором((

а вот как очистить массив(чтобы в нем не было букв) не знаю......

Отправлено: 17:47, 06-05-2010 | #3


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата John Harlamov:
а вот как очистить массив(чтобы в нем не было букв) не знаю...... »
А так, не пойдёт?
Код: Выделить весь код
...
   TempName[k] = "";
...

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 19:35, 06-05-2010 | #4


Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Drongo:
А так, не пойдёт? »
error C2440: =: невозможно преобразовать 'const char [1]' в 'char' =((

Отправлено: 20:26, 06-05-2010 | #5


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


John Harlamov, после каждого имени добавлять нуль символ.
Код: Выделить весь код
if ((j = j + 1) < k)
	TempName[j] = '\0';
Тогда в строке состоящей из 4 букв при заполнении следующим именем состоящим из 3х букв последняя буква из первого имени отображаться не будет.
А будет ещё лучше, если этот символ предусмотреть изначально new char[k+1]. Тогда и при занулении проверять уже if ((j = j + 1) < k + 1).
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:47, 07-05-2010 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Работа с динамическими массивами

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Работа с массивами. Russo AutoIt 7 03-03-2010 12:21
[решено] как создавать переменные с динамическими именами speechless AutoIt 5 15-09-2009 09:38
посоветуйте программу для работы с динамическими дисками. babki Microsoft Windows NT/2000/2003 11 02-07-2009 09:46
C/C++ - [решено] Лабораторная. Работа с массивами Artem-Samsung Программирование и базы данных 6 01-06-2009 21:30
Perl. Работа с массивами. simon171078 Вебмастеру 2 09-01-2007 16:19




 
Переход