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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2019, 11:32   #11
Dm!User
Пользователь
 
Регистрация: 20.10.2018
Сообщений: 20
По умолчанию

Изменил код
Код:
#include <vcl.h>
#include <cmath>
#pragma hdrstop

#include "Unit1.h"
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
#include <iostream>

TForm1 *Form1;

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}

float f (float x,float a)
{

if ( x > 1 )
{
return log(a*a)-4*x*x;
}
else
{
return  sin(x*x*x)-a;
}
}


void __fastcall TForm1::Button3Click(TObject *Sender)
{
Close();
}


void __fastcall TForm1::Button2Click(TObject *Sender)
{
Edit1->Clear();
Edit2->Clear();
for(int i=1;i<=20;i++)
for (int j=1;j<=20;j++)
{
StringGrid1->Cols[1]-> Clear();
StringGrid2->Cols[1]-> Clear();
StringGrid2->Rows[j]-> Clear();
}
}

void __fastcall TForm1::CSpinEdit1Change(TObject *Sender)
{
  StringGrid2->ColCount = CSpinEdit1->Value+1;
}
void __fastcall TForm1::Edit1KeyPress (TObject *Sender, char &Key)
{
if (isdigit(Key) || Key == VK_BACK || Key == '.' || Key == '-') {return;}
else Key=0;
}




void __fastcall TForm1::CSpinEdit2Change(TObject *Sender)
{
StringGrid1->RowCount = CSpinEdit2->Value+1;
StringGrid2->RowCount = CSpinEdit2->Value+1;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
float b=1;
//byte errorCode =0;
//byte errorHappened= 0;
float A[20];
float X[20];
float An=StrToFloat (Edit1->Text);
float Da=StrToInt (Edit2->Text);
int M=StrToInt (CSpinEdit1->Text);
int N=StrToInt (CSpinEdit2->Text);
DecimalSeparator = '.';
for(int i= 0;i<M;i++)
{
for(int j= 0;j<N;j++)
{
A[i+1]= An+i*Da;
X[j+1]= StrToFloat(StringGrid1->Cells[1][j+1]);


for(int l=0;l<M;l++)
{
for(int k=0;k<N;k++)
{
StringGrid2->Cells[l+1][k+1] = f(X[k],A[l]);   //âûâîä ôîðìóëû â ñòðîêè
}
}

}
}
}

//---------------------------------------------------------------------------
Dm!User вне форума Ответить с цитированием
Старый 11.03.2019, 11:36   #12
Dm!User
Пользователь
 
Регистрация: 20.10.2018
Сообщений: 20
По умолчанию

Вложил окно программы
Изображения
Тип файла: png Снимок.PNG (53.5 Кб, 128 просмотров)
Dm!User вне форума Ответить с цитированием
Старый 11.03.2019, 11:38   #13
Dm!User
Пользователь
 
Регистрация: 20.10.2018
Сообщений: 20
По умолчанию

Builder нормально работает под Windows 7,10 ?
Dm!User вне форума Ответить с цитированием
Старый 11.03.2019, 11:44   #14
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,770
По умолчанию

Все нормально работает. У вас не заполняются A[0] и X[0], но используются.
p51x вне форума Ответить с цитированием
Старый 11.03.2019, 11:59   #15
Dm!User
Пользователь
 
Регистрация: 20.10.2018
Сообщений: 20
По умолчанию

имеете ввиду
Цитата:
A[i+1]= An+i*Da;
X[j+1]= StrToFloat(StringGrid1->Cells[1][j+1]);
?.

Изменил на
Цитата:
A[i]= An+i*Da;
X[j]= StrToFloat(StringGrid1->Cells[1][j+1]);
Ошибка осталась
Dm!User вне форума Ответить с цитированием
Старый 11.03.2019, 14:43   #16
Dm!User
Пользователь
 
Регистрация: 20.10.2018
Сообщений: 20
По умолчанию

Правильно ли я объявил функцию?.

Кто может сказать, откуда в значении А появляется 0. А не в его индексе.
Dm!User вне форума Ответить с цитированием
Старый 11.03.2019, 15:03   #17
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,770
По умолчанию

1. Посмотрите как объявлен логарифм в вашем билдере. Может там он от инта, а для флоата нужен logf
2. В функции gишете
Код:
if (a == 0) return 0;
Ставите точку останова на ретурн и запускаете под отладкой. Потом по стеку вызовов и смотрите, где/кто вызыва и какие данные лежат.
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работает не правильно - C++ Александр121 Общие вопросы C/C++ 11 27.03.2018 02:13
Не правильно работает HaKeRR Общие вопросы C/C++ 1 02.01.2015 17:10
Не правильно работает код Sylar9 Общие вопросы C/C++ 8 05.04.2012 12:11
Не работает правильно!!! Vitalik1 Помощь студентам 2 01.11.2011 23:11
Не правильно (или правильно?) работает позиционирование в WebKit mutabor HTML и CSS 5 09.12.2010 09:54