У меня проблема с моим кодом. Он начинается нормально, но при запросе ввода ввода от пользователя в начале он не будет перемещаться по инструкции if. Как я могу это исправить. Я пробовал кучи, чтобы обойти это и, в конце концов, получить его для чтения данных, но постоянно говорю, что он недействителен.Код не перемещается Прочитано
PROGRAM AT3 (input, output);
uses crt, math;
CONST
band6 = 90;
band5 = 80;
band4 = 70;
band3 = 60;
band2 = 50;
VAR
Studname : array of string;
studmark : array of integer;
flag : boolean;
studinfo : text;
input : string;
count : integer;
num : integer;
input2: integer;
highmark, lowmark : integer;
median, average : integer;
BEGIN
lowmark := 100;
highmark := 0;
median := 0;
ASSIGN (Studinfo, 'ExamResults.txt');
flag := false;
WRITELN('welcome to the Band generator.');
WRITELN('To enter student results, please enter the number of students. To see class statistics, please type zzz. To clear the screen type clear screen. And to exit the program, type exit');
While flag = false DO
ReadLN (input);
IF input = 'zzz' THEN
WHILE not EOF(Studinfo) DO
BEGIN
WRITELN(studinfo);
END;
IF input = 'exit' THEN
Flag := true;
IF input = 'clear screen' THEN
CLRSCR
ELSE
if input2 <> 0 THEN
num := input2
ELSE
WRITELN('Please enter a valid number.');
FOR count := 0 to num-1 DO
BEGIN
WRITELN('Please enter name of student', count);
read(studname[count]);
WRITE(studinfo, studname[count]);
WRITELN('Please enter mark of student', count, 'out of 100 (nearest whole number)');
read(studmark[count]); write(studinfo, studmark[count]);
IF studmark[count] >=band6 THEN
WRITELN(studinfo, 'band6');
IF studmark[count] >=band5 THEN
WRITELN(studinfo, 'band5');
IF studmark[count] >=band4 THEN
WRITELN(studinfo, 'band4');
IF studmark[count] >=band3 THEN
WRITELN(studinfo, 'band3');
IF studmark[count] >=band2 THEN
WRITELN(studinfo, 'band2');
IF studmark[count] <band2 THEN
WRITELN(studinfo, 'band1');
IF studmark[count] >= highmark THEN
highmark := studmark[count];
IF studmark[count] <= lowmark THEN
lowmark := studmark[count];
END;
median := highmark MOD 2;
CLOSE(studinfo);
END.
«он не будет двигаться на, если заявление» Какой 'if' заявление вы имеете в виду именно? Кстати, есть еще несколько проблем с вашим кодом, например. ваш «Assign (Studinfo,« ExamResults.txt »)» должен немедленно следовать «Rewrite (Studinfo)». Кроме того, какую версию Pascal вы используете? – MartynA
Хммм ... этот код выглядит странно похожим на код, написанный пользователем ** LeCarloVC ** (а затем удаленный снова), вчера. У него также были те же проблемы и эта вещь 'if mark/band'. Также используются ключевые слова в верхнем регистре (большую часть времени) и даже этот '' zzz'' = конец идеи программы. –
Только отступы не определяют блоки в Паскале. Вам нужны 'begin' и' end' для блоков с несколькими операторами. – lurker