将if语句转换为pascal中的case?

时间:2015-02-15 01:56:20

标签: pascal

我使用pascal,你可以将此代码语句转换为大小写吗?帕斯卡? 这是关于pascal的我的程序,if if to case of。

非常感谢

TYPE
        MHS = record
        nama1,nama2:string;
        ipk1,ipk2:longint;
        nim1,nim2:integer;
end;
var
        DataMhs : MHS;
Begin

    clrscr;
    write('Masukan Nama Mahasiswa 1 : ');
    readln(DataMhs.nama1);
    write('Masukan NIM Mahasiswa 1 : ');
    readln(DataMhs.nim1);
    write('Masukan IPK Mahasiswa 1 : ');
    readln(DataMhs.ipk1);

    write('Masukan Nama Mahasiswa 2 : ');
    readln(DataMhs.nama2);
    write('Masukan NIM Mahasiswa 2 : ');
    readln(DataMhs.nim2);
    write('Masukan IPK Mahasiswa 2 : ');
    readln(DataMhs.ipk2);

    if DataMhs.ipk1 > DataMhs.ipk2 then
        write('IPK ',DataMhs.nama1,'Lebih besar')
    else if DataMhs.ipk2 > DataMhs.ipk1 then
        write('IPK ',DataMhs.nama2,'Lebih besar')
    else
        write('IPK ',DataMhs.nama1,' dengan ',DataMhs.ipk2,' SAMA');

    readln;
end.

我不知道如何转换它,请帮忙。哈哈

2 个答案:

答案 0 :(得分:1)

如果您想让代码更好看,那么您可以使用 - >

with DataMhs do
 begin
      if ipk1 > ipk2 then write('IPK ',DataMhs.nama1,'Lebih besar');
      else if ipk1 < ipk2 then write('IPK ',DataMhs.nama2,'Lebih besar');
      else write('IPK ',DataMhs.nama1,' dengan ',DataMhs.ipk2,' SAMA');
 end; 

但我不认为案例

对此很有用。因为案例用于已知值,例如:

case a of
     1: Writeln(' Some code here') ;
     2: Writeln(' Some code here') ;
     3: Writeln(' Some code here') ;
     4: Writeln(' Some code here') ;

     else Writeln(' That is used for other values. ');
end;

案例不能用于此类问题。

答案 1 :(得分:0)

怀疑您的想法可能如下所示:

type
  TCompareResult = (cmpLeftGreater, cmpRightGreater, cmpEqual);

case CompareInts(DataMhs.ipk1, DataMhs.ipk2) of
  cmpLeftGreater:
    write('IPK ', DataMhs.nama1, 'Lebih besar');
  cmpRightGreater:
    write('IPK ', DataMhs.nama2, 'Lebih besar');
  else {cmpEqual}
    write('IPK ', DataMhs.nama1, ' dengan ', DataMhs.ipk2, ' SAMA');
end;

但是,您仍需要实现此CompareInts函数,并且仍需要使用原始代码中已有的相同条件结构:

function CompareInts(left, right: Integer): TCompareResult;
begin
  if left > right then
    Result := cmpLeftGreater
  else if right > left then
    Result := cmpRightGreater
  else
    Result := cmpEqual;
end;

因此,这个功能并没有给你带来太大的好处。