zoukankan      html  css  js  c++  java
  • 文字倒序输出(集合)

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type
      TForm1 = class(TForm)
        btn1: TButton;
        dlgOpen1: TOpenDialog;
        mmo1: TMemo;
        btn2: TButton;
        procedure btn1Click(Sender: TObject);
        procedure btn2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation
    var
      f:Text;
    //type
    //  Tint=0..9;
    //  T1=set of Tint;
    //  Tc1='a'..'z';        //一开始想用集合,这样做不对
    //  T2= set of Tc1;
    //  Tc2='A'..'Z';
    //  T3=set of Tc2;
    //  Tf=(byte(,),byte(.),byte(?),byte(!),byte(/));
    //  Tf=(byte(','),byte('.'),byte('?'),byte('!'),byte('/'));
    //  t4:set of Tf;

    {$R *.dfm}

    procedure TForm1.btn1Click(Sender: TObject);
    begin
      if dlgOpen1.Execute then
      AssignFile(f,dlgOpen1.FileName);
      Reset(f);
    end;

    procedure TForm1.btn2Click(Sender: TObject);
    var
      s1,s2:string;
      n,i:Integer;
      fg:Boolean;
    //  t11:T1;
    //  t22:T2;
    //  t33:T3;
    begin
      Readln(f,s1);
      n:=Length(s1);
      for i:=n downto 0 do
      begin
    //    s2:=s2+s1[i];
        if s1[i] in ['0'..'9','A'..'Z','a'..'z']  then   //直接用集合
          s2:=s2+s1[i]
        else begin
          if fg=False then begin
            s2:=s2+s1[i-1]+s1[i];
            fg:=True;
          end else
          fg:=False;
        end;
      end;
      mmo1.Lines.Add(s2);
    end;

    end.

    {
         问题: 在Delphi中,如何将集合数据类型中的某元素取出来?如set1:=[1,2,3,4,5,6]中的第三项3取出放入一变量中。
      
         Delphi的集合不同于数组或者List或者VB的Collection,它的元素是没有顺序,所以不存在某个集合中的第3项的说法。
         你只能用in判断某个元素是否在Delphi的集合中。如
         if 3 in set1 then
         ...
         else
         ...

    例如 防止输入非整数字符
    procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
    begin
       if not (key in [’0’..’9’, #8]) then //防止输入非整数字符
         key := #0;
    end;
    }
    ///////////////////////////////////////////////////////////////
    {1、子界类型:定义了某种类型的取值范围 类型!!!
        type
          ten=1..10;
          OverHundred=100..1000;
          Uppercase='A'..'Z';
      只需基类的两个常数,!!!有序!!!会产生另一个有序类型!!!ten,OverHundred,Uppercase。
     
      定义一个子界变量:
      var UpperLetter:UpperCase;
      begin
        UpperLetter:='F';对,'f'错。
     
      UpperLetter:UpperCase;
      Letter:Char

    2、枚举类型:有序!!!列出可能取的值,不是范围
       type
         Color=(Red,Yellow,Green,Cyan,Blue);
       序列中每个值对应一个序号,从0开始,用Ord(Red),返回0,得到序号。

    3、集合类型: 表示一组值,由集合所依据的有序类型定义。
       有序类型有(枚举类型,子界类型...)
       type
         Letter=set of UpperCase; Letter可能包括UpperCase的0个,1个,所有值。
       var
         Letter1,Letter2,Letter3:Letter;
       begin
         Letter1:=['A','B','C'];
         Letter2:=['K'];

    4、数组类型:
       type
         Day=array[1..31] of Integer;//字节类型值也可;
       多维:Year=array[jan..dec,1..31];“,”隔开

    5、记录类型:
       type
        Date = Record
         Year:Integer;
         Month:Byte;
         Date:Byte;
        end;}

  • 相关阅读:
    我的友情链接
    我的友情链接
    BUMO:超级节点共建接口
    OpenStack 对接 Ceph 环境可以创建卷但不能挂载卷的问题
    零知识证明: 抛砖引玉
    比特币原理
    区块链零知识证明:STARKs,Part-3:攻坚(下)
    什么是zkSNARKs:谜一般的“月亮数学”加密,Part-1
    什么是zkSNARKs:谜一般的“月亮数学”加密,Part-2
    STARKs, Part I: 多项式证明
  • 原文地址:https://www.cnblogs.com/760044827qq/p/3099178.html
Copyright © 2011-2022 走看看