![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 16.10.2011
Сообщений: 67
|
![]()
Всем привет. Есть простенькая программа, которая случайным образом создает двумерный массив, в котором каждая строка состоит из сторон треугольника. Программа находит площадь из этих сторон (при условии что из этих сторон можно составить треугольник) и печатает ее для каждого треугольника. Однако программа работает некорректно при значении количества треугольников свыше 15.
Код:
Последний раз редактировалось Joose; 21.12.2012 в 19:04. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
![]() Код:
Надо бы типа так: Код:
Код:
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 16.10.2011
Сообщений: 67
|
![]()
Память выделяется функцией malloc циклически для каждой строки. Если бы она не выделялась, то программа вообще не работала, разве не так? Если честно впервые вижу выделение памяти через new. За тип перед malloc спасибо большое, совсем забыл что я делю на RAND_MAX! Но все же не совсем понял что Вы имели ввиду когда говорили о выделении памяти.
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
![]()
Ошибки синтаксиса - это понятно, но самое интересное происходит в "function".
При каждом ее вызове происходит выделение памяти. Все хорошо, если заранее точно известно, что функция вызовется наверняка один лишь раз. Но она вызывается в цикле. "Кто выделил память, тот ее и освобождает" |
![]() |
![]() |
![]() |
#5 | |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
![]() Цитата:
Кратко, двумерный массив - это совокуность отдельных одномерных массивов, на которые содержатся ссылки в "главном массиве". Т.е. вы выделяете память под отдельные массивы, а "главного" массива у вас нет. |
|
![]() |
![]() |
![]() |
#6 | ||
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
![]() Цитата:
С new это конечно для с++. А для си так: ms1 = (float**) malloc( num * sizeof(float*)); Вот массив для приема num указателей готов. А в цикле, как у Вас и написано, выделяется память под каждый элемент массива. И я присоединяюсь к Цитата:
|
||
![]() |
![]() |
![]() |
#7 | |
Пользователь
Регистрация: 16.10.2011
Сообщений: 67
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 16.10.2011
Сообщений: 67
|
![]()
Спасибо Вам, понял наконец что про основной массив, который содержит в себе массивы строк я совсем забыл.
|
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
![]()
Ну, а чтоб совсем все было красиво - пред окончание программы верните системе всю выделенную память. (Хотя система сама прибирается за любой программой, но все же в отдельных моментах она этого не делает.)
Последний раз редактировалось Smogg; 21.12.2012 в 20:43. |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 16.10.2011
Сообщений: 67
|
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
процедуры и функции - возможно ли построение треугольника по длинам сторон, вычисление площади треугольника по длинам сторон | kazbek1 | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 18.05.2012 10:38 |
Фон с двух сторон | AlexSilver | HTML и CSS | 0 | 21.03.2012 11:19 |
Реализовать программу сбора елки из треугольников. Используя объектные структуры, создать 6 треугольников разного размера | dyozik | Общие вопросы Delphi | 4 | 05.12.2011 11:52 |
Си/Си++ Существование сторон треугольника. | Маришка_Курносова | Помощь студентам | 2 | 01.07.2010 21:54 |
Диаграммы, легенда с 2 сторон. | WIC | Microsoft Office Excel | 8 | 02.10.2007 17:17 |