Паскаль расщепляет линию на реал и строки - PullRequest
1 голос
/ 23 ноября 2011

Я знаю, что этот язык умер несколько лет назад, но все еще требуется в большинстве школ нашей страны. Я получил файл с данными, который выглядит следующим образом:

  • Количестволинии
  • Имя Фамилия (цифра действительного типа) (другая цифра действительного типа)

Например,

  • 2
  • Brat Sunbather 5.6655,4
  • Барт Симпсон 55,7 45,4

И мне нужно создать файл результатов, который выглядит следующим образом:

  • Имя Фамилия (Ранее заданные цифры действительного типаумножено)
  • Итого

Например,

  • Братский Sunbather 313,56
  • Барт Симпсон 2528,78
  • Всего: 2842,34

Я застрял в попытке разбить строку на строку и реальную, даже в книге, которую я привел в примерах, все данные в отдельной строке:

  • Строка
  • Цифра
  • Строка
  • Цифра

Я не могу найти что-либо в сети и надеюсь, что вы мне поможете.Заранее спасибо.

1 Ответ

2 голосов
/ 23 ноября 2011

Это должно помочь вам начать - я дошел до того, что прочитал файл, разбил строку и преобразовал строки в вещественные числа:

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.


...