Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2009, 22:49   #1
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию C++. Объявление динамических массивов.

Подскажите пожалуйста как объявлять динамический массив переменных в динамической же памяти (извините за тавтологию - увы я не программист и хочу высказаться максимально точно).
По возможности без изпользования malloc, а через new. Спасибо
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 28.04.2009, 22:55   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
int *mas = new int[10];  // массив из 10 целочисленных переменных.

// теперь сделаем матрицу 10 на 10
int i;
int **matr;
matr = new int*[10];
for(i=0;i<10; i++)
 matr[i] = new int[10];

//и не забываем освободить память:
delete[] mas;
for(i=0; i<10; i++)
 delete[] matr[i];
delete[] matr;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.04.2009, 23:02   #3
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Огромное спасибо.
Но у меня все равно возникают проблемы при объявлении динамических массивов по 100, 200 тысяч элементов.

Идея в том, что я с тхт файла считываю символы - перевожу их в числа - загоняю в массив. Так вот если в этом тхт файле больше 90 строк (не говоря о 100 тысячах), то он вылетает из программы.

Может предоставить код?
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 28.04.2009, 23:04   #4
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Да! И я хотел не статический массив, а динамический, где заранее не известно сколько элементов в массиве.
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 28.04.2009, 23:05   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Может предоставить код?
Ну покажите. Только заключите его в теги CODE ("#" на панели в окне редактирования).

И заодно файлик текстовый прикрепите (чтоб самому не набивать).

Цитата:
Да! И я хотел не статический массив, а динамический, где заранее не известно сколько элементов в массиве.
Это и есть динамический.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.04.2009, 23:13   #6
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Код:
#include <fstream>
#include <iostream>
#include <math.h>

const short lim1 = 8;
const short lim2 = 6;
const short lim3 = 5;

void term(short&, short&, double&, int&, double*);
short symBase(short&);


using namespace std;

int main()
{
    char fileName[9] = "RIM9.txt";
    short col = 1;
    short sym = 1;
    double data = 0;
    int i, rows, rowN = 0;
    cout << "Enter the rows number: ";
    cin >> rows;
    double *price = new double[rows];
    //double price[rows];    
    ifstream fin(fileName);
    char ch; //= &one;
    while (fin.get(ch))
    {
      if ((ch > 47) &&  (ch < 58)) {
        data = data + atoi(&ch)*pow(10, symBase(col)-sym);
        //cout << "****(" << col << ", " << sym << ")*** - ^^" << symBase(col)-sym << "^^";
        term(col, sym, data, rowN, price); }
      else
        if (col == 1);
    }
    //for (i=0; i <= rows; i++)
      //cout << *(price+i) << " - " << i << endl;
    
    cin >> rows;
    return 0;
}


void term(short& rcol, short& rsym, double& rdata, int& rrowN, double *pprice)
{
     if ((rcol == 1) && (rsym == lim1)) {
       rcol = 2;
       rsym = 1;
       //cout << rdata << " ";       
       rdata = 0; }
     else
     {
         if ((rcol == 2) && (rsym == lim2)) {
           rcol = 3;
           rsym = 1;
           //cout << rdata << " ";
           rdata = 0; }
         else
         {
             if ((rcol == 3) && (rsym == lim3)) {
               rcol = 1;
               rsym = 1;
               *(pprice + rrowN) = rdata;
               //cout << rdata << " - " << rrowN;
               rdata = 0; 
               rrowN = rrowN + 1; }
             else
               rsym = rsym + 1;
         }
     }
}
               

short symBase(short& rcol)
{
      switch (rcol)
      {
             case 1: return lim1;
                     break;
             case 2: return lim2;
                     break;
             case 3: return lim3;
                     break;
             default: return 0;
                      break;
      }
}

Файлик щас куда-нить закачаю. Он большой для эттэча
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott

Последний раз редактировалось Парсифаль; 28.04.2009 в 23:21.
Парсифаль вне форума Ответить с цитированием
Старый 28.04.2009, 23:16   #7
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

http://www.megaupload.com/?d=M1KXPMIT
Ссылка на файл
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 28.04.2009, 23:24   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вы хоть опишите, что это за программа, что делает.
Что за число нужно вводить при запуске?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.04.2009, 23:30   #9
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

В начале надо ввести число строк в файлике RIM9.
По количеству строк определяется размер массива.
В файле 3 столбика чисел. 1ое - дата, 2ое - время, 3 - цена. Причем все даты 8значные, все времена 6значные а цены на индекс РТС 5значные.
Все цены я хочу загнать в массив.

Я достаю по одному чару из файла - перевожу с помощью atoi в int и в зависимости от того какой это столбик умножаю на степень десятки.

Так, к примеру 489 разбивается на 4 (4*100) + 8 (8*10) + 9 (9*1).

Ну примерно так
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 28.04.2009, 23:45   #10
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Сазари, помогите, пожалуйста добить этот вопрос..
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Учебники - Создание динамических web-страниц Salomon Свободное общение 2 23.04.2009 18:25
Процедуры для динамических объектов Fruit Общие вопросы Delphi 8 30.12.2008 21:10
сцепить несколько динамических значений StasSv Microsoft Office Excel 0 22.10.2008 12:20
Как работать с файлами с помощью динамических массивов Герыч Общие вопросы Delphi 4 10.01.2008 12:22
Создание и использование динамических структур Oksana11 Помощь студентам 5 09.01.2008 19:39