2011-11-23 44 views
1

我知道,这种语言已经在我们国家-.- 我得到的数据文件,它看起来像一个几年前去世了,但仍需要在大多数学校:帕斯卡尔分割线转化为现实和字符串

  • 行数
  • 名字姓(实型数位)(另一种实型数位)

对于例如

  • 小子日光浴5.66 55.4
  • 巴特·辛普森55.7 45.4

,我需要创建的结果文件,它看起来像这样:

  • 名姓(此前给出真实类型数字相乘)
  • 合计

例如,

  • 小子日光浴313.56
  • 巴特·辛普森2528.78
  • 总计:2842.34

我被困在试图分裂行成字符串和真实的,即使我在书里已经给在实施例中的所有数据是在单独的线:

  • 字符串
  • d igit
  • 字符串
  • 位数

我无法在网络上找到任何东西,希望你能帮助我。先谢谢你。

+0

帕斯卡的现代化身是德尔福(在Windows和OS-X )和所有其他平台上的Lazarus。 – Johan

回答

2

这应该让你开始 - 我得到尽可能读取文件,分割线,并转换字符串实数:

 
Program Test; 

var 
    fileVar: Text; 
    l: string[81]; 
    inputFilename: string[14]; 
    lCount: Integer; 
    i: Integer; 
    code: Integer; 

    spacePos: Integer; 

    firstName: string[100]; 
    secondName: string[100]; 

    num1: real; 
    num2: real; 
    product: real; 

    s: string[100]; 

begin 
    inputFilename := 'input.txt'; 
    Assign(fileVar, inputFilename); 
    Reset(fileVar); 

    Readln(fileVar, l); 
    Val(l, lCount); 

    Writeln('l count=', lCount); 

    for i := 1 to lCount do 
    begin 
     Readln(fileVar, l); 
     spacePos := Pos(' ', l); 
     firstName := Copy(l, 0, spacePos); 
     Delete(l, 1, spacePos); 

     spacePos := Pos(' ', l); 
     secondName := Copy(l, 0, spacePos); 
     Delete(l, 1, spacePos); 

     spacePos := Pos(' ', l); 
     s := Copy(l, 0, spacePos - 1); 
     Val(s, num1, code); 
     Delete(l, 1, spacePos); 

     Val(l, num2, code); 

     WriteLn(firstName); 
     Writeln(secondName); 
     Writeln(num1); 
     Writeln(num2); 
    end; 

    Close(fileVar); 
end. 


+0

Omg,非常感谢!它完全有效!你是一个救世主!谢谢,非常感谢! – SinSoul