#1 17.04.10 19:35
[C++]Помогите сделать обход в проге...
Код::
#include <iostream.h>
#include <conio.h>
#include <math.h>
void main()
{
char key;
double e, Eg, ni0, ni, Ld, T, T0;
const double qe=1.60E-19, e0 = 8.85E-14, k = 8.62E-5;
cout<<"Ââåäèòå íàçâàíèå ïðîâîäíèêà - G, S, A:"<<endl; cin>>key;
cout<<endl;
switch(key)
{
case 'G':
cout<<endl<<"Âû âûáðàëè â êà÷åñòâå ìàòåðèàëà ÃÅÐÌÀÍÈÉ, íàæìèòå ÂÂÎÄ äëÿ ïðîäîëæåíèÿ...";
getch();
cout<<endl<<"Çíà÷åíèÿ ïàðàìåòðîâ äëÿ ýòîãî ïîëóïðîâîäíèêà:"<<endl;
e = 16.0;
Eg = 0.67;
ni0 = 2.4E+13;
cout<<endl<<"Ãåðìàíèé:"<<endl;
cout<<"e = "<<e<<"\t"<<"Eg = "<<Eg<<"\t"<<"ni0 = "<<ni0;
break;
case 'S':
cout<<endl<<"Âû âûáðàëè â êà÷åñòâå ìàòàðèàëà ÊÐÅÌÍÈÉ, íàæìèòå ÂÂÎÄ äëÿ ïðîäîëæåíèÿ...";
getch();
e = 11.9;
Eg = 1.12;
ni0 = 1.45E+10;
cout<<endl<<"Êðåìíèé:"<<endl;
cout<<"e = "<<e<<"\t"<<"Eg = "<<Eg<<"\t"<<"ni0 = "<<ni0;
break;
case 'A':
cout<<endl<<"Âû âûáðàëè â êà÷åñòâå ìàòåðèàëà ÀÐÑÅÍÈÄ ÃÀËËÈß, íàæìèòå ÂÂÎÄ äëÿ ïðîäîëæåíèÿ...";
getch();
e = 13.1;
Eg = 1.43;
ni0 = 1.79E+6;
cout<<endl<<"Àðñåíèä ãàëëèÿ:"<<endl;
cout<<"e = "<<e<<"\t"<<"Eg = "<<Eg<<"\t"<<"ni0 = "<<ni0;
break;
default:
cout<<"Âû ââåëè íåâåðíîå çíà÷åíèå ïîëóïðîâîäíèêà...";
break;
e = 0;
Eg = 0;
ni0 = 0;
}
cout<<endl<<"Äîïîëíèòåëüíûå âåëè÷èíû äëÿ âûáðàííîãî ìàòåðèàëà: "<<endl;
T = 300;
T0 = 100;
ni = ni0 * exp(Eg*(T-T0)/2*k*T*T0);
Ld = sqrt((e*e0*k*T)/(qe*ni));
cout<<"Ld = "<<Ld<<"\t"<<"ni = "<<ni;
}Надо чтобы если я в Свиче не то значение ввожу он мне не считал внизу там значения.. ХЗ как это сделать...
Offline
#7 17.04.10 21:32
Re: [C++]Помогите сделать обход в проге...
Вообщем я щас попробую выложить свои идеи мб ты что и поймешь из того что я хочу....
Код::
switch(key) case a ... caseb ... //а вот если ты вводишь условие не такое как в свитче сказано, //то нужно что бы он обходил все что расположено ниже <выражение> //вот его надо обойти //и прийти сюда <вы вели не то значение>
ну это я так образно написал
Offline
#8 17.04.10 21:35
Re: [C++]Помогите сделать обход в проге...
ну я вот щас напишу условие...
7. Разработать программу, присваивающую трем переменным , и значения параметров одного их трех полупроводниковых матери¬алов: германия, кремния или арсенида галлия, в зависимости от введенного ключа выбора G, S или A.
Материал
, эВ
, см-3
германий 16.0 0.67 2.4.1013
кремний 11.9 1.12 1.45.1010
арсенид галлия 13.1 1.43 1.79.106
Затем должны выполняться вычисления величин
;
,
где q = 1.60.10-19 Кл – заряд электрона;
0 = 8.85.10-14 Ф/см – диэлектрическая постоянная;
k = 8.62.10-5 эВ/К – постоянная Больцмана.
В конце работы программа должна выводить значения величин и на дисплей.
Расчет выполняется для значения температуры, заданного преподавателем.
Если пользо¬ватель неправильно ввел значения ключа, переменным , и должны быть присвоены нулевые значения, вычисления и не выполняться, а в качестве результата выводиться соответствующее сообщение.
Offline
#9 17.04.10 21:40
Re: [C++]Помогите сделать обход в проге...
Yaha_KoD, ну так обрабатывай ситуацию когда значение переменной key не равно G, S или A в секции default. Присвой переменным значения 0, и выведи сообщение, и вызови return. В чем проблема-то?
Или введи флаг корректности данных. Если попали в default, то флаг=false. И после свитча его проверяй.
Offline
#10 17.04.10 21:44
#11 17.04.10 21:45
#12 17.04.10 21:47
Re: [C++]Помогите сделать обход в проге...
Код::
#include <iostream.h>
#include <conio.h>
#include <math.h>
void main()
{
char key;
double e, Eg, ni0, ni, Ld, T, T0;
const double qe=1.60E-19, e0 = 8.85E-14, k = 8.62E-5;
cout<<"Введите название проводника - G, S, A:"<<endl; cin>>key;
вот, ну там ошибки я не пойму.....
cout<<endl;
switch(key)
{
case 'G':
cout<<endl<<"Вы выбрали в качестве материала ГЕРМАНИЙ, нажмите ВВОД для продолжения...";
getch();
cout<<endl<<"Значения параметров для этого полупроводника:"<<endl;
e = 16.0;
Eg = 0.67;
ni0 = 2.4E+13;
cout<<endl<<"Германий:"<<endl;
cout<<"e = "<<e<<"\t"<<"Eg = "<<Eg<<"\t"<<"ni0 = "<<ni0;
break;
case 'S':
cout<<endl<<"Вы выбрали в качестве матариала КРЕМНИЙ, нажмите ВВОД для продолжения...";
getch();
e = 11.9;
Eg = 1.12;
ni0 = 1.45E+10;
cout<<endl<<"Кремний:"<<endl;
cout<<"e = "<<e<<"\t"<<"Eg = "<<Eg<<"\t"<<"ni0 = "<<ni0;
break;
case 'A':
cout<<endl<<"Вы выбрали в качестве материала АРСЕНИД ГАЛЛИЯ, нажмите ВВОД для продолжения...";
getch();
e = 13.1;
Eg = 1.43;
ni0 = 1.79E+6;
cout<<endl<<"Арсенид галлия:"<<endl;
cout<<"e = "<<e<<"\t"<<"Eg = "<<Eg<<"\t"<<"ni0 = "<<ni0;
break;
}
if (key = 'G'||'S'||'A')
cout<<endl<<"Дополнительные параметры для выбранного значения "<<endl;
T = 300;
T0 = 100;
ni = ni0 * exp(Eg*(T-T0)/2*k*T*T0);
Ld = sqrt((e*e0*k*T)/(qe*ni));
cout<<"Ld = "<<Ld<<"\t"<<"ni = "<<ni;
else
cout<<endl<<"Неверное значение.!";
}Offline
#13 17.04.10 21:48
#14 17.04.10 21:52
Re: [C++]Помогите сделать обход в проге...
Код::
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int main()
{
char key;
double e, Eg, ni0, ni, Ld, T, T0;
const double qe=1.60E-19, e0 = 8.85E-14, k = 8.62E-5;
cout<<"Введите название проводника - G, S, A:"<<endl;
cin>>key;
cout<<endl;
switch(key)
{
case 'G':
cout<<endl<<"Вы выбрали в качестве материала ГЕРМАНИЙ, нажмите ВВОД для продолжения...";
getch();
cout<<endl<<"Значения параметров для этого полупроводника:"<<endl;
e = 16.0;
Eg = 0.67;
ni0 = 2.4E+13;
cout<<endl<<"Германий:"<<endl;
cout<<"e = "<<e<<"\t"<<"Eg = "<<Eg<<"\t"<<"ni0 = "<<ni0;
break;
case 'S':
cout<<endl<<"Вы выбрали в качестве матариала КРЕМНИЙ, нажмите ВВОД для продолжения...";
getch();
e = 11.9;
Eg = 1.12;
ni0 = 1.45E+10;
cout<<endl<<"Кремний:"<<endl;
cout<<"e = "<<e<<"\t"<<"Eg = "<<Eg<<"\t"<<"ni0 = "<<ni0;
break;
case 'A':
cout<<endl<<"Вы выбрали в качестве материала АРСЕНИД ГАЛЛИЯ, нажмите ВВОД для продолжения...";
getch();
e = 13.1;
Eg = 1.43;
ni0 = 1.79E+6;
cout<<endl<<"Арсенид галлия:"<<endl;
cout<<"e = "<<e<<"\t"<<"Eg = "<<Eg<<"\t"<<"ni0 = "<<ni0;
break;
default:
e = 0;
Eg = 0;
ni0 = 0;
cout<<endl<<"Вы ввели недопустимый материал";
return 0;
break;
}
cout<<endl<<"Дополнительные параметры для выбранного значения "<<endl;
T = 300;
T0 = 100;
ni = ni0 * exp(Eg*(T-T0)/2*k*T*T0);
Ld = sqrt((e*e0*k*T)/(qe*ni));
cout<<"Ld = "<<Ld<<"\t"<<"ni = "<<ni;
return 0;
}Например так - не пойдет?
Offline
#15 17.04.10 21:57
#16 17.04.10 22:00
#17 17.04.10 22:03
#18 17.04.10 22:07
#19 17.04.10 22:11
#20 17.04.10 22:13
#21 17.04.10 22:15
#22 17.04.10 22:17
#23 17.04.10 22:20
Re: [C++]Помогите сделать обход в проге...
Yaha_KoD написал(а):
а впереди еще сложнее - кубическое уравнение
Формула для корней кубического уравнения
Yaha_KoD написал(а):
2 return то это типа скачок от одного к другому или так нельзя делать??
просто у тебя return-ы в ветках исполнения программы, которые никогда не пересекутся.
Offline

