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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2009, 23:59   #1
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
Плохо Нарисовать блок-схему программы

Здравсвуйте программисты! Подскажите пожалуйста,как нарисовать блок-схему этой проги,просто искал программы, так и не нашёл, одни демоверсии с ограничителями на количество строк. Если кто знает,помогите пожалуйста нарисовать блок-схему к вот этому коду.
Код:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a,b,c,d,otvet;
//Проверка на вводимость данных в поле Edit1..Edit4
if((Edit1->Text).Length() == 0)
{
ShowMessage("Ведите значение -> а");
return;
}
if((Edit2->Text).Length() == 0)
{
ShowMessage("Ведите значение -> b");
return;
}
if((Edit3->Text).Length() == 0)
{
ShowMessage("Ведите значение -> c");
return;
}
if((Edit4->Text).Length() == 0)
{
ShowMessage("Ведите значение -> d");
return;
}



//Выводим результат в Label1  проверив на исключения
try
{

if(Edit1->Text.Length()>1) //Если в строке больше одного символа
if(Edit1->Text[1]=='0' && Edit1->Text[2]!=DecimalSeparator)
 {
 ShowMessage("Ошибка! Вы не поставили запятую после 1-го нуля");
 return;
 }

if(Edit2->Text.Length()>1)
if(Edit2->Text[1]=='0' && Edit1->Text[2]!=DecimalSeparator)
 {
 ShowMessage("Ошибка! Вы не поставили запятую после 1-го нуля");
 return;
 }
if(Edit3->Text.Length()>1)
if(Edit3->Text[1]=='0' && Edit1->Text[2]!=DecimalSeparator)
 {
 ShowMessage("Ошибка! Вы не поставили запятую после 1-го нуля");
 return;
 }

if(Edit4->Text.Length()>1)
if(Edit4->Text[1]=='0' && Edit1->Text[2]!=DecimalSeparator)
 {
 ShowMessage("Ошибка! Вы не поставили запятую после 1-го нуля");
 return;
 }

//-----------------------------------------------------------




//Присваиваем переменным а,b,c,d введённые значения. в Edit1..Edit4
//Преобразуем с текстового типа символы в вещественый тип Float
a = StrToFloat(Edit1->Text);
b = StrToFloat(Edit2->Text);
c = StrToFloat(Edit3->Text);
d = StrToFloat(Edit4->Text);


//Результат вычислений присваиваем переменной "otvet"  проверив деление
// на значение b
if (b!=0) {otvet = c + 4*d - sqrt(123 * c)/b - a/2;}
else 
{
MessageBox(0,"Введите другое значение b и повторите расчет, так как делить \n на b, при b=0 запрещенно, согласно законам программирования !",
"Программа создана для Кириленко Е.Г.",MB_ICONWARNING);
return;
}
;
otvet = c + 4*d - sqrt(123 * c)/b - a/2;

//-----------------------------------------------------------




//Результат пполучаем в метке Label 1
Label1->Caption = "Результат=" + FloatToStrF(otvet,ffGeneral,7,2);
}
catch(EZeroDivide&)
{
MessageBox(0,"Ошибка! Деление на ноль!!!","Ошибка",MB_ICONERROR);
return;
}
catch(EConvertError&)
{
MessageBox(0,"Ошибка! Неправильно введено число в одном из \n полей. Возможно в полях присутствуют неправильные \n знаки вроде: w,п,!,%,$,. и т.д.","Ошибка",MB_ICONERROR);
return;
}
catch(EOverflow&)
{
ShowMessage("Выход числа за допустимый диапазон");
return;
}

}
//---------------------------------------------------------------------------
//Кнопка закрыть
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}

//---------------------------------------------------------------------------
//Обработчик события KeyPres для Edit1
//Key - код нажатой клавиши
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if(Key == DecimalSeparator)  //Если код клавиши равен ","
if(((Edit1->Text).Pos(DecimalSeparator)!=0))//Если в свойстве Text объекта Edit1
{                 //есть знак "," тогда обнулить код клавиши "," чтоб
Key = 0;         //вновь, нажав на эту клавишу, запятая не отобразилась
return;         //Выходим из функции
}

//Если нажата клавиша 'ENTER' в поле Edit1 передать фокус в Edit2
if(Key==VK_RETURN && Edit1->Text.Length()!=0)
  Edit2->SetFocus();
}
//---------------------------------------------------------------------------

//Обработчик события KeyPres для Edit2
//Key - код нажатой клавиши
void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)
{
if(Key == DecimalSeparator)  //Если код клавиши равен ","
if(((Edit2->Text).Pos(DecimalSeparator)!=0))//Если в свойстве Text объекта Edit1
{                 //есть знак "," тогда обнулить код клавиши "," чтоб
Key = 0;         //вновь, нажав на эту клавишу, запятая не отобразилась
return;         //Выходим из функции
}
//Если нажата клавиша 'ENTER' в поле Edit2 передать фокус в Edit3
if(Key==VK_RETURN && Edit2->Text.Length()!=0) //
  Edit3->SetFocus();

//Если нажата клавиша BackSpace в Edit2 и ничего не введено
// тогда передать фокус в Edit1
if(Key == VK_BACK && Edit2->Text.Length() == 0)
Edit1->SetFocus();
}
//---------------------------------------------------------------------------
prikolist вне форума Ответить с цитированием
Старый 20.05.2009, 00:00   #2
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Код:

//Обработчик события KeyPres для Edit3
//Key - код нажатой клавиши

void __fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key)
{
if(Key == DecimalSeparator)  //Если код клавиши равен ","
if(((Edit3->Text).Pos(DecimalSeparator)!=0))//Если в свойстве Text объекта Edit1
{                 //есть знак "," тогда обнулить код клавиши "," чтоб
Key = 0;         //вновь, нажав на эту клавишу, запятая не отобразилась
return;         //Выходим из функции
}
//Если нажата клавиша 'ENTER' в поле Edit3 передать фокус в Edit4
if(Key==VK_RETURN && Edit3->Text.Length()!=0)
  Edit4->SetFocus();

//Если нажата клавиша BackSpace в Edit3 и ничего не введено
// тогда передать фокус в Edit2
if(Key == VK_BACK && Edit3->Text.Length() == 0)
Edit2->SetFocus();
}
//---------------------------------------------------------------------------

//Обработчик события KeyPres для Edit4
//Key - код нажатой клавиши
void __fastcall TForm1::Edit4KeyPress(TObject *Sender, char &Key)
{
if(Key == DecimalSeparator)  //Если код клавиши равен ","
if(((Edit4->Text).Pos(DecimalSeparator)!=0))//Если в свойстве Text объекта Edit1
{                 //есть знак "," тогда обнулить код клавиши "," чтоб
Key = 0;         //вновь, нажав на эту клавишу, запятая не отобразилась
return;         //Выходим из функции
}
//Если нажата клавиша 'ENTER' в поле Edit4 передать фокус кнопке Button1
if(Key==VK_RETURN && Edit4->Text.Length()!=0)
  Button1->SetFocus();

  //Если нажата клавиша BackSpace в Edit4 и ничего не введено
// тогда передать фокус в Edit3
if(Key == VK_BACK && Edit4->Text.Length() == 0)
Edit3->SetFocus();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1KeyPress(TObject *Sender, char &Key)
{
//Если нажата клавиша BackSpace на Button1,
// тогда передать фокус в Edit4
if(Key == VK_BACK)
Edit4->SetFocus();

}
//---------------------------------------------------------------------------
prikolist вне форума Ответить с цитированием
Старый 20.05.2009, 02:14   #3
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

MS Visio позволяет строить блок-схемы
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 20.05.2009, 11:46   #4
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Мне нужна программа,которая строит автоматически,вставив туда только этот код.
prikolist вне форума Ответить с цитированием
Старый 20.05.2009, 19:46   #5
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Какой смысл в такой программе? Сначала составляют блок-схему, а потом по ней пишут программу, а не наоборот.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу нарисовать блок-схему маленькой программы prikolist Паскаль, Turbo Pascal, PascalABC.NET 4 25.11.2008 23:40
[срочно] нарисовать блок схему masima Фриланс 3 29.05.2008 13:34
Нарисовать блок схему к задаче Паскаль gigaman Помощь студентам 3 07.03.2008 19:50
Помогите нарисовать блок-схему на ооочень маленький кусочек программы!!!!! metamfetamin Помощь студентам 1 24.11.2007 22:55