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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2012, 14:49   #1
Юля_
Новичок
Джуниор
 
Регистрация: 06.01.2012
Сообщений: 4
Сообщение Функция вычисления сопротивления ( С++)

Добрый день! Работа на тему "Расчет сопротивления резисторов электрической цепи".
для последовательных резисторов: R=R1+R2+Rn;
для параллельно соединенных проводников: 1/R=1/R1+1/R2+1/Rn.
По сути, задача 6 класса, НО в самой функции сложения сопротивления, иногда вылетает ошибка:
"Необработанное исключение типа "System.Runtime.InteropServices.SEH Exception" произошло в Курсовая Юля.exe

Дополнительные сведения: Внешний компонент создал исключение."

Она вылетает, только если создаешь цепь и резисторы в ней соединяешь параллельно, затем последовательно и снова параллельно. или просто используешь 2 раза подряд параллельное соединение. указывает на строку: r=new float[n];
в остальных случаях все ок!
в чем может быть ошибка? Почему ему не нравитсЯ такое выделение памяти?
Код:
private: System::Void Calc(float *a){
	 R=0; //переменная результата вычисления сопротивления
	float Rn=0; //Переменная-накопитель промежуточных результатов 
	 int i1=0,kol1=0,i2=0;
	 n=0; //Переменная количества разветвлений на участке цепи
	 for(int i=0;i<kol;i++)
	 if(a[i]>0)R+=a[i];  //к подсчитанному сопротивленю добавляем положительные элементы массива
	else{ //если элемент отрицательный начинается обработка элементов, описывающих параллельное соединение

	 for(i1=i+1;a[i1]>-20;i1++) //(a[i+1];a[i]=-20) – диапазон элементов параллельного соединения
	if(a[i1]==-1){n++;kol1++;} //a[i1]=-1 –переход на следующ. лиию
	 else kol1++;

            float *r;
	 kol1++;
	 n++;
	 r=new float[n]; //создаем массив, каждый элемент которого – сумма сопротивлений одной линии
	 for(i1=0;i1<n;i1++)r[i1]=0;
	 for(i1=i+1;a[i1]>-20;i1++) //цикл подсчета значений элементов массива *r
	 { 
	if(a[i1]!=-1)
	r[i2]+=a[i1];
	else i2++;
	 }
	 for(i2=0;i2<n;i2++)Rn+=1/r[i2]; //промежуточный подсчет
	 R+=1/Rn; //прибавление к ранее подсчитанному сопротивлению величины сопротивления участка параллельного соединения
	 i+=kol1; //в дальнейшем просмотре результирующего массива пропускаем элементы, сопротивление которых только что посчитано
	 n=0;
	 kol1=0;
	 i1=0;
	 i2=0;
	 Rn=0;

	delete r;
Юля_ вне форума Ответить с цитированием
Старый 07.01.2012, 00:30   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

На какой строке хоть выбивает ?
onewho вне форума Ответить с цитированием
Старый 07.01.2012, 00:37   #3
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Деление на ноль, может?
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 07.01.2012, 15:02   #4
Юля_
Новичок
Джуниор
 
Регистрация: 06.01.2012
Сообщений: 4
По умолчанию

r=new float[n];
Юля_ вне форума Ответить с цитированием
Старый 07.01.2012, 15:09   #5
Юля_
Новичок
Джуниор
 
Регистрация: 06.01.2012
Сообщений: 4
По умолчанию

Деление на ноль...? чисто теоритически такое могло получиться, но он выкидывает именно на строке r=new float[n]; до основной формулы там еще далеко
Юля_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномер.массив,рассчет сопротивления сложного соединения Namyola Паскаль, Turbo Pascal, PascalABC.NET 2 18.05.2011 17:03
Движение тела, брошенного под углом к горизонту с учетом сопротивления Encore Помощь студентам 0 03.04.2011 20:34
Функция вычисления факториала (Паскаль)) Doublefaced Помощь студентам 12 01.10.2009 23:34
функция вычисления сред.арифм и сред.геометр Demigoddess Общие вопросы C/C++ 2 15.05.2009 20:24
Вычислить коэффициент сопротивления ξ движущейся в воздушной среде сферической частиц Noor Общие вопросы C/C++ 1 27.05.2007 00:34