2016-04-18 8 views
-1

Pascal:Ошибка Pascal:; ожидаемый, но. найдено

; expected but . found

При изменении моего кода, чтобы исправить это, тогда не отображается ответ. Не вижу, что я сделал неправильно. (Это часть более крупной программы, следовательно, блок в конце и процедура). Если вы знаете, как исправить этот или более простой способ написать это, я был бы признателен. Однако он должен оставаться с функцией.

procedure temperature; 
    function Sum(var F,M:integer):integer; 
    var 
    c:integer; 
    begin 
    M:=(F-32); 
    c:=M*(5 div 9); 
    writeln('In Centigrade that is ',c); 
    writeln('Give me the temperature in Fahrenheit to convert to Centigrade'); 
    readln(F); 
    writeln(sum); 
    readln; 
    end; 
    procedure finished; 
    begin 
    end; 
begin 

    initialise; 
    repeat 
    displaymenu(choice); 
    case choice of 
     1: throwdice; 
     2: heightweight; 
     3: textwords; 
     4: temperature; 
     0: finished; 
    end; 
    until choice=0; 
    readln; 
end. 
+2

Научитесь правильно форматировать код, и вы будете иметь возможность увидеть, где начинаются и заканчиваются строки, и может легко определить недостающие. –

+0

Я принял ваш совет и отформатировал его должным образом, но никаких недостающих ни начинается, ни заканчивается. Я внимательно посмотрел. – Dorthvlader

+1

Ваш код беспорядок. У вас есть две локальные функции (функции внутри функции) и отсутствуют «end;» в конце вашей функции. Вам также не хватает «begin», который запускает выполнение вашей программы, и декларацию 'program' вверху и весь корпус вашей программы (который находится между' begin' и 'end.', следуя за всеми вашими реализациями функций , и который вызывает эти функции). –

ответ

1

Если это паскаль код, то ваши программы должны начинаться с:

program MyProgram; 

и заканчиваются:

end. 

Общая форма определения процедуры выглядит следующим образом:

procedure name(argument(s): type1, argument(s): type 2, ...); 
    < local declarations > 
begin 
    < procedure body > 
end; 

Итак, каждый про cedure должен иметь в конце ключевого слова: end;
В конце процедуры temperature является: end. и компилятор говорит, что ожидать ; но . нашли, потому что end. должны быть только в конце программы, но не процедуры.

0

Ваш условный цикл повторения не имеет ни начала, ни конца. Если некоторое время, если, повторить-до, try-else и т. Д., В нем будет более одной строки кода, вы должны использовать начало и конец. (конец, а не конец).

Итак, отформатирован, ваш код должен быть:

procedure temperature; 
    function Sum(var F,M:integer):integer; 
    var 
    c:integer; 
    begin 
    readln(F);{This line needs to be first to get F to use in the calculation. This program is all wrong. Read from what? You must define the file you are reading from - ReadLn(FileName,VariableToReadTo)} 
    M:=(F-32);{Make sure you are declaring these somewhere.} 
    C:=M*(5 div 9); 
    writeln('In Centigrade that is '+IntToStr(C));{Need to define file to WriteTo. You also must Append the file to write to it.} 
    writeln('Give me the temperature in Fahrenheit to convert to Centigrade.');{Need to define file to WriteTo. You also must Append the file to write to it.} 

    writeln(sum);{Need to define file to WriteTo - WriteLn(FileName, VariableToWrite). You also must Append the file to write to it.} 
    readln;{This line does not have any arguments. What is this supposed to do? Is your program finished?} 
    end; 
    procedure finished;{Empty procedure} 
    begin 
    end; 
begin 
    initialise; 
    repeat 
    begin{Didn't have this. Need begin and end because of multiple lines.} 
     displaymenu(choice); 
     case choice of 
     1: throwdice; 
     2: heightweight; 
     3: textwords; 
     4: temperature; 
     0: finished; 
    end; 
    until choice=0; 
    readln;{What does this do??} 
end.a{Characters outside of code end.} 
Смежные вопросы