首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

请帮忙改写一下程序!该怎么处理

2012-02-11 
请帮忙改写一下程序!刚学习cppbulider,现在只会照着书编写界面,可以看懂意思,只是不会用,尤其是关于window

请帮忙改写一下程序!
刚学习cppbulider,现在只会照着书编写界面,可以看懂意思,只是不会用,尤其是关于windows程序的语法,所以在这里想请大家帮个忙,把我的程序改写成bulider语言。
原程序的意思就是输入汉字数字字母,输出时只滤出汉字,并在每个汉字后标注是第几个汉字;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

  struct HZ {
  char code[3];
  int count;
  } hz[100]; //最多100个汉字,可改
   
int ct=-1;  


int lookup(char *s)
{
  int i;
  if (ct!=-1)
  for(i=0;i<=ct;i++)
  {
  if(strcmp(hz[i].code,s)==0) 
  return i;
  }  
  return -1;
}

int main()
{
  char buff[256]; //最长输入256个字符
 
  int i,pos,Ncount=1;
  char tmpcode[3];
   
  gets(buff);
   
  tmpcode[2]=0;
  for(i=0;i<strlen(buff);i++)
  {
  if ((buff[i] & 0x80)==0x80) //判汉字 {
  tmpcode[0]=buff[i++];
  tmpcode[1]=buff[i];
   
  if ((pos=lookup(tmpcode))!=-1)
  {
  hz[pos].count++;
  }
  else
  {
  ct++;
  strcpy(hz[ct].code,tmpcode);
  hz[ct].count=1;
  }
  }
  }  
  //输出
  for(i=0;i<=ct;i++)
  {
//printf("%s/%d ",hz[i].code,hz[i].count);
  printf("%s/%d ",hz[i].code,Ncount++);
  } 
  printf("\n");
  return 0;
}
[code=C/C++][/code]


  我请大家帮忙的是:我做的界面是两个Memo,一个确定按扭;Memo1作为输入端,Memo2作为输出端。在Memo1中输入汉字数字子母混合句后,按确定按扭,在Memo2中输出汉字。
  或不用输入,直接在Memo1中给出汉字数字子母混合句,按确定按扭后,在Memo2中输出汉字。
  麻烦大家了,谢谢!!!

[解决办法]
新建一个窗体,在上面放两个Memo和一个Button
[code=C/C++][/code]
//---------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

struct HZ {
char code[3];
int count;
} hz[100]; //最多100个汉字,可改

int ct=-1;
int lookup(char *s)
{
int i;
if (ct!=-1)
for(i=0;i<=ct;i++)
{
if(strcmp(hz[i].code,s)==0)
return i;
}
return -1;
}

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

void __fastcall TForm1::Button1Click(TObject *Sender)
{
String Str0;
String buff; //最长输入256个字符
  
int i,pos,Ncount=1;
char tmpcode[3];

buff = Memo1->Lines->Text.Trim();

tmpcode[2]=0;
for(i=1;i<=buff.Length();i++)
{
if ((buff[i] & 0x80)==0x80) //判汉字
{
tmpcode[0]=buff[i++];
tmpcode[1]=buff[i];

if ((pos=lookup(tmpcode))!=-1)
{
hz[pos].count++;
}
else
{
ct++;
strcpy(hz[ct].code,tmpcode);
hz[ct].count=1;
}
}
}
//输出
Memo2->Lines->Clear();
for(i=0;i<=ct;i++)
{
Str0.sprintf("%s/%d ",hz[i].code,Ncount++);


Memo2->Lines->Add(Str0);
}
}
//---------------------------------------

热点排行