MotoFan.Ru - все для моторола > Разное > Обо всем

Програмирование Полная версия
Страницы: 1, 2

 av DUO Z6

 23.11.2010, 17:14

Помогите написать пару прог, даже не написать а исправить) у мя написаны с программой, а мне еще нада с подпрограммой, вот это и не получается)
1) с рекуррентной формулой
с программой, как оно должно быть:
{
float x,a,S;
int n,k;
x=StrToFloat(Edit1->Text);
n=StrToInt(Edit2->Text);
S=0;
a=sqrt(x)/6;
for(k=1;k<=n;k++){S=S+a;a=sqrt(k+1)/sqrt(k)*(k+3)*a}
Edit3->Text=FloatToStr(S);
}
вот эта программа работает правильно если ввести n=4, x=2, то ответ должен приблизительно лучиться =0.343..
с подпрограммой я написал так, но ответ ваще почему то другой:
{
float R(int x)
float x,a;
int k;
S=0
a=sqrt(x)/6;
for(k=1;k<=n;k++){S=S+a;a=sqrt(k+1)/sqrt(k)*(k+3)*a}
return S;
}
void . Button1Click )
{
int n
float S;
x=StrToFloat(Edit1->Text);
n=StrToInt(Edit2->Text);
S=R(x);
Edit3->Text=FloatToStr(S);
}

вот в это программе что-то я напартачил...а ваще голова не варить разобраться=(

2)
здесь табулирование простая программа тоже работает, а вот с подпрограммою, я даже понятие не имею как ее написать(((,
здесь правильный ответ при А=0, В=2 и с шагов в Н=0.2:
х у
0.0 -1.000
0.2 -1.204
{
float A,B,H,x,y;
x=StrToFloat(Edit1->Text);
B=StrToFloat(Edit2->Text);
H=StrToFloat(Edit3->Text);
while (x<=B+0.01*H);
{y=pow(x,2.5)-exp(x);
Memo1->Lines->Add("x="+FormatFloat("0.0",x)+" "+"y="+FormatFloat("0.000",y));
x=x+H;
}
}
___________________________________________________
помогите бедному студенту..не вылетит с универа)

 av baat

 23.11.2010, 17:36

DUO Z6, что код, что текст не на русском...
Цитата
{
float R(int x)
float x,a;
int k;
S=0
a=sqrt(x)/6;

я бы написал
Код
float R(int x, int n) {
float a,S;
int k;
S=0;
a=sqrt(x)/6;

Цитата
void . Button1Click )
{
int n
float S;
x=StrToFloat(Edit1->Text);
n=StrToInt(Edit2->Text);
S=R(x);

вообще бред
может надо
Код
void Button1.Click() {
int n,x;
float S;
x=StrToFloat(Edit1->Text);
n=StrToInt(Edit2->Text);
S=R(x,n);


Цитата
for(k=1;k<=n;k++){S=S+a;a=sqrt(k+1)/sqrt(k)*(k+3)*a}

может в конце точка с запятой
Код
a=sqrt(k+1)/sqrt(k)*(k+3)*a;
нужна?

 av IlluminatI

 23.11.2010, 20:11

DUO Z6,
а где main, а где #include ? и чёто на плюсы крайне не похоже...

 av baat

 23.11.2010, 20:31

IlluminatI, он куски кода выложил...
и в с++ с формой, уже не инклюде а юсинг... там оно само это добро пишет... в студии тока проджект форм апликэйшен выбираешь и усё... сори за мой инглишкий... laugh.gif

 av Ant-ON

 24.11.2010, 20:48

ммм...
Мне казалось, что только в C# (си шарп) юсинг используется, а в с++ так и есть инклуды...

 av baat

 25.11.2010, 16:24

Ant-ON,
а мне казалось, что я в универе на с++ 48 лаб только сдал, а на с# 29...
а сколько ещё не себе писал...
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
инклуды тоже можно, но по дефолту юсинги пишет)
если на то пошло, надо указывать программу, в/для которой код пишется...

 av Ant-ON

 25.11.2010, 17:00

Цитата(baat @ 25.11.2010, 21:24) *

Ant-ON,
а мне казалось, что я в универе на с++ 48 лаб только сдал, а на с# 29...
а сколько ещё не себе писал...

...

инклуды тоже можно, но по дефолту юсинги пишет)
если на то пошло, надо указывать программу, в/для которой код пишется...


Зачем уж так подробно))
Я просто не писал в студии приложения для винды оконные))
Пробовал когда-то что-то написать для PPC на С++ с графическим интерфейсом (Visual C++, но старенький), там все инклуды были...

И есть такое ощущение, что эти юсинги появились с переходом студии на dotNET... Хотя я могу как обычно ошибаться...

ps Я все лабы в консольном си пишу... И до окононых наверное и не дойду...

 av baat

 25.11.2010, 17:26

Ant-ON,
а ты уверен в консоле будет форма с Edit1, Edit2, Edit3 и Button1, чтот сомнительно))) хотя кто знает, на чём он кодит, могу и я ошибаться... я лишь о том что среда сама инклюды и юсинки может расставлять...
да, консоль... я бы сам с удовольствием писал под консоль(( дык не разрешают, приходиться юзать тупую студию вместо привычной, быстрой и удобной dev-cpp... надо им формы, графики, диаграммы, анимация и прочая лабуда...

 av Ant-ON

 25.11.2010, 17:37

Цитата(baat @ 25.11.2010, 22:26) *

Ant-ON,
а ты уверен в консоле будет форма с Edit1, Edit2, Edit3 и Button1, чтот сомнительно))) хотя кто знает, на чём он кодит, могу и я ошибаться... я лишь о том что среда сама инклюды и юсинки может расставлять...
да, консоль... я бы сам с удовольствием писал под консоль(( дык не разрешают, приходиться юзать тупую студию вместо привычной, быстрой и удобной dev-cpp... надо им формы, графики, диаграммы, анимация и прочая лабуда...


Да, dev-cpp это вешь. Весит 6 метров и приличный функционал)
Ну я не на программиста учусь, по этому от меня таких красивостей не требуют. Железячная специальность, есть железнячная специальность...

 av W.G. Gates III

 17.7.2011, 16:29

программеры подскажите плиз.
при нажатии кнопки, динамически создаются метки. и им присваиваются имена Label+n, где n - номер от 0 до 10.
так вот, как сделать так что бы при повторном нажатии кнопки проверялось наличие уже созданных меток с такими именами и досоздание тех которых не хватает (n может изменяться как в таком же диапазоне, так и в другом).
сейчас при повторном нажатии программа мне сообщает что объект с таким именем уже есть.

 av Fenja

 17.7.2011, 17:44

Не понял толком суть задачи, но, при нажатии повторном нажатии кнопки у тебя имеется уже созданные объекты и известен номер n, ты проверяешь, если уже есть Label+n, то значит объект есть, проверяешь Label+n+1 на наличие, и так до конца диапазона.

З.Ы. Метод конечно не очень smile.gif
З.З.Ы. Если не так понял - сильно не пинать ph34r.gif

 av kai...

 17.7.2011, 17:47

я бы bool массив создал и не парился
Label есть- n-ный элемент массива положителен.

 av IlluminatI

 17.7.2011, 23:13

а это массив лейблов?
ну создай список лейблов вместо массива и удаляй\добавляй чё хошь...

Добавлено позже (18.7.2011, 2:15):
Код
for( int i = 0; i < 10; i++ )
if( Label+i == null ) // create label

ну чёто как-то так

 av W.G. Gates III

 7.8.2011, 10:03

помогите с потоками разобраться smile.gif
есть программа в которой создаю дополнительно два потока
Код
TForm1 *Form1;
MyTime *Thread1;
MyCikl *Thread2;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//создаем поток при нажатии на кнопку
    Thread2 = new MyCikl(false);
    Thread2->FreeOnTerminate = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//создаем поток при создании формы
    Thread1 = new MyTime(false);
    Thread1->FreeOnTerminate = true;
}

первый поток выводит текущее время
Код
void __fastcall MyTime::Execute()
{
    //---- Place thread code here ----
    do
    {
        Synchronize(&NewCaptions);
    }
    while (!Terminated);

}
//---------------------------------------------------------------------------

void __fastcall MyTime::NewCaptions()
{
//выводим текущее время
Form1->Label1->Caption = DateTimeToStr(Now());
}

второй долго гоняет какой то цикл
Код
void __fastcall MyCikl::Execute()
{
    //---- Place thread code here ----
    Synchronize(&ProgressBar);
}
//---------------------------------------------------------------------------
void __fastcall MyCikl::ProgressBar()
{
//долгий цикл
int a=0, b=0;
do
{
    do
    {
        b++;
    }
    while (b<65535);
    b=0;
    a++;
    Form1->ProgressBar1->Position = a;
}
while (a<65535);
}

все хорошо, поток со временем начинает работать при загрузке формы и выводит время в метку. когда я запускаю нажатием кнопки поток с циклом, то время замирает. ставил даже приоритет TimeCritical. время все равно стоит. почему так и как это можно исправить?

 av W.G. Gates III

 10.8.2011, 14:05

хм, интересно.
Код
    Application->ProcessMessages();
    Sleep(10);

если добавить такой код, то оба потока работают нормально, форма не зависает. правда это увеличивает время цикла во много раз smile.gif но вот что странно. я не могу прервать поток с циклом
Код
Thread2->Terminate();

и соответственно закрыть форму.
подскажет кто нибудь, как побороть?

 av W.G. Gates III

 11.8.2011, 15:27

приколько. объявил глобальную переменную и при OnClose формы устанавливаю ее в true. а в цикле проверяю если true, то выхожу из функции через return. правда не знаю на сколько это корректно.

  Dark Beat

 11.8.2011, 22:32

Цитата(W.G. Gates III @ Вчера, 18:27)
* глобальную переменную

Страуструп негодует...

 av W.G. Gates III

 14.8.2011, 7:11

Страуструп негодует...
да пусть негодует smile.gif главное было найти способ прервать поток, а не место где объявить переменную. а вообще, да, глобальные - не хорошо.

таймер кому нибудь нужен?
Нажмите для просмотра прикрепленного файла
жду критики и предложений smile.gif
ПС: там есть один очень серьезный косяк. если вы нагрузите свой процессор так что он перестанет выделять время моему таймеру, то таймер остановится. Исправление выпущу с сервиспаком smile.gif

 av igoripp

 14.8.2011, 8:20

W.G. Gates III, сделай пожалуйста цифры поярче)

 av W.G. Gates III

 14.8.2011, 8:35

поярче? а какого цвета? можно попробовать фон убрать.

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

вот так наверно получше
Нажмите для просмотра прикрепленного файла
Страницы: 1, 2

Полная версия:


MotoFan.ru (©) 2019    Слушать Radio