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

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


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

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

Выпуск № 316
от 07.03.2007, 21:13

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


Вопрос № 76981: Задача: Реализуйте программу перебора сочетаний. Внесите необходимые изменения для того, чтобы программа правильно генерировала всевозможные сочетания с повторениями....
Вопрос № 77084: Здравствуйте эксперты! Помогите мне пожалуйста написать программу для сортировки строк двумерного массива по первому элементу или хотя бы косок алгоритма. ...
Вопрос № 77224: Как решить задачу? В файле, содержащем одномерные массивы вещественных чисел, найти номер компоненты с максимальной суммой элементов. Заранее спасибо...
Вопрос № 77393: помогите додумать задачу. Надо в файле заменить пробелы на "*"(это я сделала) и удалить строки содержащие цифры(это я не знаю как сделать). Вот что я сделала: Uses crt; var a,b:text; i:byte; s:string; k:integer...

Вопрос № 76.981
Задача:
Реализуйте программу перебора сочетаний. Внесите необходимые изменения для того, чтобы программа правильно генерировала всевозможные сочетания с повторениями.
Отправлен: 27.02.2007, 15:01
Вопрос задал: SunFrol (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Артём1983
Здравствуйте, SunFrol!
*****
Ответ удален и перенесен в ветку форума «О деятельности экспертов и работе портала – Удаленные ответы для обсуждения»
*****
Климова М.
Ответ отправил: Артём1983 (статус: 1-ый класс)
Ответ отправлен: 27.02.2007, 21:52

Отвечает: Яна
Здравствуйте, SunFrol!
Т.е. Вам нужны соченания с учетом перестановок или без учета оных
Задача очень простая:
1) Без учета перестановок:
m вложенных циклов, в каждом из которых Вы проверяете неравенство вложенного индекса верхним.
2) С учетом перестановок
m вложенных циклов, во втором индекс от значения индекса+1 первого цикла до конца, в третьем от значения индекса+1 второго цикла до конца и т.д.
Реализовать неизвестное заранее количество циклов можно с помощью рекурсии.
Ответ отправила: Яна (статус: 9-ый класс)
Ответ отправлен: 28.02.2007, 08:56


Вопрос № 77.084
Здравствуйте эксперты! Помогите мне пожалуйста написать программу для сортировки строк двумерного массива по первому элементу или хотя бы косок алгоритма.
Отправлен: 28.02.2007, 01:15
Вопрос задал: Virust30 (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

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

Поскольку не указано условие сортировки, то привожу пример сортировки по убыванию первых элементов строк.

Смотрите приложение...

Good Luck!!!

Приложение:

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

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

Отвечает: Яна
Здравствуйте, Virust30!
Сортировка почти такая же как и для одномерного, т.е. сраниваете Вы первые элементы, а меняете местами целые столбцы.
Ответ отправила: Яна (статус: 9-ый класс)
Ответ отправлен: 28.02.2007, 08:58

Отвечает: Verena
Здравствуйте, Virust30!

Можно другим методом - выбор минимального (если по возрастанию) или максимального (если по убыванию) элемента.

for i := 1 to n-1 do
begin
r := i; {запоминается текущая строка}
for j := i+1 to n do
if a[r,1] > a[j,1] then r := j; {если находится ментший элемент, запоминается новый номер строки (для обратной сортировки менять знак)}
for k:=1 to m do {обмен строк}
begin
b:= a[r, k];
a[r, k]:= a[i, k];
a[i, k]:= b;
end;
end

Удачи)
---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 5-ый класс)
Ответ отправлен: 28.02.2007, 14:43


Вопрос № 77.224
Как решить задачу?
В файле, содержащем одномерные массивы вещественных чисел, найти номер компоненты с максимальной суммой элементов.
Заранее спасибо
Отправлен: 28.02.2007, 21:54
Вопрос задал: Виктория (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 10)

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

Из условия следует что файл типизированный следовательно описать его можно таким образом:

type mas=array[1..n] of real;
var f:file of mas;


Соответственно для нахождения номера компонента нам необходимо произвести такие действия:
1) Находим сумму элементов массива, который находиться в первой компоненте и предполагаем что она и есть максимальна и запоминаем номер 1.

2) Далее в цикле до конца файла находим соответствующие суммы и если полученная сумма больше максимальной заменяем ее значение на новое и запоминаем номер компоненты.

3) Выводим полученный результат на экран.

Вот схематическая реализация алгоритма:

const n=10;
type mas=array[1..n] of real;
var f:file of mas;
i,j,mxn:integer;
ms:mas;
mx,s:real;
begin
assign(f,'file.dat');
reset(f);
read(f,ms);
s:=0;
for i:=1 to n do s:=s+ms[i];
mx:=s; mxn:=1;
while not eof(f) do
begin
read(f,ms);
s:=0;
for i:=1 to n do s:=s+ms[i];
if mx < s then begin mx:=s; mxn:=filepos(f)+1;end;
end;
writeln(mxn);
end.


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


Вопрос № 77.393
помогите додумать задачу. Надо в файле заменить пробелы на "*"(это я сделала) и удалить строки содержащие цифры(это я не знаю как сделать).
Вот что я сделала:
Uses crt;
var a,b:text;
i:byte;
s:string;
k:integer;
begin
clrscr;
write('Input file name:');
readln(s);
assign(a,s);
{$I-}
reset(a);
{$I+}
if IOResult<>0 then begin
writeln('File not found/ Press Enter for Exit...');
readln;
Halt(1);
end;
clrscr;
write('Input new file name:');
readln(s);
assign(b,s);
rewrite(b);
while not EOF(a) do
begin
readln(a,s);
for i:=1 to length(s) do
if s[i]=' ' then s[i]:='*';
writeln(b,s)
end;
close(a);
close(b);
end.
помогите плиз!
Отправлен: 01.03.2007, 21:24
Вопрос задал: Виктория (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Присяжнюк Анатолий Васильевич
Здравствуйте, Виктория!
В том же цикле где меняете пробелы попробуйте преобразовать символ в цифру.
Если это хотя бы раз получилось - то эту строку не пишите в новый файл.
Вы уже самостоятельно все почти сделали...
Ответ отправил: Присяжнюк Анатолий Васильевич (статус: 2-ой класс)
Ответ отправлен: 01.03.2007, 21:31

Отвечает: Verena
Здравствуйте, Виктория!

В том же цикле, где считываете каждую строку файла проверяйте, нет ли цифры. Все цифры можно описать как set
var chisla: set of char; {объявление множества}
begin
...
chisla:= ['0'..'9']; {присвоение множеству значений}
...
if s[i] in chisla then... {проверка на принадлежность к множеству}

Если это условие выполняется, то строку в новый файл не пишем. Можно, например, использовать continue, переходя на следующую итерацию цикла.

---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 5-ый класс)
Ответ отправлен: 01.03.2007, 22:15

Отвечает: Bingo
Здравствуйте, Виктория!
Есть и другой способ:
Нужно смотреть, является ли символ цифрой в кодировочной таблице ASQII
Цифры 0..9 располагаются между 48..57 позициями. Вот как нужно проверять:
if (ord(s[i])>47)and(ord(s[i])<58) then ...
Вообщем, подправил я Ваш исходник, проверил, теперь все работает.
Удачи!

Приложение:

---------
Все получится!

Ответ отправил: Bingo (статус: 1-ый класс)
Ответ отправлен: 01.03.2007, 22:45


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.45 beta от 20.02.2007
Яндекс Rambler's Top100

В избранное