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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> КАК ПОСЧИТАТЬ ЁМКОСТНУЮ СЛОЖНОСТЬ? Подскажите, пожалуйста! 
:(
    Опции темы
OOMPH
Дата 18.3.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подскажите, пожалуйста, что такое емкостная сложность и как её расчитать. Как я понял, это размер памяти, занимаемый программой, но ведь это не просто сумма размеров переменных. smile smile
Спасибо! smile

Если надо, могу программу выложить.
PM MAIL   Вверх
maxim1000
Дата 18.3.2006, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



память можно разделить на три типа:
1. глобальные переменные
2. стек (локальные переменные)
3. куча
например, если считать факториал с помощью рекурсии
int f(int x) {return (x==0)?1:(x*f(x-1));}
то количество используемой памяти будет пропорционально x, т.к. на каждый шаг тратится память (хранение x+адрес возврата)


--------------------
qqq
PM WWW   Вверх
OOMPH
Дата 18.3.2006, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как бы это чуть-чуть поподробнее...
Допустим, есть функция

Код

float func1 (float *dP)
{
float F=0;
for(int n=0;n<16;n++)
F+=dP[n]*dP[n];
f/=16;
return(F);


В этом случае будет выделяться память под переменные F, n и массив dP соответственно 8, 2 и 8 байт. Как это правильно записать?
PM MAIL   Вверх
En_t_end
Дата 19.3.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



OOMPH,
Цитата(OOMPH @ 19.3.2006, 00:59 Найти цитируемый пост)
В этом случае будет выделяться память под переменные F, n и массив dP соответственно 8, 2 и 8 байт. Как это правильно записать?

smile Покажи в своем коде МАССИВ dP smile
Добавлено @ 13:18
OOMPH
Чтобы вообще без проблем всё автоматически подсчитать, перегрузи new, в перегруженном операторе сделай увиличение какого-нибудь статического счетчика и переведи все переменные на динамическую память. Кстати, если мне не изменяет память, то указатели - это теже переменные и под них также выделяется память, что-то около одного байта(для хранения адресса), но для каждого типа указатели разные.
Добавлено @ 13:21
Кстати в приведенном тобой куске помимо синтаксических ошибок, есть и очень противная ошибка переполнения, учти, что положив в переменную типа float произведение двух переменных типа float ты можешь запросто вылезти за границы допустимых значений(в итоге получишь в твоем случае отрицательное значение, ибо у тебя signed float).
PM MAIL ICQ Skype GTalk Jabber   Вверх
BreakPointMAN
Дата 19.3.2006, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(En_t_end @ 19.3.2006, 13:13 Найти цитируемый пост)
указатели - это теже переменные и под них также выделяется память, что-то около одного байта(для хранения адресса), но для каждого типа указатели разные.

Ну, конечно, в зависимости от компилятора, ОС и платформы... но 1 - думаю, маловато будет... скорее 2 или 4... smile


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
OOMPH
Дата 19.3.2006, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(En_t_end @ 19.3.2006, 13:13 Найти цитируемый пост)
Покажи в своем коде МАССИВ dP


dP[16] позже в main'e расчитывается.


Цитата(En_t_end @ 19.3.2006, 13:13 Найти цитируемый пост)
Кстати в приведенном тобой куске помимо синтаксических ошибок, есть и очень противная ошибка...


К сожаленью, да (и это только в первой функции smile , а их много ), т.к. писал эту прогу не я (вот по этому и понять ничего не могу smile ); попросили посчитать емкостную сложность вместо курсовика, вот по этому не смог отказаться smile
В нете ничего, кроме определения и нескольких ответов по паскалю не нашел, если б хорошенький примерчик, да на Си, глядишь и всё понял бы smile
Вот поэтому и помощи прошу smile smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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