structure

时间:2008-05-09 19:07:18   来源:论坛整理  作者:  编辑:chinaitzhe
本人初学c ,碰到问题,还请各位前辈多多指点 谢谢

附件里面有需要我编的程序


简单说下 就是写个程序 先输入你要输入多少人的信息 然后建立相应数目的struct

然后将这些信息存到struct的Array里面

问题出现建立相应数目的struct这里

C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





#include <vcl.h>

#pragma hdrstop



#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;



struct pro

{

 AnsiString name;

 AnsiString topic;

 int number;

 int fee;

 };





 int x;

 pro *array;



 void build(pro arr[],int &x)

 {

  x=Form1->Edit1->Text.ToInt();

  arr=new pro[x];

 }



 void add(pro arr[],int x)

 {



     //ShowMessage( arr[0].name);

    for (int i=0; i <=x; i  )

    {

        arr[i].name=Form1->Edit3->Text;

        arr[i].number=Form1->Edit4->Text.ToInt();

        arr[i].topic=Form1->Edit5->Text;

        arr[i].fee=Form1->Edit6->Text.ToInt();

    }

 }

 void display(pro array[],int x)

 {

   for (int i=0; i < 1; i  )

    {

        Form1->Memo1->Lines->Add(

         array[i].name AnsiString ('/')

         array[i].number AnsiString ('/')

         array[i].topic AnsiString ('/')

         array[i].fee);



    }

 }

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

__fastcall TForm1::TForm1(TComponent* Owner)

    : TForm(Owner)

{

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{

  //build(array,x);

}

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







void __fastcall TForm1::Button2Click(TObject *Sender)

{

  add(array,x);

}

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



void __fastcall TForm1::Button3Click(TObject *Sender)

{

  display(array,x);

}




不知道我的描述是否清楚 问题应该就是在建立array这里 白死不得其解 还请个位前辈指点 谢谢

网友回复:问题应该就在这里
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/



 void build(pro arr[],int &x)

 {

  x=Form1->Edit1->Text.ToInt();

  arr=new pro[x];

 }





该如何解决?
网友回复:Form1->Edit1->Text.ToInt();

你窗体上有没有TEdit 类的控件呢?
网友回复:参数 : pro arr[],这样不行的。
网友回复:void build(pro *&arr,int &x);
网友回复:
void build(pro *&arr,int &x)//注重此处改动
{
x=Form1->Edit1->Text.ToInt();
arr = new pro[x];
}

void add(pro *arr,int x)//注重参数改为指针
{
for(int i=0;i <x;i )//注重i <=x 改为 i <x,否则会越界
{
arr[i].name = Form1->Edit3->Text;
arr[i].number = Form1->Edit4->Text.ToInt();
arr[i].topic = Form1->Edit5->Text;
arr[i].fee = Form1->Edit6->Text.ToInt();
}
}

void display(pro *array,int x)//参数改为指针
{
for(int i=0;i <1;i )//这里看不出你想干什么,为什么i <1而不是i <x
{
Form1->Memo1->Lines->Add(array[i].name AnsiString ('/')
array[i].number AnsiString ('/')
array[i].topic AnsiString ('/')
array[i].fee);
}
}

网友回复:非常感谢 星光半月 问题解决 同时也感谢3楼的朋友

之前的代码还有个逻辑上的问题

现在附上正确代码(还没让老师检查,不过个人认为没什么打的问题了) 希望能对和我一样的菜菜有所帮助

C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





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



#include <vcl.h>

#pragma hdrstop



#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;



struct pro

{

 AnsiString name;

 AnsiString topic;

 int number;

 int fee;

 };





 int x;

 int y;

 pro *array;



 void build(pro *&arr,int &x)

 {

  x=Form1->Edit1->Text.ToInt();

  arr=new pro[x];

  Form1->Edit2->Text=0;

 }



 void add()

 {



        array[y].name=Form1->Edit3->Text;

        array[y].number=Form1->Edit4->Text.ToInt();

        array[y].topic=Form1->Edit5->Text;

        array[y].fee=Form1->Edit6->Text.ToInt();

        y  ;





        Form1->Edit2->Text=y;

        Form1->Edit3->Clear();

        Form1->Edit4->Clear();

        Form1->Edit5->Clear();

        Form1->Edit6->Clear();

 }

 void display()

 {

   Form1->Memo1->Clear();

   for (int i=0; i < y; i  )

    {



         Form1->Memo1->Lines->Add(

         array[i].name AnsiString ('/')

         array[i].number AnsiString ('/')

         array[i].topic AnsiString ('/')

         array[i].fee);

    }



 }



 void search()

 {

  AnsiString sear=Form1->Edit8->Text;

  for (int i = 0; i < x; i  )

    {

     if (array[i].topic==sear)

     {

        Form1->Memo2->Lines->Add(

        array[i].name AnsiString ('/')

         array[i].number AnsiString ('/')

         array[i].topic AnsiString ('/')

         array[i].fee);

     }

    }

 }

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

__fastcall TForm1::TForm1(TComponent* Owner)

    : TForm(Owner)

{

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{

  build(array,x);

}

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







void __fastcall TForm1::Button2Click(TObject *Sender)

{

  add();

}

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



void __fastcall TForm1::Button3Click(TObject *Sender)

{

  display();

}

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



void __fastcall TForm1::Button6Click(TObject *Sender)

{

  search ();

}

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





关键字:structure,

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面