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

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


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

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

Выпуск № 358
от 01.05.2007, 17:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 242, Экспертов: 68
В номере:Вопросов: 5, Ответов: 13


Вопрос № 84177: Еще раз обращаюсь к вам с просьбой...опять задали лабы....Итак.. 1. Вычислить сумму элементов матрицы М(n*n),лежащих справа от главной диагонали. 2.Найти решение уравнения у=(х-3)в кубе+2 с точностью 0,001 на отрезке [0,5]. 3.В целочислен...
Вопрос № 84180: Вот это самое жестокое что может быть....я полностью не знаю что делать...помогите люди добрые..я знаю вы тут..... Ввести двумерный массив D 3*5.Вычислить максимальный по модулю элемент (Dmax) и с помощью "под программы 2" построить мас...
Вопрос № 84187: Здравствуйте! Помогите, пожалуйста, решить задачу, написав решение на языке Pascal. Задача такая: Известны координаты на плоскости двух точек. Составить программу вычисления расстояния между ними. Только, сразу говорю: Я не халявщик, ...
Вопрос № 84190: Помоги пожалуйста уважаемые Эксперты вот программа uses crt; var X,Y,code: integer; a1,a2,a3,a4,a5,a6:integer, S: string; begin clrscr; writeln ('S'); readln(S); val(copy (S,1,1),a1,code); val(copy (S,2,1)...
Вопрос № 84329: Возникла проблема с сортировкой массива... Надо отсортировать массив так, чтобы сначала шли четные числа, а потом нечтеные. У меня выходит, что последний элемент массива остается на месте и из-за этого естесственно в новом массиве поледний элемент по...

Вопрос № 84.177
Еще раз обращаюсь к вам с просьбой...опять задали лабы....Итак..
1. Вычислить сумму элементов матрицы М(n*n),лежащих справа от главной диагонали.
2.Найти решение уравнения у=(х-3)в кубе+2 с точностью 0,001 на отрезке [0,5].
3.В целочисленноЙ МАТРИЦЕ A(N*N) найти наименьший и наибольший элементы и переставить между собой строки, в которых они находяться.
Только братцы...пожалуйста поподробнее...как полностью написать программу....я в этом полный ноль!!!
Заранее всем спасибо!!
Отправлен: 25.04.2007, 17:58
Вопрос задал: Трусов Александр Евгеньевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Трусов Александр Евгеньевич!

Смотрите приложение.
Будут вопросы, спрашивайте.
Удачи!

Приложение:

---------
И только наступив на грабли мы преобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 25.04.2007, 18:53
Оценка за ответ: 5
Комментарий оценки:
Я пока не пробовал...но большущее вам спасибо!!!!


Вопрос № 84.180
Вот это самое жестокое что может быть....я полностью не знаю что делать...помогите люди добрые..я знаю вы тут.....
Ввести двумерный массив D 3*5.Вычислить максимальный по модулю элемент (Dmax) и с помощью "под программы 2" построить массив D1=D max*D. Упорядочить его строки по возрастанию с помощью "под прогаммы 1".
"под прогамма 1". Тип F. Упорядочить по возрастанию элементы строки К матрицы.
"под программа 2". Умножение матрицы на скаляр.
Помогите люди добрые...
Заранее всем благодарен!!!!

Отправлен: 25.04.2007, 18:12
Вопрос задал: Трусов Александр Евгеньевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Verena
Здравствуйте, Трусов Александр Евгеньевич!

Загадочную запись про тип F я поняла как задать тип "матрица" с названием F, не знаю, насколько это правильно. Под подпрограммой подразумевается, видимо, процедура. Чтобы не отходить от ТЗ обозвала процедуры One и Two.

const m=3;
const n=5;
type F = array [1..m, 1..n] of integer; {описываем тип массива}
var d: F;
i, j, max: integer;
procedure One (var a: F); {подпрограмма 1 - сортировка методом пузырька}
var i, j, k, x: integer;
begin
for i:=1 to m do
for j := 2 to n do
begin
for k := n downto j do
if a[i, k-1]< a[i, k] then {если текущий элемент больше, меняем местами}
begin
x := a[i, k-1];
a[i, k-1] := a[i, k];
a[i, k] := x;
end;
end;
end;

procedure Two (var a: F; k: integer); {подпрограмма 2 - умножение матрицы на скаляр}
var i, j: integer;
begin
for i:=1 to m do
for j:=1 to n do
a[i,j]:= a[i,j]*k; {домножаем каждый элемент на скаляр k}
end;

begin
for i:=1 to m do
for j:=1 to n do
readln (d[i,j]);
max:= abs(d[1,1]);
for i:=1 to m do {ищем максимальное по модулю}
for j:=1 to n do
if abs(d[i, j])>max then max:= abs(d[i,j]);
Two (d, max); {вызываем процедуры (подпрограммы)}
One (d);
for i:=1 to m do
begin
for j:=1 to n do {выводим на экран}
write (d[i,j]);
writeln;
end;
end.

---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 10-ый класс)
Ответ отправлен: 25.04.2007, 19:38
Оценка за ответ: 5
Комментарий оценки:
Спасибо бальшущее уважаемая!!!

Отвечает: Gh0stik
Здравствуйте, Трусов Александр Евгеньевич!

В приложении код программы.

Несколько комментариев:
procedure pp1(k:integer;var x:mas); {упорядочивает k-ю строку по возрастанию}
procedure pp2(l:integer;var x:mas); {умножаем матрицу на скляр}
procedure prnMas(x:mas); {выводим матрицу на экран}

Good Luck!!!

Приложение:

---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 25.04.2007, 19:41
Оценка за ответ: 5
Комментарий оценки:
Пасиба большое!!!!


Вопрос № 84.187
Здравствуйте!
Помогите, пожалуйста, решить задачу, написав решение на языке Pascal.
Задача такая:
Известны координаты на плоскости двух точек. Составить программу вычисления расстояния между ними.
Только, сразу говорю: Я не халявщик, а просто хочу понять, как решать такие задачи, и надеюсь, что вы мне объясните, как её решить.
Очень надеюсь на помощь!
Отправлен: 25.04.2007, 18:53
Вопрос задал: Красильников И.П. (статус: 10-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Красильников И.П.!
Схема такая если Вы проведете через точки линии паралельные осям,
то у Вас получится прямоугольный треугольник, а дальше все по Пифагору
Удачи!

Приложение:

---------
И только наступив на грабли мы преобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 25.04.2007, 19:08
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Necromancer
Здравствуйте, Красильников И.П.!
Расстояние м/д двумя точками на плоскости равно квадратному корню из суммы квадратов разности соответствующих координат. А на языке Pascal это будет выглядить следующим образом:
r := sqrt( sqr( x2-x1 ) + sqr( y2-y1 ) );
В этом случае r - искомое расстояние (переменная вещественнного типа); и (x1,y1) и (x2,y2) - коордмнаты двух точек.
Если вам нужна программа целиком сообщите, напишу
---------
Никогда не сдавайся, даже если боишься проиграть
Ответ отправил: Necromancer (статус: 2-ой класс)
Ответ отправлен: 25.04.2007, 22:08
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Чичерин Вадим Викторович
Здравствуйте, Красильников И.П.!
Расстояние L между точками, заданными координатами А (x1,y1) и B(x2,y2):
L = SQRT((x1-x2)^2+(y1-y2)^2)

Как я понимаю, координаты уже известны, значит AX, AY, BX, BY уже заданы...

Приложение:

---------
Чем больше я смотрюсь в зеркало, тем больше верю Дарвину...

Ответ отправил: Чичерин Вадим Викторович (статус: 2-ой класс)
Ответ отправлен: 26.04.2007, 19:41
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Шарков Сегей Николаевич
Здравствуйте, Красильников И.П.!
program P1;
var x1,x2,y1,y2:integer;
s:real
begin
writeln(‘Введите координаты первой точки’);
readln(x1,y1);
writeln(‘Введите координаты второй точки’);
readln(x2,y2);
s:=sqrt(sqr(x2-x1)+sqr(y2-y1));
writeln(‘Расстояние между этими точками равно ’,s:8:4);
readln
end.
Ответ отправил: Шарков Сегей Николаевич (статус: 2-ой класс)
Ответ отправлен: 30.04.2007, 07:06
Оценка за ответ: 5


Вопрос № 84.190
Помоги пожалуйста уважаемые Эксперты
вот программа
uses crt;
var X,Y,code: integer;
a1,a2,a3,a4,a5,a6:integer,
S: string;
begin
clrscr;
writeln ('S');
readln(S);
val(copy (S,1,1),a1,code);
val(copy (S,2,1),a2,code);
val(copy (S,3,1),a3,code);
val(copy (S,4,1),a4,code);
val(copy (S,5,1),a5,code);
val(copy (S,6,1),a6,code);
X:=a1+a2+a3;
Y:=a4+a5+a6;
if X=Y then writeln ('счастливое число') else writeln ('не счастливое)ж
readln;
end.
нужно сделать с циклом вроде со счетчиком что бы не писать val(copy (S,1,1),a1,code);
помогите пожалуйста.
Отправлен: 25.04.2007, 19:03
Вопрос задал: А.Е.В (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, А.Е.В!

Вот результат, который соответствует Вашему условию:

uses crt;
var X,Y,code,i: integer;
a:array [1..6] of integer;
S: string;
begin
clrscr;
write('S: ');
readln(S);
for i:=1 to 6 do val(copy (S,i,1),a[i],code);
X:=a[1]+a[2]+a[3];
Y:=a[4]+a[5]+a[6];
if X=Y then writeln ('счастливое число') else writeln ('не счастливое');
readln;
end.

Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 25.04.2007, 19:14

Отвечает: Vassea
Здравствуйте, А.Е.В!
uses crt;
var X,Y,code: integer;
S: string;
i:integer;
a:array [1..6] of integer;

begin
clrscr;
writeln ('S');
readln(S);
for i:=1 to 6 do
begin
val(copy (S,i,1),a[i],code);
end;
X:=a[1]+a[2]+a[3];
Y:=a[4]+a[5]+a[6];
if X=Y then writeln ('счастливое число') else writeln ('не счастливое)ж
readln;
end.
Ответ отправил: Vassea (статус: 2-ой класс)
Ответ отправлен: 25.04.2007, 19:14

Отвечает: Bingo
Здравствуйте, А.Е.В!
Можно объявить S как char, и строка будет считываться по одному символу (не нужно будет никаких Copy();).
-----
var X,Y,code: integer;
a:array[1..6]of integer;i:integer,
S: char;
Begin
for i:=1 to 6 do begin
read(s);
val(s,a[i],code);
end;
X:=a[1]+a[2]+a[3];
Y:=a[4]+a[5]+a[6];
if X=Y then writeln ('счастливое число') else writeln ('не счастливое');
End.
----
Удачи!
---------
C темным пивом в светлое будущее!
Ответ отправил: Bingo (статус: 4-ый класс)
Ответ отправлен: 25.04.2007, 20:35


Вопрос № 84.329
Возникла проблема с сортировкой массива... Надо отсортировать массив так, чтобы сначала шли четные числа, а потом нечтеные. У меня выходит, что последний элемент массива остается на месте и из-за этого естесственно в новом массиве поледний элемент повторяется и нет одного из нужных... Код вложил.

Приложение:

Отправлен: 26.04.2007, 16:16
Вопрос задал: Kimon (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ерёмин Андрей
Здравствуйте, Kimon!
См. пример в приложении. Сначала в массив заносятся случайные числа - это для теста. Сам алгоритм сортировки после комментария "Sorting". Метод использован такой: проходим все элементы массива со 2-го до конца. Каждый раз смотрим: если предыдущий элемент - нечётный, а текущий - чётный, значит меняем их местами. Дополнительно ведём счётчик таких перестановок и после каждого прохода до конца массива увеличиваем этот счётчик. Когда массив будет отсортирован, счётчик останется равным нулю. Обращаю ваше внимание, что после такой операции массив остаётся неупорядочен, т.е. числа хотя и располагаются "по группам" - сначала чётные, а затем нечётные, но в самих этих группах они расположены в произвольном порядке. Чтобы их отсортировать, нужно дополнительно применить алгоритм сортировки для этого массива. Удачи!

Приложение:

---------
Нет правила без исключений. Правило без исключений - исключение из правил.

Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Помощь, советы, обмен опытом.
ICQ: 286837644
----
Ответ отправлен: 26.04.2007, 16:34

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Kimon!

Смотрите приложение.
В начале массива ищем первое нечетное, в конце массива ищем первое четное.
Когда нашли неняем.
Удачи!

Приложение:

---------
И только наступив на грабли мы преобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 26.04.2007, 16:44

Отвечает: Punk_UnDead
Здравствуйте, Kimon!
буду краток
for p:=1 to x-1 do
for h:=p+1 to x do
if c[h] mod 2=0 then
begin
n:=c[h];
c[h]:=c[p];
c[p]:=n;
break; (*не обязательно, но освобождает от лишних сравнений*)
end;
внимательнее стройте алгоритм
при моём подходе в c[p] в любом случае будет чётное число, если конечно они ещё остались
а вообще задача линейная
нужно либо с двух сторон идти пока не индексы не сойдутся и в случае пары неправильно стоящей обменивать
либо идти спереди и первый каждый нечётный обменивать с самым первым идущим за ним чётным, пока индекс по которому ищем чётные не достигнет конца массива
---------
всё испытано на себе
Ответ отправил: Punk_UnDead (статус: 5-ый класс)
Ответ отправлен: 26.04.2007, 16:46


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.51 (beta) от 27.04.2007
Яндекс Rambler's Top100

В избранное