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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 12.05.2010, 23:07   #1
siemdi
Пользователь
 
Регистрация: 15.01.2010
Сообщений: 50
Вопрос не могу определить ошибку....

Помогите найти ошибку....
Пользуюсь компилятором MinGW (минималист)...
Помогите исправить ошибки, с синтаксисом все правильно а вот с логической частью совсем не как.... нужен свежый взгляд на проблемму...


Код:

# include <iostream.h>
# include <math.h>
# include <time.h>
int PunktMenu;
int KollichestvoElementov;
double Ro;
double PNulevoe;
int i;
double R[8];
double P[8];
double B[8];
int nn=0;
double Koeficient;
double BDelt;
double LDelt;
double DeltB=0.01;
double DeltL=0.03;
double Tehn=0.1;
double h=0.01;
double bt=0.1;
double lt=0.3;
double aMin=0.3;
double BMeh;
double LMeh;
double b;
double L;
double Ploschad;
double Shirina[8];
double Dlina[8];
double X,Y,Z;
double ololo;
double ah;
double t;
double n;
double max(double, double, double);
void VvodDannih();
void SluchaynieDannie();
void Oshibka();
void Raschet();
void Rezultat();
void Koeficienti();
void Meandr();
	int main()
	{
		Ploschad=0;
		X,Y=0;
		system("chcp 1251");
		do
		{
			cin>>PunktMenu;
			if(PunktMenu==1)
			{
				VvodDannih();
			}
			if(PunktMenu==2)
			{
				SluchaynieDannie();
			}
			if(PunktMenu==3)
			{
				return 0;
			}
		}
		while(PunktMenu!=4);
	}
	void VvodDannih()
	{
		do
		{
			cin>>KollichestvoElementov;
		}
		while((KollichestvoElementov<0)&&(KollichestvoElementov>8));
		do
		{
			cout<<"0.01.....50"<<endl;
			cin>>Ro;
			if((Ro<0.01)&&(Ro>50))
			{
				Oshibka();
			}
		}
		while((Ro<0.01)&&(Ro>50));
		do
		{
			cout<<"10...30"<<endl;
			cin>>PNulevoe;
			if((PNulevoe<10)&&(PNulevoe>30))
			{
				Oshibka();
			}
		}
		while((PNulevoe<10)&&(PNulevoe>30));
		for(i=0; i<KollichestvoElementov; i++)
		{
			do
			{
				cout<<"0.05...10000"<<endl;
				cin>>R[i];
				if((R[i]<0.05)&&(R[i]>10000))
				{
					Oshibka();
				}
			}
			while((R[i]<0.05)&&(R[i]>10000));
			do
			{
				cout<<"5...50"<<endl;
				cin>>P[i];
				if((P[i]<5)&&(P[i]>50))
				{
					Oshibka();
				}
			}
			while((P[i]<5)&&(P[i]>50));
		}
	}

	void Rezultat()
	{
		for(i=0; i<KollichestvoElementov;i++)
		{
			cout<<endl;
			Koeficienti();
			cout<<endl<<"Резистор "<<endl<<i+1<<endl;
			Raschet();
			n++;
		}
		cout<<endl;
		max();
	}

	void Koeficienti()
	{
		Koeficient=(R[i]/PNulevoe);
		cout<<"Коэфициент="<<Koeficient<<endl;
	}
	
	void Oshibka()
	{
		cout<<"Ошибка!!!"<<endl;
	}
		void max(X,Y,Z)
	{
		cout<<"asdasda"<<endl;
	}

	void Raschet()
	{
		if((Koeficient>=1)&&(Koeficient<=6))
		{
			cout<<"Резистор прямоугольной формы"<<endl;
			BDelt=(DeltB+DeltL/Koeficient)/Tehn;
			BMeh=sqrt((Ro*P[i])/(R[i]*PNulevoe));
			b=max(bt,BDelt,BMeh);
			L=b*Koeficient;
			Dlina[nn]=(1/h)*h+h;
			Shirina[nn]=(b/h)*h+h;
			Ploschad=Dlina[nn]*Shirina[nn];
			B[nn]=Ploschad;
			cout<<"Длина "<<Dlina[nn]<<endl;
			cout<<"Ширина "<<Shirina[nn]<<endl;
			cout<<"Площадь "<<Ploschad<<endl;
		}
		if((Koeficient>=0.1)&&(Koeficient<1))
		{
			cout<<"Прямоугольный резистор длина<ширина"<<endl;
			LDelt=(DeltL+Koeficient*DeltB)/Tehn;
			LMeh=sqrt((R[i]*P[i])/(P*PNulevoe));
			L=max(lt,LDelt,LMeh);
			b=1/Koeficient;
			Shirina[nn]=(b/h)*h+h;
			Dlina[nn](1/h)*h+h;
			Ploschad=Shirina[nn]*Dlina[nn];
			B[nn]=Ploschad;
			cout<<"Длина "<<Dlina[nn]<<endl;
			cout<<"Ширина "<<Shirina[nn]<<endl;
			cout<<"Площадь "<<Ploschad<<endl;
		}
		if(Koeficient<0.1)
		{
			b=0;
			Shirina[nn]=b;
			cout<<"Не нужно изготовлять такой резистор "<<endl;
		}
		if(Koeficient>6)
		{
			Meandr();
		}
	}
	
	void Meandr()
	{
		cout<<"Исходя из полученных данных резистор должен быть изготовлен сложной формы"<<endl;
		BDelt=(DeltB+DeltL/Koeficient)/Tehn;
		BMeh=sqrt((Ro*P[i])/(R[i]*PNulevoe));
		b=max(bt,BDelt,BMeh);
		Shirina[nn]=(b/h)*h+h;
		ololo=Shirina[nn]*Koeficient;
		ah=Shirina[nn];
		if(ah<aMin)
		{
			ah=aMin;
		}
		do
		{
			if(Y/ah>=6)
			{
				ah=ah+aMin;
				t=ah+Shirina[nn];
				n=sqrt(ololo/t);
				X=n*(ah+Shirina[nn]);
				Y=(ololo-ah*n)/n;
				Ploschad=X*Y;
				B[nn]=Ploschad;
			}
		}
		while(Y/ah>=10);
		cout<<"Длина "<<X<<endl;
		cout<<"Ширина "<<Shirina<<endl;
		cout<<"Расстояние"<<ah<<endl;
		cout<<"Число пластин "<<n<<endl;
		cout<<"Ширина "<<n<<endl;
		cout<<"Площадь"<<Ploschad<<endl;
	}

Последний раз редактировалось siemdi; 12.05.2010 в 23:10.
siemdi вне форума
Старый 12.05.2010, 23:26   #2
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Знатный код, был бы вашим преподавателем поломал бы руки, в пяти местах:
1. глобальные переменные
2. не использование const
3. стиль оформление
4. транслит
5. отсутствие комментариев
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума
Старый 12.05.2010, 23:35   #3
siemdi
Пользователь
 
Регистрация: 15.01.2010
Сообщений: 50
По умолчанию

1. А какие переменные использовать если у меня много описанных функций и практически во всех используются одни и теже переменныые
2. const это третье дело, это исправим
3. Какой стиль оформления должен быть ?
4. Что значит транслит?
5. так как я пишу прогу сам то коментарии мне не нужны... если комуто они помогут исправить ошибки то с радостью подобавляю)))
siemdi вне форума
Старый 12.05.2010, 23:47   #4
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

1, 2.
Код:
int PunktMenu; // используется только в int main(), наверняка многое также используется только в одной функции, вот там и объявляйте.
...
int i; // wtf ?
double R[8]; //
double P[8]; // а это что ? )
double B[8]; //
int nn=0;    //
...
// наверняка константы пошли, но я не уверен, придется всё просмотреть на предмет константовости
double DeltB=0.01;
double DeltL=0.03;
double Tehn=0.1;
double h=0.01;
double bt=0.1;
double lt=0.3;
double aMin=0.3;
...
// а дальше совсем х3 что
double X,Y,Z;
double ololo;
double ah;
double t;
double n;
3.
Это:
Код:
BDelt=(DeltB+DeltL/Koeficient)/Tehn;
Shirina[nn]=(b/h)*h+h;
Можно так :
Код:
BDelt = ( DeltB + DeltL / Koeficient ) / Tehn;
Shirina[ nn ] = b + h;
И будет лучше же, глазам так точно приятней.
4.
Вместо Oshibka, вполне себе Error сойдет, любите тех, кто в будущем будет читать ваш код, а то я как-то корейский читал, хорошо что на корейском были только комментарии, а всё остальное - английский.
5. Ну это может да
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума
Старый 13.05.2010, 01:03   #5
siemdi
Пользователь
 
Регистрация: 15.01.2010
Сообщений: 50
По умолчанию

оооо вот ты в дебри залез))) я тебе говорю что когда ставлю переменные в функцию даже если она там только используется мне чтобы передать эти значения другой функции нужно создавать еще одну переменную а это полный бред поэтому и использовал такие переменные, насчет оформления это согласен, и согласен с транслитом)))))) а вообще помочь можешь???
siemdi вне форума
Старый 13.05.2010, 01:44   #6
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

А что конкретно нужно или что не так ? )
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума
Старый 13.05.2010, 02:03   #7
siemdi
Пользователь
 
Регистрация: 15.01.2010
Сообщений: 50
По умолчанию

просто помоги устранить ошибки кода, не обращая внимания на все что ты сказал у меня ошибки в функциях!!
вот что мне нужно
siemdi вне форума
Старый 13.05.2010, 02:52   #8
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Код:
  Dlina[nn]=(1/h)*h+h;
  Shirina[nn]=(b/h)*h+h;
Явно что-то не то, зачем делить на h, а затем на h умножать ?
Код:
Dlina[nn](1/h)*h+h;
Явно что-то не то, наверное = забыли

Это всё что заметил беглый осмотр, где конкретно могут быть ошибки ?
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума
Старый 13.05.2010, 16:35   #9
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

С синтаксисом...?
Код:
double max(double, double, double);
ниже
Код:
void max(X,Y,Z)
	{
		cout<<"asdasda"<<endl;
	}
Копаться в Вашем коде не зная условий...,
Предлагаю отладку по частям. Забиваете все функции кроме main, VvodDannih(), Oshibka(). И начинаете отлаживать ввод. Вводите выводы дополнительных сообщений на экран.
Отладив одну функцию переходите к следующей, отлаженную оставляем.
Могу сказать, что в функции ввода у вас всюду ошибка в условии продолжения цикла и анализе введенных данных типа
Код:
((R[i]<0.05)&&(R[i]>10000));
не может сопротивление одновременно быть меньше 0,05 и больше 10000.
Наверное д.б.
Код:
((R[i]<0.05)||(R[i]>10000));
Потрудитесь сами, если что не получится помогу.
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 13.05.2010 в 17:56.
Sweta вне форума
Старый 15.05.2010, 15:45   #10
siemdi
Пользователь
 
Регистрация: 15.01.2010
Сообщений: 50
По умолчанию

[QUOTE=ozo;523764]
Код:
  Dlina[nn]=(1/h)*h+h;
  Shirina[nn]=(b/h)*h+h;
Явно что-то не то, зачем делить на h, а затем на h умножать ?


это такая формула .... для расчета размеров тонкопленкостного резитора..... и она обязательна без изменений......


все спасибо за помощь, оказалось легче написать новую правильную чем исправить ошибки в измененной_))))))))))
siemdi вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять ошибку alex_alpha Общие вопросы C/C++ 5 23.03.2010 19:18
С++ (не могу опредилить ошибку) slim>>> Помощь студентам 6 27.01.2010 17:39
Не могу найти ошибку в БД Bilargo Помощь студентам 0 26.11.2009 14:00
Не могу понять ошибку. KoBRaAndrey Общие вопросы Delphi 2 18.11.2009 19:28
Не могу найти ошибку! Эдуард Общие вопросы C/C++ 7 27.02.2008 16:34