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

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


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

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

Выпуск № 345
от 15.04.2007, 10:35

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


Вопрос № 81689: Помогите решить задачу. Сколькими способами можно представить число 1 000 000 произведением 3 натуральных целых чисел? Не считать, если множители просто занимают разные положения (перестановка множителей). Объяснить ответ. Пожалуйста, Заранее спасибо...
Вопрос № 81753: Помогите пожалст задачку решить)) Дана матрица размерности m на n. Определить строку и столбец матрицы, обладающий следующими свойствами: сумма модулей элементов является максимальной среди всех столбцов и строк.... заранее спасибо... чт...
Вопрос № 81794: Умные люди!!Обращается к вам глупый студент военмеха..У меня проблема...не решить задачу!Помогите плииииз!!!Вычислить сумму элементов матрицы М(n*n),лежащих справа от главной диагонали..Заранее спасибо....
Вопрос № 81830: Братцы, помогите, умираю) Ввести массив А из пяти элементов, сформировать массив B(5*5) такой что, b[i,j]= (система) i+j, если i<j (i-j)/(i+1), j<i Найти массив С, равный a*b. Упорядочить массив С в порядке возрастания а...
Вопрос № 81853: Помогите решить задачу: В цех вторичной переработки поступают бутылки четырех видов: коричневые стеклянные, зеленые стеклянные, прозрачные стеклянные и пластиковые. Бутылки поступают на переработку партиями в контейнерах, причем в каждом контейн...

Вопрос № 81.689
Помогите решить задачу. Сколькими способами можно представить число 1 000 000 произведением 3 натуральных целых чисел? Не считать, если множители просто занимают разные положения (перестановка множителей). Объяснить ответ. Пожалуйста, Заранее спасибо
Отправлен: 09.04.2007, 10:50
Вопрос задал: DoK-Z (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Решетник Д
Здравствуйте, DoK-Z!
Раз так все срочно, можно использовать способ "в лоб".
Просто 3 цикла от 1 до 1 000 000 / 2. если произведение подходит, берем. К этому добавляем вариант 1 000 000 * 1 * 1. И создать какой-нить массив с флагами, в который записывать использованные варианты.... Способ будет очень грузный и за него вам хорошего ничего думаю не скажут.
Попробуйте еще такой вариант. Разложите число на простые множители и комбинируйте их в группы из 3 чисел. то есть имея числа: 1, 2, 3, 4, 5, 6, 7, 8, 9.
Комбинируйте их на такие 1*2*3, 4*5*6, 7*8*9 и все оставишиейся перстановки....
---------
Жизнь коротка, чтобы писать на ассемблере
Ответ отправил: Решетник Д (статус: Студент)
Ответ отправлен: 09.04.2007, 11:03

Отвечает: fsl
Здравствуйте, DoK-Z!
Не совсем в лоб, но тоже долго ;)!!!

uses crt;
var a,b,c,p:longint;
i:integer;
begin
for a:=1 to 500000 do
begin
writeln(a,'; ',i,'; ');
for b:=a to 500000 do
begin
c:=1000000 div (a*b);
if a*b*c=1000000 then
if c>b then i:=i+1;
end;
end;
writeln();
write(i);
end.

Удачи!
---------
Ну, Вы спросили!
Ответ отправил: fsl (статус: Студент)
Ответ отправлен: 09.04.2007, 11:10


Вопрос № 81.753
Помогите пожалст задачку решить))
Дана матрица размерности m на n. Определить строку и столбец матрицы, обладающий следующими свойствами: сумма модулей элементов является максимальной среди всех столбцов и строк....

заранее спасибо... что б я-чайник без вас делал?!))
Отправлен: 09.04.2007, 16:56
Вопрос задал: Антон Ульянов (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Verena
Здравствуйте, Антон Ульянов!

Я так понимаю, строка должна обладать максимальной суммой модулей среди строк, а столбец - среди столбцов. Тогда решение такое:

max:=-1; {хранится текущий максимум сумм(поскольку мы суммируем по модулюЮ тоза начальный максимум можно взять -1)}
imax:= 1; {индекс строки с максимальной суммой }
for i:=1 to m do {цикл по строкам}
begin
s:=0;
for j:=1 to n do {цикл по элементам строки (столбцам), где находится сумма модулей}
s:= s+abs(a[i,j]);
if s>max then begin max:=s; imax:=i; end; {если новая сумма больше, запоминаем текущую строку}
end;
max:=-1;
jmax:= 1; {индекс столбца с максимальной суммой }
for j:=1 to n do {всё выполняется аналогично, только для столбцов}
begin
s:=0;
for i:=1 to m do
s:= s+abs(a[i,j]);
if s>max then begin max:=s; jmax:=j; end;
end;

Результат для столбца - jmax, для строки - imax. Если что не так поняла - пишите.
Удачи)

---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 9-ый класс)
Ответ отправлен: 09.04.2007, 18:46


Вопрос № 81.794
Умные люди!!Обращается к вам глупый студент военмеха..У меня проблема...не решить задачу!Помогите плииииз!!!Вычислить сумму элементов матрицы М(n*n),лежащих справа от главной диагонали..Заранее спасибо.
Отправлен: 09.04.2007, 20:55
Вопрос задал: Трусов Александр Евгеньевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

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

В приложении готовый код, если Вам нужно чтобы в сумму входили и элементы самой диагонали, то просто условие
if i < j then s:=s+ms[i,j];
замените на
if i < = j then s:=s+ms[i,j];

Good Luck!!!

Приложение:

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

Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 09.04.2007, 21:16

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

Элементы главной диагонали квадратной матрицы имеют индексы i=j. Соответственно, элементы справа от неё имеют индексы j>i. Самое простое - добавлятьк сумме элементы, чьи индексы удовлетворяют этому условию.

s:=0;
for i:=1 to n do
for j:=1 to n do
if j>i then s:=s+a[i,j];

Можно по-другому, начиная второй цикл сразу с нужного индекса:

s:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
s:=s+a[i,j];

Результат - переменная s.


---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 9-ый класс)
Ответ отправлен: 09.04.2007, 21:17
Оценка за ответ: 5

Отвечает: Vassea
Здравствуйте, Трусов Александр Евгеньевич!
S - сумма
i, j, n : integer;
a - двумерный массив -матрица a: array [1..10,1..10] of real;

s:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
s:=s+a[i,j];
Ответ отправил: Vassea (статус: 1-ый класс)
Ответ отправлен: 09.04.2007, 22:27
Оценка за ответ: 5


Вопрос № 81.830
Братцы, помогите, умираю)

Ввести массив А из пяти элементов, сформировать массив B(5*5) такой что, b[i,j]= (система) i+j, если i<j

(i-j)/(i+1), j<i
Найти массив С, равный a*b. Упорядочить массив С в порядке возрастания абс. значения его элементов.
Отправлен: 10.04.2007, 01:16
Вопрос задал: Серов Алексей Евгеньевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

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

Program system32;
var
a: array [1..5] of integer;
b: array [1..5,1..5] of integer;
c: array [...] of integer;
i,j: integer;

Begin
Writeln('Vvedite masiv A');
For i:=1 to 5 do readln (a[i]);
For i:=1 to 5 do
For j:=1 to 5 do
If i<j then b[i,j]:= i+j
Else If j<i then b[i,j]:= (i-j)/(i+1); //тут непонятно, а что делать если i и j равны??
// Ай'м сорри не помню как умножать матрицы :(
End;
---------
Пришел, увидел, развернулся и ушел...
Ответ отправил: Сарумян (статус: 3-ий класс)
Ответ отправлен: 10.04.2007, 01:31

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

const m=5;
var a,c:array [1..m] of real;
b:array [1..m,1..m] of real;
k,i,j:integer;
begin
randomize;
writeln('***A***'); {заполняем матрицу А произвольными числами из интервала [0,10)}
for i:=1 to m do
begin
a[i]:=random(10);
write(a[i]:5:2);
end;
writeln;

writeln('***B***'); {вычисление матрицы В}
for i:=1 to m do
begin
for j:=1 to m do
begin
b[i,j]:=0;
if i < j then b[i,j]:=i+j;
if i > j then b[i,j]:=(i-j)/(i+1);
write(b[i,j]:5:2);
end;
writeln;
end;
writeln('***A*B***'); {умножение матриц}
for j:=1 to m do
begin
c[j]:=0;
for k:=1 to m do c[j]:=c[j]+a[k]*b[k,j];
write(c[j]:6:2); {сразу выводим результат на экран (матрица С)}
end;
writeln;
end.

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


Вопрос № 81.853
Помогите решить задачу:
В цех вторичной переработки поступают бутылки четырех видов: коричневые стеклянные, зеленые стеклянные, прозрачные стеклянные и пластиковые. Бутылки поступают на переработку партиями в контейнерах, причем в каждом контейнере могут находиться бутылки различных видов. Перед переработкой бутылок рабочие сортируют их по видам таким образом, чтобы все бутылки одного вида попали в один контейнер. В каждом из контейнеров может помещаться неограниченное число бутылок.

Требуется определить, в какие четыре из поступивших контейнеров нужно переложить бутылки так, чтобы в одном из них оказались только коричневые стеклянные бутылки, во втором — только зеленые стеклянные, в третьем — только прозрачные стеклянные, в четвертом — только пластиковые бутылки, и чтобы общее количество перемещений при сортировке было минимальным.

Если есть несколько равноценных вариантов, то выбрать любой из них.

Входные данные. В первой строке задается число контейнеров N (4≤N≤20). В следующих N строках указаны по четыре числа — количество коричневых, зелёных, прозрачных и пластиковых бутылок в соответствующем контейнере.

Выходные данные. Нужно вывести две строки. В первой строке должна быть напечатана последовательность из четырех чисел, которая определяет номера контейнеров, в которые надо поместить коричневые, зелёные, прозрачные и пластиковые бутылки соответственно. Во второй строке должно быть выведено минимальное число перемещений бутылок.

Например, входные:
5
5 5 0 0
50 100 70 10
0 0 5 10
100 50 20 20
1 2 12 1

Выходные:
4 2 5 3
239
Отправлен: 10.04.2007, 07:36
Вопрос задал: DoK-Z (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Nazar__D
Здравствуйте, DoK-Z!
Мне кажется, главное - понять алгоритм. Мой вариант алгоритма:
сначала нужно определить, в каком ящике наибольше бутылок определенного типа. Например, в вашем случае, коричневых больше всего в четвертом контейнере. Туда надо сложить остальные коричневые. Аналогически с другими цветами бутылок. Так определяются контейнеры, в которых будут бутылки соответствующего типа(первая строчка ответа). Ну а что касается количества перемещений, то это надо считать в цикле.
Помог, чем мог... :)
---------
Я - українець!
Ответ отправил: Nazar__D (статус: 1-ый класс)
Ответ отправлен: 11.04.2007, 01:14


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.49 от 14.04.2007
Яндекс Rambler's Top100

В избранное