Помогите решить задачу...
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
пожалста, обращайтесь, я правда далеко не профессионал, но чем смогу - помогу.
Вот, нашел маленькую ошибку....
А так, все правильно....
У меня вот вопрос, можно ли сделать интерфейс этой программы ввиде калькулятора... т.е само меню..., где можно было выбирать самому числа и операции на экране...
Кто знает... плиззз... скажите как это делать...
Можно ли это сделать вообще...

Код: Выделить всё
uses crt;
var min,i,s1,s,buf,cs,c1,z1,c,z:integer;
b:boolean;
begin
clrscr; {vvod drobey}
writeln('Vvod drobi');
readln(c);
writeln('-');
readln(z);
clrscr;
writeln('Vvod 2 drobi');
readln(c1);
writeln('-');
readln(z1);
clrscr; {vybor operacii}
writeln ('vybor deystvia');
writeln ('1 - slogenie');
writeln ('2 - vychitanie');
writeln ('3 - umnogenie');
writeln ('4 - delenie');
readln(cs);
case cs of
1: begin
s:=z*z1;
s1:=(c*z1)+(c1*z); {slogenie}
end;
2: begin
s:=z*z1;
s1:=(c*z1)-(c1*z); {vichitanie}
end;
3: begin
s:=z*z1;
s1:=c*c1;
end;
4: begin
buf:=c1;
c1:=z1;
z1:=buf;
s:=z*z1;
s1:=c*c1;
end;
end;
if s1<>s then
begin
if s1<s then min:=s1
else min:=s;
end
else min:=s;
for i:=min downto 1 do begin
if (S mod i=0) and (s1 mod i=0) then begin
s:=s div i;
s1:=s1 div i;
end;
end;
if (s1<0) and (s<0) then {znak minus}
begin
s1:=s1*(-1);
s:=s*(-1);
end
else
if s1<0 then begin
s1:=s1*(-1);
b:=true;
end;
if s<0 then begin
s:=s*(-1);
b:=true;
end;
clrscr; {otvet}
if b=true then
writeln('- ',s1,'/',s)
else
writeln(s1,'/',s);
readln;
end.
А так, все правильно....
У меня вот вопрос, можно ли сделать интерфейс этой программы ввиде калькулятора... т.е само меню..., где можно было выбирать самому числа и операции на экране...
Кто знает... плиззз... скажите как это делать...
Можно ли это сделать вообще...
Поясни, что конкретно хочется увидеть. Пока что я вижу в программе и выбор чисел, и выбор операции. Чем этот вариант не устраивает?
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Устраивает этот вариант, но мне просто интересно... возможно ли сделать интерфейс в виде калькулятора...
Т.е будет нарисован калькулятор, где можно будет выбирать операции и цисла, прямо на нем....
Т.е будет нарисован калькулятор, где можно будет выбирать операции и цисла, прямо на нем....
Если рисовать в текстовом режиме - модуль crt тебе в помощь.
Если в графическом - модуль graph.
В принципе, возможно все
Если в графическом - модуль graph.
В принципе, возможно все

Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
ребята... помогите... или у меня паскаль совсем тупит, хотя я проверял в универе, такая же хрень... короче начал тестировать эту програмку, сначала все отлично считал... потом начал при сложении в ответе минус ставить, при делении числа, выдает то правильно, то неправильно, тоже ставит какой то минус...
проверил еще все программу, все написано правильно... в чем же причина???
проверил еще все программу, все написано правильно... в чем же причина???
вот например... раньше все правильно выдавал: 3/6-5/6 выдавал = -1/3, сейчас же выдает -12/36... при умножении выдает то 5/12, то -5/12... при делении этих же чисел, выдает то знак "-", то знак "+"...
что это такое?
что это такое?
Зачем все вот это
если это все можно заменить на
И ошибок будет намного меньше.
Кстати, вместо if b=true лучше писать if b, а вместо if b=false - if not b
А 12/36 выдает из-за того, что проверка
if s1<>s then
begin
....
end;
есть, а проверки для обратного случая нет
Код: Выделить всё
if (s1<0) and (s<0) then {znak minus}
begin
s1:=s1*(-1);
s:=s*(-1);
end
else
if s1<0 then begin
s1:=s1*(-1);
b:=true;
end;
if s<0 then begin
s:=s*(-1);
b:=true;
end;
if b=true then
writeln('- ',s1,'/',s)
else
writeln(s1,'/',s);
readln;
end.
Код: Выделить всё
if s1*s<0 then write('-');
writeln(s1,'/',s);
Кстати, вместо if b=true лучше писать if b, а вместо if b=false - if not b
А 12/36 выдает из-за того, что проверка
if s1<>s then
begin
....
end;
есть, а проверки для обратного случая нет
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Всем привет! Подскажите пожалуйста.. Есть вот такая задача:
Дано трехзначное число. Проверить истинность высказывания: «Цифры данного числа образуют возрастающую или убывающую последовательность».
Я сделал вот так :
program PosleD;
var a:real;
b:real;
c:real;
Begin
writeln;
writeln('Введите 3 числа');
readln(a,b,c);
If (a<b) and (b<c) or (a>b) and (b>c) then write('TRUE') else write('FALSE');
end.
Мне сказали, что нужно поправить так, что бы вводить не 3 числа (образующие 3х значное), а 1 трехзначное и что бы программа сама его делила на 3 и проверяла условие.. Собственно все =)
Дано трехзначное число. Проверить истинность высказывания: «Цифры данного числа образуют возрастающую или убывающую последовательность».
Я сделал вот так :
program PosleD;
var a:real;
b:real;
c:real;
Begin
writeln;
writeln('Введите 3 числа');
readln(a,b,c);
If (a<b) and (b<c) or (a>b) and (b>c) then write('TRUE') else write('FALSE');
end.
Мне сказали, что нужно поправить так, что бы вводить не 3 числа (образующие 3х значное), а 1 трехзначное и что бы программа сама его делила на 3 и проверяла условие.. Собственно все =)
a:=x div 100
b:=x div 10 mod 10
c:=x mod 10
b:=x div 10 mod 10
c:=x mod 10
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.