请帮忙改写一下程序!
刚学习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);
}
}
//---------------------------------------