Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 442
от 15.09.2007, 19:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 243, Экспертов: 60
В номере:Вопросов: 2, Ответов: 11


Вопрос № 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
Комментарий оценки:
Огромное спасибо за ответы, Витек! Особенно за решение первой задачи. Вы мне очень помогли.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.58 от 10.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное