Вопрос № 101557: Уважаемые эксперты! Помогите, пожалуйста, решить 3 задачи:
1. Даны две переменные, поменять их местами без применения третьей переменной так, чтобы выражения в правой части всех операторов присваивания были одинаковы.
2. Выделить цифры в цело...Вопрос № 101559: I need help!!! Уважаемые эксперты! Помогите, пожалуйста, решить 3 задачи:
1. Даны 3 числа. Определить вид треугольника, для которого эти числа являются длинами сторон.
2. Даны 2 целых числа. Определить знак разности, не вычисляя ее. Можно сра...
Вопрос № 101.557
Уважаемые эксперты! Помогите, пожалуйста, решить 3 задачи:
1. Даны две переменные, поменять их местами без применения третьей переменной так, чтобы выражения в правой части всех операторов присваивания были одинаковы.
2. Выделить цифры в целом числе а. Значность числа заранее не определена - вывести в столбик цифры всех разрядов.
3. Даны 2 целых числа. Определить, у которого первая цифра его десятичной записи больше.
Заранее огромное спасибо. Swallow.
Отправлен: 10.09.2007, 18:47
Вопрос задала: Ласточка (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Coupler
Здравствуйте, Ласточка!
Ответ на первый вопрос: uses crt; var x, y: integer; begin
clrscr;
writeln('vvedite x i y');
readln(x, y);
writeln('X=', x, ' Y=', y);
X := (X) xor (Y);
Y := (X) xor (Y);
X := (X) xor (Y);
writeln('А теперь X=', x, ' Y=', y);
readln; end.
Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 10.09.2007, 18:50 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо Вам за ответ на первый вопрос, Coupler! Вы мне очень помогли. Спасибо.
Отвечает: Denisss
Здравствуйте, Ласточка!
Поскольку первую задачу Вам решили, привожу примеры решения второй и третьей (см. приложение).
Прим.:
Испытывая приведенные примеры, не забывайте про ограничения Паскаля (Integer: -32768..32767; LongInt: -2147483648..2147483647). В третьей задаче также можете заменить Integer на LongInt, чтобы можно было вводить более длинные числа.
Удачи!
Приложение:
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва ---- Ответ отправлен: 10.09.2007, 19:37 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо за помощь в решении моих задач, Denisss. Вы мне очень помогли.
Отвечает: Багиев Александр
Здравствуйте, Ласточка!
1.
a:=a+b
b:=a-b
a:=a-b
2.
while N>0 do begin
WriteLn(N mod 10);
N:=N div 10;
end;
3. M,N - данные числа
while M>0 do begin
a:=M mod 10;
M:=M div 10;
end;
while N>0 do begin
b:=N mod 10;
N:=N div 10;
end;
if a>b then WriteLn('Первая больше')
else WriteLn('Вторая больше');
Приложение:
Ответ отправил: Багиев Александр (статус: 1-ый класс)
Ответ отправлен: 11.09.2007, 07:27 Оценка за ответ: 5 Комментарий оценки: В первой задаче меня инересовало решение в котором выражения в правой части всех операторов присваивания были бы одинаковы. Но в любом случае огромное спасибо вам за ответ!
Отвечает: Дмитрий С.
Здравствуйте, Ласточка! !!!
a = 2
b = 3
a := a+b;
b := a-b;
a := a-b;
b = 2
a = 3
Для экзаменаторов: ответ повторный и неверный (не выполняется условие: "выражения в правой части всех операторов присваивания были одинаковы").
Отредактировано Denisss --------- Наши программисты самые программистые программисты!..
Ответ отправил: Дмитрий С. (статус: 4-ый класс)
Ответ отправлен: 11.09.2007, 13:21
Отвечает: Витек
Здравствуйте, Ласточка!
1) a:=a xor b;
b:=a xor b;
a:=a xor b;
2) выводит в обратном порядке, но числа можно записать в массив или строку и выводить в нужном для тебя порядке.
var a,b,s:integer;
begin
readln(a);
s:=10;
b:=(a mod s*10) div s;
while b<>0 do
begin
writeln(b);
s:=s*10;
b:=(a mod s*10) div s;
end;
readln
end.
3) var a,b:integer;
begin
readln(a,b);
a:=(a mod 100) div 10;
b:=(b mod 100) div 10;
if a>b then write('a-больше')
else if b>a then write('b-больше')
else write('«они равны');
readln
end.
--------- ohne fleis, keine preis
Ответ отправил: Витек (статус: 5-ый класс)
Ответ отправлен: 13.09.2007, 09:15 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо за помощь в решении моих задач, Витек! Вы мне очень помогли.
Вопрос № 101.559
I need help!!! Уважаемые эксперты! Помогите, пожалуйста, решить 3 задачи:
1. Даны 3 числа. Определить вид треугольника, для которого эти числа являются длинами сторон.
2. Даны 2 целых числа. Определить знак разности, не вычисляя ее. Можно сравнивать каждое из них с нулем, а между собой только их модули.
3. Даны 3 числа. Вывести их, расположив в порядке возрастания
Заранее огромное спасибо. Swallow.
Отправлен: 10.09.2007, 18:57
Вопрос задала: Ласточка (статус: Посетитель)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Tribak
Здравствуйте, Ласточка!
вот 2ая задача
program _002;
var
a,b:real;
begin
write('1-oe chislo ');
readln(a);
write('2-oe chislo ');
readln(b);
if a>b then write('+');
if a=b then write('=');
if a<b then write('-');
readln;
end.
вот 3ая задача
program _003;
var
a,b,c,d,f,s:integer;
q,w,r,e:boolean;
begin
write('1-oe chislo ');
readln(a);
write('2-oe chislo ');
readln(b);
write('3-e chislo ');
readln(c);
q:=a>b;
w:=a>c;
e:=b>c;
if q and w then d:=a;
if e and not q then d:=b;
if not e and not w then d:=c;
if q xor w then f:=a;
if e xor not q then f:=b;
if not e xor not w then f:=c;
if not q and not w then s:=a;
if not e and q then s:=b;
if e and w then s:=c;
writeln(s,' ',f,' ',d);
readln;
end.
Ответ отправил: Tribak (статус: 2-ой класс)
Ответ отправлен: 10.09.2007, 19:48 Оценка за ответ: 5 Комментарий оценки: Ещё не разбиралась в решении, но в любом случае спасибо помощь,Tribak.
Отвечает: Denisss
Здравствуйте, Ласточка!
Поскольку в предыдущем ответе вторая задача решена неверно (применены не целые числа, а вещественные; производится сравнение между собой, а не между модулями), то привожу свой пример решения второй задачи (см. приложение).
Удачи!
Приложение:
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва ---- Ответ отправлен: 10.09.2007, 20:12 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо, Denisss, за верное решение моей задачи! Вы мне очень помогли.
Отвечает: Артём1983
Здравствуйте, Ласточка!
Ответом на первый вопрос будет мой ответ на вопрос № 88171 (ответ смотри в приложении)
Ответы на остальные два вопроса таккже смотри в приложении.
Приложение:
Ответ отправил: Артём1983 (статус: 2-ой класс)
Ответ отправлен: 10.09.2007, 21:30 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо за помощь в решении моих задач, Артём1983! Вы мне очень помогли.
Отвечает: Багиев Александр
Здравствуйте, Ласточка!
1. a,b,c - числа. Неравенство треугольника
if (a<b+c)and(b<a+c)and(c<a+b) then WriteLn('Yes')
else WriteLn('No');
2. a,b - числа
Result:=false;
if (a>=0)and(b>=0) then Result:=abs(a)>abs(b);
if (a<=0)and(b<=0) then Result:=abs(a)<abs(b);
if (a>=0)and(b<=0) then Result:=true;
if (a<=0)and(b>=0) then Result:=false;
if (a*b>0)and(abs(a)=abs(b)) then Result:=true;
if Result then WriteLn('+')
else WriteLn('-');
3. Просто сравнить друг с другом
Приложение:
Ответ отправил: Багиев Александр (статус: 1-ый класс)
Ответ отправлен: 11.09.2007, 07:37 Оценка за ответ: 5 Комментарий оценки: Оогромное спасибо за помощь, Багиев Александр!
Отвечает: Дмитрий С.
Здравствуйте, Ласточка!
3. Даны 3 числа. Вывести их, расположив в порядке возрастания
const n=3; // определяем количество чисел
VAR ms: array [1..n] of integer; // числа будем хранить в массиве
ch, i: integer; // заводим вспомогательные переменные
Begin
for i:=1 to n do read(ms[i]);
for i:=1 to n-1 do
begin
if ms[i] > ms[i+1] then
begin
ch:=ms[i];
ms[i]:=ms[i+1];
ms[i+1]:=ch;
end;
end;
for i:=1 to n do writeln(ms[i]);
end.
--------- Наши программисты самые программистые программисты!..
Ответ отправил: Дмитрий С. (статус: 4-ый класс)
Ответ отправлен: 11.09.2007, 13:06 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо за помощь, Дмитрий С.!
Отвечает: Витек
Здравствуйте, Ласточка!
1)var a,b,c:integer;
begin
readln(a,b,c);
/*здесь идет сортировка чисел, здесь пригодилась и решение третьего примера*/
if a>b then
begin
a:=a xor b;
b:=a xor b;
a:=a xor b;
end;
if a>c then
begin
a:=a xor c;
c:=a xor c;
a:=a xor c;
end;
if b>c then
begin
b:=b xor c;
c:=b xor c;
b:=b xor c;
end;
/* окончание сортировки трех чисел*/
if (a+b)>c then
begin
writeln('это треугольник');
if (a=b)or(b=c)or(a=c) then writeln(' равнобедренный');
if (a=b)and(b=c) then writeln(' равносторнний');
if sqr(a)+sqr(b)=sqr(c) then writeln(' прямоугольный');
if sqr(a)+sqr(b)>sqr(c) then writeln(' остроугольный');
if sqr(a)+sqr(b)<sqr(c) then writeln(' тупоугольный');
end
else write('это не треугольник');
writeln(a,b,c);
readln
end.
2)не испытал со всеми возможными вариантами, но вроде правильно
var a,b,c:integer;
begin
readln(a,b);
if ((a>0)and(abs(a)>=abs(b)))or((b<0)and(abs(a)<abs(b))) then writeln('+')
else writeln('-');
readln
end.
--------- ohne fleis, keine preis
Ответ отправил: Витек (статус: 5-ый класс)
Ответ отправлен: 13.09.2007, 10:36 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо за ответы, Витек! Особенно за решение первой задачи. Вы мне очень помогли.