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

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


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

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

Выпуск № 425
от 18.07.2007, 19:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 247, Экспертов: 56
В номере:Вопросов: 7, Ответов: 14


Вопрос № 94945: Помогите пожалуйста!«Даны натуральное число n, целочисленная квадратная матрица порядка n.Получить b1 ..,bn, где bi это значение 1-го по порядку положительного элемента i-ой строки(если таких элементов нет,то принять bi=1)» ...
Вопрос № 94949: Уважаемые эксперты! Помогите, пожалуйста, решить 4 задачи.: 1. Заполнить массив В, i-элемент которого равен удвоенному максимальному элементу среди первых i-элементов одномерного массива А. 2. На столе через одну лежат вилки и ложки (по n шт...
Вопрос № 94954: Уважаемые эксперты! Помогите, пожалуйста, решить 3 задачи.: 1. Дан массив из N целых чисел и число М (М<=N). Для каждого участка из М стоящих рядом элементов вычислить значение суммы четных отрицательных элементов этого участка. Например...
Вопрос № 94963: Помогите решить пожалуйста, из головы просто вылетело как её решать): Вывести на экран цифру, наиболее часто встречающуюся в массиве....
Вопрос № 94965: снова привет! Срочно need help! Нужно написать прогу, которая имитирует движение земли вокруг солнца и движение луны вокруг земли одновременно. Планеты в виде окружностей, и должно быть движение. Заранее спасибо!...
Вопрос № 95042: Уважаемые эксперты! Помогите, пожалуйста, решить задания: 1. Дан фрагмент алгоритма, где используются строки s и s1, целые переменные i, j, k, а также массив целых чисел msv, максимальное количество элементов которого равно длине строки. <br...
Вопрос № 95072: Здравствуйте Спасибо заранее, за то что уделили мне время. С чего посоветуете начать? В программирований, на языке паскаль. Практический, с чего начать? Спасибо ещё раз!...

Вопрос № 94.945
Помогите пожалуйста!«Даны натуральное число n, целочисленная квадратная матрица порядка n.Получить b1 ..,bn, где bi это значение 1-го по порядку положительного элемента i-ой строки(если таких элементов нет,то принять bi=1)»
Отправлен: 12.07.2007, 19:34
Вопрос задала: Сочнева Анна Алексеевна (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

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

Вот решение:
const n=5;
var a:array [1..n,1..n] of integer;
b:array [1..n] of integer;
i,j:integer;
begin
randomize;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(4)-random(10); {вносим в массив произвольные числа, но можно и организовать ввод в ручную}
write(a[i,j]:3);
end;
writeln;
end;
writeln;
for i:=1 to n do {блок поиска первого положительного числа в строке}
begin
b[i]:=1; j:=1;
while (a[i,j] <= 0) and (j <= n) do inc(j);
if j <= n then b[i]:=a[i,j];
write(b[i]:3); {вывод результата на экран}
end;
readln;
end.


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

Отвечает: Дмитрий С.
Здравствуйте, Сочнева Анна Алексеевна!
«Даны натуральное число n, целочисленная квадратная матрица порядка n.Получить b1 ..,bn, где bi это значение 1-го по порядку положительного элемента i-ой строки(если таких элементов нет,то принять bi=1)»
_________________________________

var MS: array [1..k, 1..k] of integer;
MS_2: array [1..k] of integer;
i,j,a,b: integer;

function ABC(var a: integer): intreger;
var q: boolean;
begin
q:=true;
for b:=1 to k do
if MS[a,b]>0 then
begin
ABC := MS[a,b];
q:=false;
break;
end;
if a=k and q then ABC := MS[k,b];
end;

begin
// Заполнить массив MS

for i:=1 to k do
MS_2[i] := ABC(i);
end.

Вот набросал побыстренькому. Правильность не гарантирую, т.к. не было под рукой компилятора
---------
Наши программисты самые программистые программисты!..
Ответ отправил: Дмитрий С. (статус: 2-ой класс)
Ответ отправлен: 14.07.2007, 12:56


Вопрос № 94.949
Уважаемые эксперты! Помогите, пожалуйста, решить 4 задачи.:
1. Заполнить массив В, i-элемент которого равен удвоенному максимальному элементу среди первых i-элементов одномерного массива А.
2. На столе через одну лежат вилки и ложки (по n штук). За минимальное число обменов переложить их так, чтобы слева лежали ложки, а справа вилки.
3. Задан числовой массив А(n). Найти отрезок массива максимальной длины, в котором первое число равно последнему, второе – предпоследнему и т.д. Напечатать длину этого отрезка.
4. Даны два одномерных целочисленных массива А и В. Составить алгоритм, определяющий, можно ли путем перестановки элементов массива А получить массив В (алгоритмы сортировки использовать не рекомендуется).
Хотелось бы узнать, как решаются 1я и 2я именно при помощи вложенных циклов ‘While’, а 4я – без введения нового массива и тоже с помощью ‘While’. Заранее большое спасибо. Swallow.
Отправлен: 12.07.2007, 19:52
Вопрос задала: Ласточка (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Denisss

Здравствуйте, Ласточка!

Приблизительные решения первых трех задач приведены в приложении.

Если я правильно понял, то в первой задаче размерность массива В такая же, как и у массива А.

Во второй задаче можно, вместо случайного заполнения массива, попросить пользователя ввести первый столовый прибор (ложка/вилка).

В третьей задаче решено было сделать так:
Если отрезок нечетной длины (например, 1, 2, 1), то средняя цифра сравнивается сама с собой.
Т.е. 1, 2, 3, 2, 1 будет принято за нужный отрезок.
Если же нечетные отрезки нужно пропускть, то измените строчку
while (i <= j) do

на
while (i < j) do

Удачи!

Приложение:

Ответ отправил: Denisss (статус: Профессионал)
Россия, Москва
WWW: Хлама много, по сути ничего...
----
Ответ отправлен: 13.07.2007, 00:02
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо за предоставленные решения, Denisss! Особенно, за то, что учли мои пожелания относительно способов решения 1й и 2й задачи с циклом While. Вы мне очень помогли!

Отвечает: Дмитрий С.
Здравствуйте, Ласточка!
Вот набросал в блокнотике решение первой задачки. На правильность не проверял за отсутствием компилятора.

var MS, MS_2: array [1..k] of integer;
ch, count: integer;

function Find_MAx(n: integer): integer;
var max: integer;
begin
max := a[1];
for a:=2 to n do
if k[a]>max then max:= k[a];
Find_Max := 2*max;
end;

begin
// заполнение массива MS

for count:=1 to k do
MS_2[count] := Find_MAx(MS[count]);

end.

С ув. SHERRY.
---------
Наши программисты самые программистые программисты!..
Ответ отправил: Дмитрий С. (статус: 2-ой класс)
Ответ отправлен: 14.07.2007, 11:47

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

4-я задача.
Из масиива А можно получить массив В, путем перестановки элементов массива А, только когда номинал элементов и их количество будут совпадать в обоих массивах.
Т.е. из слова "АВВА" можно составить слово "ВАВА", но невозможно получить "АВАС".
Смотрите приложение.
Удачи!

Приложение:

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

Ответ отправил: Зенченко Константин Николаевич (статус: Практикант)
Ответ отправлен: 15.07.2007, 19:37


Вопрос № 94.954
Уважаемые эксперты! Помогите, пожалуйста, решить 3 задачи.:
1. Дан массив из N целых чисел и число М (М<=N). Для каждого участка из М стоящих рядом элементов вычислить значение суммы четных отрицательных элементов этого участка.
Например, N=6, M=3, а массив состоит из следующих элементов:
5, -4, -2, 4, -3, -5.
Существуют следующие участки из М стоящих рядом элементов:
5, -4, -2; -4, 2, 4; -2, 4, 3; 4, -3, 5. Сумма четных отрицательных элементов в этих участках равна соответственно -6; -4; -2; 0.
2. Задан массив целых чисел А(n). Найти число элементов в самой длинной последовательности подряд идущих элементов массива, равных нулю.
Пример:
Исходный массив: 2, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0, 0
Результат: Число элементов в максимальной подпоследовательности – 4
3. Дан одномерный массив целых чисел. Определить, есть ли в массиве последовательность идущих подряд элементов, сумма которых равна заданному числу.

Если вас не затруднит, то в наиболее упрощённом варианте и с пояснениями. Заранее большое спасибо. Swallow.
Отправлен: 12.07.2007, 20:14
Вопрос задала: Ласточка (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Coupler
Здравствуйте, Ласточка!
В первой задаче у Вас какая-то ошибка в условии: массив 5, -4, -2, 4, -3, -5, а второй участок -4, 2, 4, и сумма в этом участке -4, а должна быть -6. Но задачи это не меняет. Общий комментарий ко всем задачам: индексация динамических массивов начинается с 0, т.е. первый элемент - a[0].

Приложение:

Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 13.07.2007, 06:46
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо за ответ, Coupler! Мне было очень важно узнать, как решаются эти задачи. Вы мне очень помогли!


Вопрос № 94.963
Помогите решить пожалуйста, из головы просто вылетело как её решать):
Вывести на экран цифру, наиболее часто встречающуюся в массиве.
Отправлен: 12.07.2007, 21:19
Вопрос задал: Quic (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

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

Cмотрите приложение.
Удачи!

Приложение:

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

Ответ отправил: Зенченко Константин Николаевич (статус: Практикант)
Ответ отправлен: 12.07.2007, 21:50

Отвечает: Градов Юрий Михайлович
Здравствуйте, Quic!

Ответ удален, по просьбе эксперта
и помещен для обсуждения в ветку форума "О деятельности экспертов и работе портала/Удаленные ответы для обсуждения".

-~= Gh0stik =~-
---------
Глаза боятся - руки делают!
Ответ отправил: Градов Юрий Михайлович (статус: Студент)
Ответ отправлен: 12.07.2007, 21:55


Вопрос № 94.965
снова привет! Срочно need help! Нужно написать прогу, которая имитирует движение земли вокруг солнца и движение луны вокруг земли одновременно. Планеты в виде окружностей, и должно быть движение. Заранее спасибо!
Отправлен: 12.07.2007, 21:43
Вопрос задал: Deimos25 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Deimos25!

Вот держите ...

uses graph,crt;
const t=pi/150; tt=pi/5;
var x,y,rs,re,rm,xe,ye,xm,ym,k,d:integer;
alf:real;
znak:boolean;
grDriver,grMode,ErrCode: Integer;

procedure povorot(alf:real; x0,y0,xs,ys:integer; var xn,yn:integer);
begin
xn:=x0+round((xs-x0)*cos(alf))+round((y0-ys)*sin(alf));
yn:=y0+round((xs-x0)*sin(alf))-round((y0-ys)*cos(alf));
end;

begin
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
ErrCode:=GraphResult;
x:=250;
y:=250;
rs:=40; re:=20; rm:=5;
d:=5000;
If ErrCode <> grOk then begin write('Error!!!');exit;end
else
begin
znak:=true;
setbkcolor(0);SetLineStyle(0, 0, 1);
{===sun===}
setcolor(yellow); circle(x,y,rs);
setfillstyle(1,yellow);
PieSlice(x, y, 0, 360, rs);

alf:=0;
xe:=x+150; ye:=y;
xm:=xe+40; ym:=y;
repeat
{===earth===}
setcolor(green); circle(xe,ye,re);
setfillstyle(1,green);
PieSlice(xe, ye, 0, 360, re);
delay(d);
setcolor(0); circle(xe,ye,re);
setfillstyle(1,0);
PieSlice(xe, ye, 0, 360, re);

{===moon===}
setcolor(white);
circle(xm,ym,rm);
setfillstyle(1,white);
PieSlice(xm, ym, 0, 360, rm);
delay(d);
setcolor(0);
circle(xm,ym,rm);
setfillstyle(1,0);
PieSlice(xm, ym, 0, 360, rm);

povorot(t,x,y,xe,ye,xe,ye);
povorot(tt,xe,ye,xm,ym,xm,ym);
until keypressed;
closegraph;
end;
end.


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

Отвечает: Дмитрий С.
Здравствуйте, Deimos25!

Ответ удален, поскольку пустой
и помещен для обсуждения в ветку форума "О деятельности экспертов и работе портала/Удаленные ответы для обсуждения".

-~= Gh0stik =~-

---------
Наши программисты самые программистые программисты!..
Ответ отправил: Дмитрий С. (статус: 2-ой класс)
Ответ отправлен: 13.07.2007, 18:45


Вопрос № 95.042
Уважаемые эксперты! Помогите, пожалуйста, решить задания:
1. Дан фрагмент алгоритма, где используются строки s и s1, целые переменные i, j, k, а также массив целых чисел msv, максимальное количество элементов которого равно длине строки.

k:=0;
для i от 1 до длина(s)
начало цикла
если (s[i]>'d') и (s[i]<'k')
то k:=k+1;
msv[k]:=i;
конец ветвления
конец цикла
s1:='';
для i от 1 до k
начало цикла
s1:=s1+s[msv[i]];
конец цикла
для j от 1 до msv[1]-1
начало цикла
s1:=s1+s[j];
конец цикла
для i от 1 до k-1
начало цикла
для j от msv[i]+1 до msv[i+1]-1
начало цикла
s1:=s1+s[j];
конец цикла
конец цикла
для j от msv[k]+1 до длина(s)
начало цикла
s1:=s1+s[j];
конец цикла
вывести(s1);

Сформулировать задачу, которую решает данный фрагмент.
Проверить и показать результат его исполнения (указать, что будет выведено) для строк:
1) s = ‘abcdefhklmqjw’
2) s = ‘paofilnbmj’
3) s = ‘qwrtyuo’
2. Дан фрагмент алгоритма, где используются массив a из 2*n целых чисел, в котором первоначально заполнено не более половины элементов, остальные элементы – нули, массив vs, в котором максимально может быть 2*n целых чисел, а также целые переменные i, j, k.

k:=0;
для i от 1 до n
начало цикла
если a[i]<>5
то vs[i+k]:=i
иначе
vs[i+k]:=i;
k:=k+1;
a[n+k]:=99;
vs[i+k]:=n+k;
конец ветвления
конец цикла
для j от 1 до n+k
начало цикла
вывести(a[vs[j]]);
конец цикла

Сформулировать задачу, которую решает данный фрагмент.
Проверить и показать результат его исполнения (указать, что будет выведено, и состояние массивов а и vs) для массивов (указаны первые n элементов):
1) а = [5, 1, 12, 2, 5, 6, 5, 5, 12]
2) а = [4, 5, 6, 7, 5, 3, 5, 5, 5, 2, 1, 5]
3) а = [-32, 0, 1, 2, 0, 4, 6]
3. Дан фрагмент алгоритма, где используются строка s, массив msv, максимальное количество элементов в котором в три раза больше исходной длины строки s, и целые переменные d, i, j, n.

d:=0;
n:=длина(s);
для i от 1 до n
начало цикла
если не((s[i]>'0') и (s[i]<'9'))
то msv[i+d]:=i
иначе s:=s+'**';
msv[i+d]:=длина(s)-1;
msv[i+d+1]:=i;
d:=d+2;
msv[i+d]:=длина(s);
конец ветвления
конец цикла
для j от 1 до длина(s)
начало цикла
вывести(s[msv[j]]);
конец цикла
вывести(s);

Сформулировать задачу, которую решает данный фрагмент.
Проверить и показать результат его исполнения (указать, что будет выведено, а также состояние строки s и массива msv) для строк:
1) s = ‘asd45kt8ac7’
2) s = ‘769402’
3) s = ‘awevbh’

Заранее большое спасибо! Swallow
Отправлен: 13.07.2007, 14:21
Вопрос задала: Ласточка (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Ласточка!

1.
Формулировка: Дана строка. Все символы строки, которые в латинском алфавите расположены между символами 'd' и 'k' перенести в начало строки.

Результаты:
1) s1='efhjabcdklmqw';
2) s1='fijpaolnbm';
3) s1='qwrtyuo';



2.
Формулировка: Дан массив целых чисел. После каждого числа 5 вставить число 99, результат вывести на экран.

Результаты:
1) a=[5, 1, 12, 2, 5, 6, 5, 5, 12]
vs=[1, 10, 2, 3, 4, 5, 11, 6, 7, 12, 8, 13, 9]
Полученный результат:
5 99 1 12 2 5 99 6 5 99 5 99 12

2) a=[4, 5, 6, 7, 5, 3, 5, 5, 5, 2, 1, 5]
vs=[1, 2, 13, 3, 4, 5, 14, 6, 7, 15, 8, 16, 9, 17, 10, 11, 12, 18]
Полученный результат:
4 5 99 6 7 5 99 3 5 99 5 99 5 99 2 1 5 99

3) a=[-32, 0, 1, 2, 0, 4, 6]
vs=[1, 2, 3, 4, 5, 6, 7]
Полученный результат:
-32 0 1 2 0 4 6



3.
Формулировка: К сожалению я так и не уловил суть.. :(, но единственное, что видно из результатов, что обработка проводиться для первых двух цифр, если они встречаются в текст.

Результаты:
1) msv=[1, 2, 3, 12, 4, 13, 14, 5, 15, 6, 7]
Полученный результат:
asd*4**5*kt
s='asd45kt8ac7********'

2) msv=[7, 1, 8, 9, 2, 10]
Полученный результат:
*7**6*
s='769402********'

3) msv=[1, 2, 3, 4, 5, 6]
Полученный результат:
awevbh
s='awevbh'



В приложении смотрите листинги полученных программ.

Good Luck!!!

Приложение:

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

Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 13.07.2007, 15:59
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо за ответ, Gh0stik! Вы мне очень помогли. Мне очень важно было знать как решаются эти задачи. Спасибо.

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Ласточка!
1) Дана строка. Сформировать новую строку в которой символы от 'd' и до 'k' расположенны в начале строки, остальные символы исходной строки дописать в порядке расположения.

3) Дана строка. Все цифры строки разместить между (возможно выделить или обозначить) символами "*".
Для 2-ой и 3-ей задач: порядок элементов в массиве(сторке) не менять.

Удачи!

Приложение:

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

Ответ отправил: Зенченко Константин Николаевич (статус: Практикант)
Ответ отправлен: 13.07.2007, 17:48
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо за ответы, Зенченко Константин Николаевич! Мне важно было знать как решаются эти задачи. Вы мне очень помогли!


Вопрос № 95.072
Здравствуйте Спасибо заранее, за то что уделили мне время.
С чего посоветуете начать? В программирований, на языке паскаль.
Практический, с чего начать? Спасибо ещё раз!
Отправлен: 13.07.2007, 18:08
Вопрос задал: Cool Sal SmoG (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

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

Книги по паскалю
и
компилятор Ни в коем случае не ставьте себе ни Turbo Pascal, ни Borland Pascal, потому что в Windows 2000 и выше они работают крайне глючно. Лучше скачайте и установите FreePascal (http://www.freepascal.org), который работает более стабильно и является нормальным 32-ух разрядным (под стать операционке) компилятором. Исправление внес эксперт sir henry
Удачи!
---------
И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Практикант)
Ответ отправлен: 13.07.2007, 18:20
Оценка за ответ: 5
Комментарий оценки:
Спасибо,что уделили время и ответили на мой вопрос спасибо ещё раз.

Отвечает: Дмитрий С.
Здравствуйте, Cool Sal SmoG!
Приобрети перочку букварей по Паскалю, поставь оболочку Борланд Дельфи и пробуй играться в консоли. Удачи!!!
---------
Наши программисты самые программистые программисты!..
Ответ отправил: Дмитрий С. (статус: 2-ой класс)
Ответ отправлен: 13.07.2007, 18:37


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.53 beta от 09.07.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное