Официальный сайт студ.городка НГТУ
Программирование и БД » [C++]Помогите сделать обход в проге... 

#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

#2  17.04.10 19:40

Re: [C++]Помогите сделать обход в проге...

Я тут подумал, надо условие типа что если свитч истиный(или ХЗ как он там назвается) то условия выполняются, а если нет то там просто месага вылетает)

Offline

#3  17.04.10 19:40

Re: [C++]Помогите сделать обход в проге...

но все равно не понимаю как там замутить...

Offline

#4  17.04.10 21:24

Re: [C++]Помогите сделать обход в проге...

Yaha_KoD написал(а):

Надо чтобы если я в Свиче не то значение ввожу он мне не считал внизу там значения.. ХЗ как это сделать...

расшифруй что хотел сказать

Offline

#5  17.04.10 21:26

Re: [C++]Помогите сделать обход в проге...

Ну вот смотри ты вот когда там вводищь значение не удовлетворяющее условию проги, то она не считает выражение которое расположено ниже свича...

Offline

#6  17.04.10 21:31

Re: [C++]Помогите сделать обход в проге...

Напиши проще, что должно делаться, а не как исправить то что есть. Один фиг не понимаю

Yaha_KoD написал(а):

там вводищь значение не удовлетворяющее условию проги, то она не считает выражение которое расположено ниже свича...

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

Re: [C++]Помогите сделать обход в проге...

а что такое return? Как его прописать??? Или флаг?

Offline

#11  17.04.10 21:45

Re: [C++]Помогите сделать обход в проге...

Yaha_KoD, запость здесь текст свой проги, только чтоб текст нормально отображался, а не

Yaha_KoD написал(а):

cout<<endl<<"Âû âûáðàëè â êà÷åñòâå ìàòåðèàëà ÃÅÐÌÀÍÈÉ,  íàæìèòå ÂÂÎÄ äëÿ ïðîäîëæåíèÿ...";

. Проще показать, чем рассказать.

Offline

#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

Re: [C++]Помогите сделать обход в проге...

блин вот я нуб... даже не туда фразу воткнул.....

Offline

#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

Re: [C++]Помогите сделать обход в проге...

Нифига.... Все работает.. а в чем прикол return расскажи плих что она делает?

Offline

#16  17.04.10 22:00

Re: [C++]Помогите сделать обход в проге...

Оператор return; это оператор возвращения из функции

Offline

#17  17.04.10 22:03

Re: [C++]Помогите сделать обход в проге...

Сори за тупость.... А куда оно возвращается?? ну вот ты там 2 раза его написал а что будет если второй return который где выражение убрать?

Offline

#18  17.04.10 22:07

Re: [C++]Помогите сделать обход в проге...

Ты извини что я так спрашиваю подробно просто я хочу программировать научиться... вот хочу с малого начать.... а не просто лабы все сдать..)

Offline

#19  17.04.10 22:11

Re: [C++]Помогите сделать обход в проге...

ну тогда начинай с азов типа циклов, ветвления и прочего. И не плохо было бы книжкой по тому же С++ обзавестись

Offline

#20  17.04.10 22:13

Re: [C++]Помогите сделать обход в проге...

да у меня есть.... просто там я прочитал про свич... а тут какие то замуты еще в лабе....

а впереди еще сложнее - кубическое уравнение, на всю ночь мне...

Offline

#21  17.04.10 22:15

Re: [C++]Помогите сделать обход в проге...

Yaha_KoD, программа твоя вызывается из ОС. И в данном случае return возвращает ОС код завершения программы. Т.е после return в функции main() программа завершает свою работу.

Offline

#22  17.04.10 22:17

Re: [C++]Помогите сделать обход в проге...

ааа... это типа ступора... то есть когда прога напарывается на return то она завершается, а если 2 return то это типа скачок от одного к другому или так нельзя делать??

Offline

#23  17.04.10 22:20

Re: [C++]Помогите сделать обход в проге...

Yaha_KoD написал(а):

а впереди еще сложнее - кубическое уравнение

Формула для корней кубического уравнения

Yaha_KoD написал(а):

2 return то это типа скачок от одного к другому или так нельзя делать??

просто у тебя return-ы в ветках исполнения программы, которые никогда не пересекутся.

Offline

#24  17.04.10 22:23

Re: [C++]Помогите сделать обход в проге...

за формулу СПС... тока у меня написано в методе она... а за return более менее понятно.... тока можно использовать вместо слова возвращает - слово сообщает или вставляет???

Offline

#25  17.04.10 22:24

Re: [C++]Помогите сделать обход в проге...

Yaha_KoD написал(а):

сообщает

Offline

#26  17.04.10 22:25

Re: [C++]Помогите сделать обход в проге...

аа ну я так и подумал... ну я если что по поводу кубического уравнения тоже выложу.... хоть и немножко нагло будет.... я просто больше спрашиваю чем отвечаю.... ну это пока))))

Offline

#27  17.04.10 22:29

Re: [C++]Помогите сделать обход в проге...

Yaha_KoD написал(а):

я просто больше спрашиваю чем отвечаю.... ну это пока))))

"мы все учились понемногу, чему-нибудь и как-нибудь"
А вообще - стоит прочитать хотя бы Подбельского для начала.

Исправлено Revenger (17.04.10 22:29)

Offline

#28  17.04.10 22:31

Re: [C++]Помогите сделать обход в проге...

)))) мда.... я Дейтела какого то читаю))) в библиотеке подсунули)

Offline

#29  17.04.10 22:34

Re: [C++]Помогите сделать обход в проге...

Yaha_KoD написал(а):

Дейтела какого то читаю

лично не читал, но по описанию должна быть неплохой.

Revenger написал(а):

Подбельского

Просто там все очень легко. Это минимальные необходимые навыки.

Offline

#30  17.04.10 22:37

Re: [C++]Помогите сделать обход в проге...

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

Offline

#31  18.04.10 01:09

$up
Профиль

Re: [C++]Помогите сделать обход в проге...

if (key = 'G'||'S'||'A')

это шедевр 8)

Offline

#32  18.04.10 01:39

Re: [C++]Помогите сделать обход в проге...

$up, да ладно тебе. А то сам ни разу чуши не писал?

Offline

#33  18.04.10 02:17

$up
Профиль

Re: [C++]Помогите сделать обход в проге...

Не, такое вдохновение меня ни разу не посещало 8)

тут, конечно, мы сразу понимаем, что хотел сказать автор, можно читать слева направо.

Исправлено $up (18.04.10 02:22)

Offline

#34  18.04.10 02:38

Re: [C++]Помогите сделать обход в проге...

$up написал(а):

if (key = 'G'||'S'||'A')

это шедевр 8)

еще фигня. в одной теме тут вообще видел if(i%i=0) - вот уж точно шедевр.

Offline

Программирование и БД » [C++]Помогите сделать обход в проге... 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.048 сек.
Выполнено 14 запросов.