2015-03-27 1 views
-5

Мне была назначена программа для записи. вот инструкцииНеобходимо исправить этот код для моего назначения pascal

Решение проблем и программирование

  1. Страховые компании заинтересованы в том, что программное обеспечение будет лучше помогать своим клиентам на основе исследования, проведенного в NMTRO. Пробный запуск программного обеспечения должен быть реализован там, где до 30 клиентов могут посещаться в день.

Вы должны написать псевдокод или нарисовать блок-схему, которая будет принимать информацию клиента (Имя, Фамилия, Пол, модель автомобиля, категория автомобиля, страховая компания, TOC, является ли или нет устройства Противоугонного был установлен, Premium и стоимость автомобиля). Рассчитайте компенсационный платеж для каждого клиента на основании критериев калькуляции, указанных в задаче B раздела электронной таблицы.

В конце вы должны: a. Рассчитать количество застрахованных транспортных средств Полностью всеобъемлющий b. Найдите самую высокую стоимость автомобиля c. Рассчитать процент владельцев, установивших противоугонный механизм d. Подскажите пользователю имя клиента и найдите и отобразите информацию о клиенте, включая компенсационный платеж.

  1. Разработка и реализация таблицы трассировки, которая принимает данные для 6 членов (те же данные, что и электронная таблица). Таблица должна отслеживать стоимость автомобиля, TOC, Premium, установленную противоугонную систему и страховую выплату. Общая премия всех клиентов должна быть рассчитана

здесь код `

VAR 
    First_Name, Last_Name, Model, Insurance_company, stop: array[1..30] of string; 
    Compensation, V_O_C, P_O_A, A_O_C: array [1..30] of real; 
    Gender: array [1..30] of char; 
    T_O_C, Premium, X, Count, CountA, Highest, Category: array [1..30]of integer; 
    Antitheft_installed: array [1..30] of boolean; 

Begin 
    Count:=0; 
    CountA:=0; 
    Highest:=0; 
    FOR X = 1 to 30 DO 
    Repeat 
    Writeln ('Please enter First_Name'); 
    Readln (First_Name[X]); 
    Writeln ('Please enter Last_Name'); 
    Read Last_ Name [X] 
    Writeln ('Please enter Gender, M or F'); 
    Readln Gender[X] 
    Until "stop" 
    IF Gender<>M and Gender <>F then 
    Print "You can only enter M or F for Gender" 
    ENDIF 
Repeat 
Writeln "Please enter Model" 
Read Model[X] 
Writeln "Please Enter number corresponding with Category of car" 
Writeln "Please Enter 1 for LCR-70" 
Writeln "Please Enter 2 for LCR-71" 
Writeln "Please Enter 3 for LCR-72" 
Writeln "Please Enter 4 for LCR-73" 
Read Category[X] 
Until "stop" 
If category >=5 then 
Writeln "Please select one of the options above" 
ENDIF 
Repeat 
Writeln "Please enter 1 if Type Of Coverage is FC" 
Writeln "Please enter 2 if Type Of Coverage is TPO" 
Read TOC[X] 
Until "stop" 
IF TOC >=3 Then 
Writeln "Only 1 or 2 can be entered here" 
ENDIF 
Repeat 
Writeln "Please enter Antitheft installed Yes or No" 
Read Antitheft installed[X] 
IF Antitheft = "yes" then 
CountA =CountA+1 
P_O_A= CountA/Max * 100 
ENDIf 
Writeln "The percentage is" P_O_A[X] 
Writeln "Press 1 for BBC" 
Writeln "Press 2 for Nationwide" 
Writeln "Press 3 for IWCI" 
Writeln "Press 4 for Statefarm" 
Read Insurance company[X] 
IF Insurance_company =1 then 
Writeln "Your premium is $2700" 
ENDIF 
IF Insurance_company =2 then 
Writeln "Your premium is $3500" 
ENDIF 
IF Insurance_company =3 then 
Writeln "Your premium is $1675" 
ENDIF 
IF Insurance_company =4 then 
Writeln "Your premium is $1950" 
ENDIF 
IF insurance_company>= 5 then 
Writeln "Please choose one of the options above" 
ENDIF 
Read Premium 
Writeln "Please enter value of car" 
Read V_O_C[X] 
While TOC= " FC" Do 
Count=Count+1 
    ENDWhile 
    Writeln "The total number of vehicles fully comprehensively insured is" Count[X] 
    IF V_O_C > Highest then 
    Highest= V_O_C 

    Writeln "The Highest value of car is", Highest[X] 
    IF V_O_C <1 and TOC= "FC" then 
    Compensation= V_O_C * 0.5 Else 
    IF A_O_C >=2 and A_O_C <=4 and TOC= "FC" then 
    Compensation= V_O_C * 0.4 Else  
    IF A_O_C >=5 and A_O_C <=7 and TOC= "FC" then 
    Compensation= V_O_C * 0.3 Else 
    IF A_O_C >=8 and A_O_C <=10 and TPO= "FC" then 
    Compensation= A_O_C * 0.2 Else 
    IF A_O_C >10 and TOC= "FC" then 
    Compensation= V_O_C * 0.1 Else 
    Compensation= V_O_C * 0 
    Writeln "The Frist name of the customer is" First_Name[X] 
    Writeln "The Last name of the customer is" Last_Name[X] 
    Writeln "The customer Gender is" Gender[X] 
    Writeln "The model of car the customer own is" Model[X] 
    Writeln "The category of car customer own is" Category[X] 
    Writeln "The insurance company the customer is with is" Insurance_ Company[X] 
    Writeln "The type of coverage for customer is" TOC[X] 
    Writeln "The customer antitheft yes or no" Antitheft_ installed[X] 
    Writeln "The premium for customer is" Premium[X] 
    Writeln "The value of car for customer is" V_O_C[X] 
    Writeln "The customer compensation is" Compensation[X] 
    Writeln "Enter 11 to add a customer" 

end.`

я получаю эти ошибки

17/26 clunis.pas Error: Type mismatch 
17/27 clunis.pas 
Error: Incompatible types: got "Array[1..30] Of LONGINT" expected "LONGINT" 
19/13 clunis.pas 
Fatal: Syntax error, UNTIL expected but identifier LAST_ found 

ответ

4

Это не правильно:

FOR X = 1 to 30 DO 

Семантика для команды означает, что X в настоящее время присваивается значение 1, так что вы должны использовать вместо

For X := 1 to 30 do 

Это не правильно:

ReadLn Category[X] 

Считанные процедура, ее должны иметь свои параметры, ограниченные скобками.

ReadLn(Category[X]); 

Опять же, это не правильно:

Until "stop" 

Пока не ожидает, что логическое выражение (любое выражение, которое возвращает истину или ложь). Строка не является логическим выражением.

ENDIF 

Паскаль не является базовым. Команда if не заканчивается до конца.Что закончилось, это блок команд, запущенных BEGIN, поэтому в Pascal нет ENDIF, ENDCASE, ENDWHATEVER, только BEGIN и END.

END; 

Это не правильно:

Read Antitheft installed[X] 

Кроме погрешности не используя круглые скобки вокруг списков параметров процедур (как WriteLn и ReadLn являются процедуры от системного блока), вы пытаетесь использовать переменную с белым пространством внутри его имени, это не разрешено.

Это не правильно:

Count=Count+1 

оператор присваивания Паскаль :=, не =. Если вы хотите увеличивать переменную, вы можете использовать Inc (Count), чтобы увеличить ее.

Это не правильно:

IF V_O_C <1 and TOC= "FC" then 

Что касается Pascal оператор and имеет приоритет над relop операторов (= и <) компилятор будет работать первый в and, в результате чего в следующем эквивалентном выражении.

IF (V_O_C < (1 and TOC)) = "FC" then 

Слишком много ошибок в коде.

+0

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

+0

@RobertRichards: Ваш заголовок и текст вопроса говорят, что это ваше задание. Теперь это принадлежит вашему другу? Я чувствую запах копировать/вставлять/притворяться, что это не моя проблема. –

+0

Я действительно не думал, что это будет иметь большое значение. –

 Смежные вопросы

  • Нет связанных вопросов^_^