Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> динамический массивы 
V
    Опции темы
admsasha
Дата 25.10.2006, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: 1
Всего: 6



Может у кого есть ссылка на подробное описание "динамический массивы с C++", попытался поискать в поисковых, но попадается один и тот же пример.

Вообще мне нужно запихать в этот массив слова (не из файла, они образуются внутри программы, можно rand), осортировать, и сделать форматированный вывод.
PM MAIL WWW ICQ Jabber   Вверх
powerfox
Дата 25.10.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 5
Всего: 97



А документация по STL не годится? Используйте vector.
Код

#include <vector>
#include <string>
...
std::vector<std::String>MyCoolArray(Size);

//если надо изменить размер:
MyCoolArray.resize(MyCoolArray.size() + NewElements);

//работать с вектором можно, как c люычым массивом
MyCoolArray[0] = "Reading documentation is good thing";



--------------------
user posted image
PM WWW   Вверх
admsasha
Дата 25.10.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: 1
Всего: 6



А для вывода в printf как я должен написать ?
printf("%s",MyCoolArray[0]);  - так не работает
через cout не нужно
PM MAIL WWW ICQ Jabber   Вверх
powerfox
Дата 25.10.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 5
Всего: 97



admsasha:
Код

printf("%s",MyCoolArray[0].c_str());




--------------------
user posted image
PM WWW   Вверх
bsa
Дата 25.10.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



конечно не работает. Ты бы про std::string доку почитал для начала. smile
в твоем случае надо писать так:
Код
printf("%s",MyCoolArray[0].c_str());

PM   Вверх
MAKCim
Дата 25.10.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата

А для вывода в printf как я должен написать ?
printf("%s",MyCoolArray[0]);  - так не работает
через cout не нужно 

Извращение одновременно пользоваться STL-контейнерами и стандартной библиотекой С


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
powerfox
Дата 25.10.2006, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 5
Всего: 97



Цитата(MAKCim @  25.10.2006,  22:24 Найти цитируемый пост)
Извращение одновременно пользоваться STL-контейнерами и стандартной библиотекой С

Абсолютное и неоригинальное smile


--------------------
user posted image
PM WWW   Вверх
Dimonius
Дата 23.11.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 11.10.2006

Репутация: нет
Всего: 1



А как организовать динамический массив в С?
Пишу программу на С, которая читает числа из файла и складывает их в массив. Так вот хочу реализовать динамический массив, чтобы размерность его соответствовала размерности файла.
Возможно ли такое реализовать средствами С? А то как то создавать массив размерности на все случаи жизни не представляется возможным smile

Добавлено @ 14:39 
Следующий код:
Код
int **ReadMatrix(char *FileName)
{
    FILE *fp;
    int **nums;
    int row=0, col=0;
    int i=0, j=0;
        
    if((fp = fopen(FileName,"r"))==NULL) {
        puts("Can't open file");
        exit(1);
    }
    
    fscanf(fp,"%d %d",&row,&col);
    printf("Row:%d Col:%d\n",row,col);
    nums = (int **) malloc(row*col*sizeof(int));
    
    for (i=0;i<row;i++) {
        for (j=0;j<col;j++) {
            fscanf(fp, "%d", &nums[i][j]);
            printf("nums[%d][%d]=%d\n",i,j,nums[i][j]);
        }
    }
    
    fclose(fp);
    return nums;
}

дает ошибку Segmentation fault на попытке записать в массив nums что не так?                        


Это сообщение отредактировал(а) Dimonius - 23.11.2006, 14:41
PM MAIL   Вверх
GrayCardinal
Дата 23.11.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 8
Всего: 58



Цитата

А то как то создавать массив размерности на все случаи жизни не представляется возможным

  smile

Дык правильно, у тебя не 
int **  (указатель на массив указателей на int)
а просто
int * (указатель на массив) 
Я так понимаю это должна была быть матрица ? 
тогда так
nums = (int **) malloc(col*sizeof(int *));
и для каждого nums'а
nums [n] = malloc (rows * sizeof (int))
Ну, или типа того smile
по логике после этого означенный фор должен сработать.........7

Это сообщение отредактировал(а) GrayCardinal - 23.11.2006, 14:56


--------------------
PM MAIL WWW   Вверх
Dimonius
Дата 23.11.2006, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 11.10.2006

Репутация: нет
Всего: 1



GrayCardinal большое спасибо.
Ступил что то smile

PM MAIL   Вверх
V.A.KeRneL
  Дата 10.12.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

Репутация: нет
Всего: 14



Цитата(GrayCardinal @ 23.11.2006,  14:56)
nums = (int **) malloc(col*sizeof(int *));
и для каждого nums'а
nums [n] = malloc (rows * sizeof (int))

Не удержался от того, чтоб поправить!..
Надо так: 
Код

nums = (int **) malloc(row * sizeof(int *));
for (i = 0; i < row; ++i) { 
    nums[i] = (int *) malloc(col * sizeof(int));
}



Это сообщение отредактировал(а) V_A_KeRneL - 11.12.2006, 04:42


--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
GrayCardinal
Дата 11.12.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 8
Всего: 58



V_A_KeRneL, 
Какая наблюдательность.  smile 
Но я все-таки предпочитаю думать что чел уловил суть а не тупо списал код  smile 


--------------------
PM MAIL WWW   Вверх
admsasha
Дата 11.12.2006, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: 1
Всего: 6



Цитата(GrayCardinal @  12.12.2006,  00:11 Найти цитируемый пост)
V_A_KeRneL, 
Какая наблюдательность.   
Но я все-таки предпочитаю думать что чел уловил суть а не тупо списал код    

Извеняюсь, что сразу не поменил вопрос как решенный. Но вы уже давно всё ответили :-)
PM MAIL WWW ICQ Jabber   Вверх
V.A.KeRneL
Дата 16.12.2006, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

Репутация: нет
Всего: 14



Цитата(GrayCardinal)

V_A_KeRneL, 
Какая наблюдательность.  smile 
Но я все-таки предпочитаю думать что чел уловил суть а не тупо списал код  smile


GrayCardinal, нет проблем. Наблюдательность я, действительно, тренирую. smile То, что Вы говрите, правильно. Понять суть решения проблемы, разумеется, необходимо. Но, по мне, также правильно и то, чтобы в нашем форуме было как можно больше работающих кусков кода. Хотя бы для новичков, не таких как я или Dimonius, а совсем новичков, которые впервые сюда зашли и думают/смотрят/прикидывают стоит ли здесь оставаться или поискать другой форум. С другой стороны, понимать, безусловно, нужно, но и мне самому обычно приятно, когда есть готовый корректный и красивый код, в котором просто нужно разобраться, а потом вставить, куда следует, чем разбираться, а потом ещё править неработающий код или самому писать велосипед... Это, конечно, относится не к данному простейшему случаю; это есть принцип!



--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0756 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.