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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2008, 17:45   #1
Эдуард
Пользователь
 
Регистрация: 18.02.2008
Сообщений: 15
По умолчанию Не могу найти ошибку!

Не могу найти ошибку,поможите!

Код:
void print()
Label1->Caption="Нет корней";

void __fastcall TForm1::Button1Click(TObject *Sender)
{
double a,b,c;
	a=Edit1->Text.ToDouble();
	b=Edit2->Text.ToDouble();
	c=Edit3->Text.ToDouble();
	int d=b*b+4*a*c;
	if (d<0) print()

	double x1=(-b+sqrt(d))/(2*a);
	double x2=(-b-sqrt(d))/(2*a);
	Label1->Caption=String(x1)+"   ;\r\n   "+String(x2);

}
Ошибка здесь void print()
Label1->Caption="Нет корней"; но в чем именно????Я хотел создать функцию вывода результата(это нужно для более серьезной проги),но похоже так делать нельзя,а как же можно????


И еще один вопрос.Мне необходимо чтобы результат выводился так:
X1=5

Label1->Caption="x1=" тут моя переменная...
Опишите синтаксис пожалуйста!!!

moderator: Используйте тег <CODE>

Последний раз редактировалось merax; 26.02.2008 в 18:11.
Эдуард вне форума Ответить с цитированием
Старый 26.02.2008, 18:34   #2
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

1)

Код:
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

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


void print(TLabel *lb)
{
lb->Caption="Нет корней";
}

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
 double a,b,c;

    a=Edit1->Text.ToDouble();
    b=Edit2->Text.ToDouble();
    c=Edit3->Text.ToDouble();

    int d=b*b+4*a*c;

    if (d<0)
    {
     print(Label1);
    }
    double x1=(-b+sqrt(d))/(2*a);
    double x2=(-b-sqrt(d))/(2*a);
    Label1->Caption=String(x1)+"   ;\r\n   "+String(x2);

}
2.

Код:
Label1->Caption=" x1= " + IntToStr(твоя переменная);
// Если целое то IntToStr если с плавающей точкой то FloatToStr

3) Пишите код красиво

Последний раз редактировалось merax; 26.02.2008 в 18:53.
merax вне форума Ответить с цитированием
Старый 26.02.2008, 21:52   #3
Эдуард
Пользователь
 
Регистрация: 18.02.2008
Сообщений: 15
По умолчанию

Спасибо,большое!
Эдуард вне форума Ответить с цитированием
Старый 27.02.2008, 14:55   #4
Эдуард
Пользователь
 
Регистрация: 18.02.2008
Сообщений: 15
По умолчанию

Код:
#include <vcl.h>
#include <math.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int x1,x2,a,b,c,d;




//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
 void print(TLabel*lb)
 {
 lb->Caption="X1="+String(x1)+ " \r\n "+"X2=" +String(x2);
}

void raschet()
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
print(Label1);

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

void __fastcall TForm1::Button1Click(TObject *Sender)
{

	a=Edit1->Text.ToInt();
	b=Edit2->Text.ToInt();
	c=Edit3->Text.ToInt();
        d=b*b+4*a*c;
	if (d<0)
        {
        Label1->Caption="No solves";
         }
        raschet();
       return;

}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
Эта программа,как пример, моей проблемы.Почему если вложить в функцию raschet() функцию print(),то значения (решение) не выводится.Если можно,то пакажите на моем примере как правильно должно быть!!!
Эдуард вне форума Ответить с цитированием
Старый 27.02.2008, 15:08   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Пототму, что Label1, так же, как и lb и ищё что-там - это объекты класса TForm1, а функции print() и raschet() объявлены глобальными, соответственно они и пытаются найти такие глобальные переменные и потом что значит, "не выводится" должно даже "не компилироваться". Надо передавать в print() и raschet() указатель на переменную класса, с которой в данный момент происходит работа, а ещелучше сделать их членами класса, здесь, видимо, TForm1.
------------
P.S. вот в print() передается указатель на TLabel, а raschet() о нём знать не знает.

Последний раз редактировалось B_N; 27.02.2008 в 15:10.
B_N вне форума Ответить с цитированием
Старый 27.02.2008, 15:44   #6
Эдуард
Пользователь
 
Регистрация: 18.02.2008
Сообщений: 15
По умолчанию

Блин,че то я в танке!Если можно разжуй,как сделать функции print() и raschet() членами класса TForm1.
Эдуард вне форума Ответить с цитированием
Старый 27.02.2008, 15:59   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Код:
void TForm1::print(TLabel*lb)
{ 
	lb->Caption="X1="+String(x1)+ " \r\n "+"X2=" +String(x2); 
}  

void TForm1::raschet()
{ 
	x1=(-b+sqrt(d))/(2*a); 
	x2=(-b-sqrt(d))/(2*a); 
	print(Label1); 
}
И в заголовке Unit1.h объявить raschet() и print(TLabel*) внутри класса TForm1.
B_N вне форума Ответить с цитированием
Старый 27.02.2008, 16:34   #8
Эдуард
Пользователь
 
Регистрация: 18.02.2008
Сообщений: 15
По умолчанию

Спасибо,друг B_N за помощь!!!
Эдуард вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите! Не могу обнаружить ошибку pilevas Помощь студентам 1 23.06.2008 10:48
Не могу выявить ошибку Cyn4uk Общие вопросы Delphi 14 14.01.2008 13:12
формирование матрицы (задание выполненно не могу найти сваю ошибку) КиношкА Помощь студентам 7 11.01.2008 03:50
Паскаль. Не могу найти ошибку. Нужна помощь! Nexx Помощь студентам 10 06.12.2007 19:12