Помогите доработать программу на Паскале
Добрый вечер,
не могу доработать программу.
В начале напишу задание, код программки, а потом, что у меня не вышло.
Задание:
Разработать программу, которая в зависимости от введенного пользователем значения варианты должна:
1. вводить переменные целого типа и выполнять над ними все возможные арифметические операции;
2. вводить переменные вещественного типа и выполнять над ними все возможные арифметические операции;
3. формировать переменные логического типа и выполнять над ними все возможные логические операции;
4. вычислять логическое выражение в соответствии с вариантом;
5. вводить строковые переменные и выполнять над ними операцию конкатенации;
6. выполнять операции отношения над переменными различных типов;
7. выполнять определение машинного представления значений целого типа с использованием операции сдвига в соответствии со своим вариантом.
Примечания.
• Результаты работы по каждому пункту задания должны быть выведены на экран.
• Для выбора пункта задания использовать оператор CASE.
Вариант п.7 задания : первое значение – 19, следующие 9 – предыдущее, увеличенное на тот же №.
Суть вопроса:
На 8 строчке снизу стоит метка m4 ( я перехожу на нее после каждой части), но вот дальше программа работать не хочет. При вводе ответа (da или net) она переходит только на m3 и выбивается.
На паре разобраться с этим не смогла, и преподаватель тоже пожала плечами.
Помогите пожалуйста!
Добрый вечер,
не могу доработать программу.
В начале напишу задание, код программки, а потом, что у меня не вышло.
Задание:
Разработать программу, которая в зависимости от введенного пользователем значения варианты должна:
1. вводить переменные целого типа и выполнять над ними все возможные арифметические операции;
2. вводить переменные вещественного типа и выполнять над ними все возможные арифметические операции;
3. формировать переменные логического типа и выполнять над ними все возможные логические операции;
4. вычислять логическое выражение в соответствии с вариантом;
5. вводить строковые переменные и выполнять над ними операцию конкатенации;
6. выполнять операции отношения над переменными различных типов;
7. выполнять определение машинного представления значений целого типа с использованием операции сдвига в соответствии со своим вариантом.
Примечания.
• Результаты работы по каждому пункту задания должны быть выведены на экран.
• Для выбора пункта задания использовать оператор CASE.
Вариант п.7 задания : первое значение – 19, следующие 9 – предыдущее, увеличенное на тот же №.
Код:
program lab3;
Uses CRT;
const {Zadaem logicheskie konstanti:}
log1=false;log2=false;
log3=false;log4=true;
{Zadaem strokovie konstanti: }
slovo1='Par'; slovo3='Voz';
slovo2='i';
var {Zadaem tip dannix}
B1:char; {simvolnii}
a,b,c,l,m,v,j,i:integer; {celii}
x,y,D,k,Z,p,n:real; {vecestvennii}
log5, log6,log7,log8,log9,log10,F:boolean;{logicheskii}
fraza: string[40]; {strokovii}
pervaya_strochka: string[50];
vtoraya_strochka: string[50];
name:string;
otvet:string[3];
label {Zadaem metki}
m1,m2,m3,m4;
{Nachinaem telo programmi}
begin
Clrscr; {Znakomstvo s polzovatelem}
writeln('Salut! What is you name?');
readln(name);
Clrscr;
writeln('Priyatno poznakomitsya ', name);
Readkey;
m2: writeln; {Perechislenie vozmognix deistvii}
writeln('Segodnya na vibor:');
writeln('1)Rabota s peremennimi celogo tipa.');
writeln('2)Rabota s peremennimi vecestvennogo tipa.');
writeln('3)Rabota s peremennimi logicheskogo tipa.');
writeln('4)Vichislenie logicheskogo virageniya.');
writeln('5)Rabota so strokovimi peremennimi. Konkotenaciya.');
writeln('6)Rabota s operaciyami otnosheniya.');
writeln('7)Opredelenie mashinnogo predstavleniya chisla.');
writeln('8)Nichego ne delat. Vixod.');
readln(B1); {Vibor deistviya}
if B1 in ['1','2','3','4','5','6','7','8'] then
case B1 of
'1': begin
Clrscr; {Pri vibore 1 vipolnyaetsya:}
writeln('Rabota s peremennimi celogo tipa.');
writeln('Vvedite tri celix cisla cherez probel.');
readln(a,b,c);
writeln('Schitaem primer:');
writeln('Z=k+l-m');
writeln('gde k=a*a/b');
writeln('l=c div a');
writeln('m=k mod l');
writeln(' i a,b,c - vvedenie chisla.');
writeln;
k:=a*a/b;
l:=c div a;
m:=b mod l;
Z:=k+l+m;
writeln;
writeln('Pechataem rezultat:');
writeln('k= ',k:13);
writeln('l= ',l:13);
writeln('m= ',m:13);
writeln('Z= ',Z:13);
goto m4 ;
end;
'2': begin
Clrscr; {Pri vibore 2 vipolnyaetsya:}
writeln('Rabota s peremennimi vecestvennogo tipa.');
writeln('Vvedite dva chisla cherez probel/enter. Zatem nagmite Enter.');
readln(y,x);
writeln('Rechaem primer: ');
writeln('D=(y*y*y-x)/2.16E3-4.3+(exp(3*ln(y+x))))+(exp(2*(sin(x-y)/cos(x-y))))');
writeln('gde d,f,g - vvedennie chisla.');
D:=(y*y*y-x)/2.16E3-4.3+(exp(3*ln(y+x)))+(exp(2*(sin(x-y)/cos(x-y))));
writeln('Rezultat: D= ',D);
goto m4 ;
end;
'3': begin
Clrscr; {Pri vibore 3 vipolnyaetsya}
writeln('Rabota s peremennimi logicheskogo tipa.');
writeln('Dani isxodnie dannie:');
writeln('log1= ',log1);
writeln('log2= ',log2);
writeln('log3= ',log3);
writeln('log4= ',log4);
log5:=log1 or log2;
log6:= not log3;
log7:=log4 xor log1;
log8:=log2 and log3;
writeln('Logicheskoe slogenie (log1 и log2)= ',log5);
writeln('Logicheskoe otricanie (log3)= ',log6);
writeln('Slogenie po modulu 2 (log4 и log1)= ',log7);
writeln('Logicheskoe umnogenie (log12 и log3)= ',log8);
goto m4 ;
end;
'4': begin {Pri vibore 4 vipolnyaetsya:}
Clrscr;
writeln('Vichislenie logicheskogo virageniya.');
writeln('Isxodnie dannie:');
writeln('log1= ',log1);
writeln('log2= ',log2);
writeln('log3= ',log3);
writeln('log4= ',log4);
writeln('Dano viragenie:');
writeln('F=(log1 xor log2)or (log2 or (not log3)) and log4 and (log1 or (not log3))');
writeln('Proizvodim vichislenie.');
F:=(log1 xor log2)or (log2 or (not log3)) and log4 and (log1 or (not log3));
writeln('Rezultat virageniya: F= ', F);
goto m4;
end;
'5': begin {Pri vibore 5 vipolnyaetsya:}
Clrscr;
writeln('Rabota so strokovimi peremennimi. Konkotenaciya.');
writeln('Isxodnie dannie:');
writeln ( 'slovo1= ',slovo1);
writeln ( 'slovo2= ',slovo2);
writeln ('slovo3= ',slovo3);
fraza:= slovo1 + ' '+ slovo2 + ' '+ slovo3 + ' = '+ 'Parovoz';
writeln('Rezultat: ', 'fraza= ', fraza);
goto m4 ;
end;
'6': begin {Pri vibore 6 vipolnyaetsya:}
Clrscr;
writeln('Rabota s operaciyami otnosheniya');
writeln('Vvedite dva celix chisla cherez probel/enter.');
readln(p,n);
writeln('p= ',p);
writeln('n= ',n);
log9:=p>n;
writeln('Rezultat p>n: log9= ',log9);
writeln;
writeln('Sravnim dve stroki.');
writeln('Vvedite dve stroki cherez enter.');
readln(pervaya_strochka);
readln(vtoraya_strochka);
writeln('pervaya strochka= ',pervaya_strochka);
writeln('vtoraya strochka= ',vtoraya_strochka);
log10:=pervaya_strochka = vtoraya_strochka;
writeln(' log10: pervaya strochka ravna vtoroi?',log10);
goto m4 ;
end;
'7': begin {Pri vibore 7 vipolnyaetsya:}
Clrscr;
writeln('Opredelenie mashinnogo predstavleniya chisla');
v:=1;
m1:if v<181 then begin
v:=v+18;
j:=256;
write('v= ',v:2, ' =');
for i:=8 downto 0 do begin
if v and j=j then write('1')
else write ('0');
j:=j shr 1;
end;
writeln;
goto m1;
end;
goto m4 ;
end;
'8': {Pri vibore 1 vipolnyaetsya:}goto m3;
else goto m2;
end;
m4 : repeat until keypressed;
writeln('Xotite prodolgit? (da/net)');
readln(otvet);
if otvet='da' then goto m2
else goto m3;
m3: writeln('Udachnogo dnya!');
repeat until keypressed;
end.
Суть вопроса:
На 8 строчке снизу стоит метка m4 ( я перехожу на нее после каждой части), но вот дальше программа работать не хочет. При вводе ответа (da или net) она переходит только на m3 и выбивается.
На паре разобраться с этим не смогла, и преподаватель тоже пожала плечами.
Помогите пожалуйста!