Другие языки программирования и технологии

Укажите на ошибки в моем коде. Язык Паскаль.

program test;

label M;
var
b: char;
s: real;
o: integer;

begin
M:
writeln('Тест "Получился бы из вас хакер "(+/-)');
readln(b);
if (b = '+') then
begin
s := 0;
writeln('Вопрос Number 1. Когда у вас возникает вопрос, что вы делаете?');
writeln('1. Прошу помощи у знакомого, который знает.');
writeln('2. Пытаюсь сам найти ответ на мой вопрос.');
writeln('3. Забрасываю это дело.');
writeln('4. Ищу сертифицированного специалиста.');
readln(o);
if (o = 2) then s := s + 1 else if (o = 4) then s := s + 0.5
else if (o > 4) then write('Вы выбрали несуществующий вариант ответа!') else s := s;
writeln('Вопрос Number 2. Допустим вы не смогли найти ответ на ваш вопрос, что вы будете делать?');
writeln('1. Забью на это дело.');
writeln('2. Попытаюсь разобраться сам эксперементальным образом.');
writeln('3. Буду думать над вопросом, не ставить эксперементов, так как они могут привести к плачевным результатам.');
writeln('4. Буду дальше пытаться найти ответ, чего бы это не стоило');
readln(o);
if (o = 4) then s := s + 1 else if (o = 2) then s := s + 0.5
else if (o > 4) then write('Вы выбрали несуществующий вариант ответа!') else s := s;
writeln('Вопрос Number 3. Любите ли вы изучать, что-то новое и неизведанное?');
writeln('1. Обожаю.');
writeln('2. Люблю.');
writeln('3. Не люблю.');
writeln('4. Ненавижу.');
readln(o);
if (o = 1) then s := s + 1 else if (o = 2) then s := s + 0.5
else if (o > 4) then write('Вы выбрали несуществующий вариант ответа!') else s := s;
writeln('Вопрос Number 4. Как вы относитесь к программированию?');
writeln('1. Положительно.');
writeln('2. Отрицательно.');
writeln('3. Равнодушно.');
writeln('4. Для меня это что-то за гранью человеческих возможностей.');
readln(o);
if (o = 1) then s := s + 1 else if (o = 2) then s := s + 0.5
else if (o > 4) then write('Вы выбрали несуществующий вариант ответа!') else s := s;
writeln('Вопрос Number 5. Как вы относитесь к *nix системам?');
writeln('1. Положительно.');
writeln('2. Отрицательно.');
writeln('3. Равнодушно.');
writeln('4. Что это?');
readln(o);
if (o = 1) then s := s + 1 else if (o = 3) then s := s + 0.5
else if (o > 4) then write('Вы выбрали несуществующий вариант ответа!') else s := s;
writeln('Вопрос Number 6. А теперь честно: пытались ли вы улучшить свои показатели во время теста?');
writeln('1. Да.');
writeln('2. Нет');
writeln('3. Немного.');
writeln('4. Чуть больше половины.');
readln(o);
if (o = 2) then s := s + 1 else if (o = 3) then s := s + 0.5
else if (o > 4) then write('Вы выбрали несуществующий вариант ответа!') else s := s;
if (s in [0, 2.5]) then write('К сожалению, из вас получиться ужасный хакер! :(')
else if (s in [3.0, 4.5]) then write('Из вас получиться средненький хакер. :( ;)')
else if (s in [5, 6.5]) then write('Из вас вполне может получиться неплохой хакер;)');
write('Желаете повторить ');
if (b = '+') then goto M
else write('Выход из программы...');
writeln('Конец программы. Спасибо за посещение!');
end
else write('Выход из программы...');
writeln('Конец программы. Спасибо за посещение!');
end.

Вывод

Тест "Получился бы из вас хакер "(+/-)
+
Вопрос Number 1. Когда у вас возникает вопрос, что вы делаете?
1. Прошу помощи у знакомого, который знает.
2. Пытаюсь сам найти ответ на мой вопрос.
3. Забрасываю это дело.
4. Ищу сертифицированного специалиста.
2
....****************************....
Желаете повторить Тест "Получился бы из вас хакер "(+/-)
(Вот! Почему нет рузультатов!???) ОБЪЯСНИТЕ ПОЖАЛУЙСТА!!!!
SF
Saidov Firdavs
215
s in ...-вы пытаетесь проверить принадлежность переменной s какому-то множеству.
Если в двух словах, то элементами множества могут быть ТОЛЬКО переменные перечисляемого типа. А тип Real к данной категории переменных не относится.
Например if (s in [0, 2.5]) замените на if (s>=0) and (s<=2.5)
Дмитрий Тен
Дмитрий Тен
54 020
Лучший ответ
Одно из обязательных свойств алгоритма или программы - это МАССОВОСТЬ.

Крайне глупо писать программу для решения ОДНОЙ задачи.

Если нужно рассчитывать какое-либо уравнение, то в программе не пишут вот так:

writeln(5*2+10-0.5);

В программе создают какие-то переменные, на вход её дают нужные значения, и она что-то считает и выдает результат. А в чем смысл твоей программы? Вот сделай чтение данных из файла, обработку В ЦИКЛЕ, проверку ответов ТОЖЕ В ЦИКЛЕ, тогда это будет программа.

А сейчас это АБСОЛЮТНО бесполезная ерунда.

PS. И да, использование меток - это крайне не профессионально. Тем более в таком случае как у тебя. Если учишься писать программу, то пиши её правильно, и замени метку на цикл repeat-until.
1. Не любит паскаль вещественных множеств )
2. В подсчете баллов в диапазонах провалы по 0.5 - не уверен, что задумано так )
----------------------------------
program test;

label M;
var
b: char;
s: real;
o: integer;

begin
M:
Writeln('Тест "Получился бы из вас хакер "(+/-)');
Readln(b);
if (b = '+') then
begin
s := 0;
Writeln('Вопрос Number 1. Когда у вас возникает вопрос, что вы делаете?');
Writeln('1. Прошу помощи у знакомого, который знает.');
Writeln('2. Пытаюсь сам найти ответ на мой вопрос.');
Writeln('3. Забрасываю это дело.');
Writeln('4. Ищу сертифицированного специалиста.');
Readln(o);

if (o = 2) then
s := s + 1
else
if (o = 4) then
s := s + 0.5
else
if (o > 4) then
Write('Вы выбрали несуществующий вариант ответа!')
else
s := s;

Writeln('Вопрос Number 2. Допустим вы не смогли найти ответ на ваш вопрос, что вы будете делать?');
Writeln('1. Забью на это дело.');
Writeln('2. Попытаюсь разобраться сам эксперементальным образом.');
Writeln('3. Буду думать над вопросом, не ставить эксперементов, так как они могут привести к плачевным результатам.');
Writeln('4. Буду дальше пытаться найти ответ, чего бы это не стоило');
Readln(o);

if (o = 4) then
s := s + 1
else
if (o = 2) then
s := s + 0.5
else
if (o > 4) then
write('Вы выбрали несуществующий вариант ответа!')
else
s := s;
Writeln('Вопрос Number 3. Любите ли вы изучать, что-то новое и неизведанное?');
Writeln('1. Обожаю.');
Writeln('2. Люблю.');
Writeln('3. Не люблю.');
Writeln('4. Ненавижу.');
Readln(o);

if (o = 1) then
s := s + 1
else
if (o = 2) then
s := s + 0.5
else
if (o > 4) then
Write('Вы выбрали несуществующий вариант ответа!')
else
s := s;

Writeln('Вопрос Number 4. Как вы относитесь к программированию?');
Writeln('1. Положительно.');
Writeln('2. Отрицательно.');
Writeln('3. Равнодушно.');
Writeln('4. Для меня это что-то за гранью человеческих возможностей.');
Readln(o);

if (o = 1) then
s := s + 1
else
if (o = 2) then
s := s + 0.5
else
if (o > 4) then
write('Вы выбрали несуществующий вариант ответа!')
else
s := s;

Writeln('Вопрос Number 5. Как вы относитесь к *nix системам?');
Writeln('1. Положительно.');
Writeln('2. Отрицательно.');
Writeln('3. Равнодушно.');
Writeln('4. Что это?');
Readln(o);

if (o = 1) then
s := s + 1
else
if (o = 3) then
s := s + 0.5
else
if (o > 4) then
write('Вы выбрали несуществующий вариант ответа!')
else
s := s;

Writeln('Вопрос Number 6. А теперь честно: пытались ли вы улучшить свои показатели во время теста?');
Writeln('1. Да.');
Writeln('2. Нет');
Writeln('3. Немного.');
Writeln('4. Чуть больше половины.');
Readln(o);

if (o = 2) then
s := s + 1
else
if (o = 3) then
s := s + 0.5
else
if (o > 4) then
Ibrayev M
Ibrayev M
4 891
Ibrayev M write('Вы выбрали несуществующий вариант ответа!')
else
s := s;

if (s >= 0) and (s < 3) then
write('К сожалению, из вас получиться ужасный хакер! :(')
else
if (s >= 3) and (s < 5) then
Write('Из вас получиться средненький хакер. :( ;)')
else
if (s >= 5) and (s < 7) then
Write('Из вас вполне может получиться неплохой хакер;)');

Write('Желаете повторить ');
if (b = '+') then
goto M
else
write('Выход из программы...');

Writeln('Конец программы. Спасибо за посещение!');
end
else write('Выход из программы...');
writeln('Конец программы. Спасибо за посещение!');
end.
вырви глаз - такое читать... про гитхаб слышали?
VS
Vitya Sax
3 087