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

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


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

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

Выпуск № 354
от 27.04.2007, 15:05

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


Вопрос № 83626: Доброе время суток! Помогите глупому студенту! №1 Вводятся N целых чисел, из них надо найти самое большое и поменять его местами с первым. №2 Вводятся N целых чисел, из них надо найти самое большое и поменять его местами с первым. Найти...
Вопрос № 83675: люди помогите срочно надо решить задачу. Данны 2 текстовых файла.Нужно записать в 3 текстовый файл только те строки которые есть в первом,но нет во втором....

Вопрос № 83.626
Доброе время суток! Помогите глупому студенту!
№1 Вводятся N целых чисел, из них надо найти самое большое и поменять его местами с первым.

№2 Вводятся N целых чисел, из них надо найти самое большое и поменять его местами с первым. Найти из оставшихся самое большое и поменять его местами со вторым.

Решать надо с помощью массивов. Задачи нужны к 24.04.07 HELP!!!!!!
Отправлен: 22.04.2007, 00:46
Вопрос задал: Peeny (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Устинов С.Е.
Здравствуйте, Peeny!

№1.
const n=10;
var a:array[1..n] of integer;
i,max,t:integer;
begin
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
max:=1;
for i:=2 to n do if a[i] > a[max] then max:=i;
t:=a[1]; a[1]:=a[max]; a[max]:=t;
end.

№2.
const n=10;
var a:array[1..n] of integer;
i,max,t:integer;
begin
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
max:=1;
for i:=2 to n do if a[i] > a[max] then max:=i;
max:=2;
for i:=3 to n do if a[i] > a[max] then max:=i;
t:=a[2]; a[2]:=a[max]; a[max]:=t;
end.

Удачи!
---------
Ждешь квалифицированного ответа? Задай правильно вопрос!
Ответ отправил: Устинов С.Е. (статус: Практикант)
Ответ отправлен: 22.04.2007, 00:57
Оценка за ответ: 5

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

Можно решить так:

const N=10; {размерность массива}
var a: array [1..N] of integer;
i, imax, buf: integer;
begin
for i:=1 to N do {считываем массив}
readln (a[i]);
imax:=1; {принимаем первый за максимум}
for i:=2 to N do
if a[i]>a[imax] then imax:=i; {если текущий больше, запоминаем}
buf:= a[1]; {обмен элементов через буфер}
a[1]:= a[imax];
a[imax]:=buf;
{для первой задачи здесь можно поставить вывод и end с точкой}
{для второй задачи оставить всё решение}
imax:=2; {принимаем второй за максимум}
for i:=3 to N do
if a[i]>a[imax] then imax:=i; {если текущий больше, запоминаем}
buf:= a[2];
a[2]:= a[imax];
a[imax]:=buf;

for i:=1 to N do {вывод}
writeln (a[i]);
end.
---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 10-ый класс)
Ответ отправлен: 22.04.2007, 01:06
Оценка за ответ: 4


Вопрос № 83.675
люди помогите срочно надо решить задачу.
Данны 2 текстовых файла.Нужно записать в 3 текстовый файл только те строки которые есть в первом,но нет во втором.
Отправлен: 22.04.2007, 14:08
Вопрос задал: Zevs (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Zevs!
Пример в приложении. Правда такой алгоритм очень медленный и требует оптимизации, но работать, конечно, будет. Его недостаток в том, что для каждой строки второй файл просматривается полностью. Т.е. если в 1-ом файле 10 строк, то второй файл будет пройден 10 раз. Решение - считать второй файл один раз (например в массив), и затем сравнивать с элементами массива. Удачи!

Приложение:

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

Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Помощь, советы, обмен опытом.
ICQ: 286837644
----
Ответ отправлен: 22.04.2007, 14:27
Оценка за ответ: 5
Комментарий оценки:
Здравствуйте, Ерёмин Андрей!
Я благодарю вас за быстрый и развернутый ответ на интересуюший меня вопрос.

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

Приложение:

Ответ отправил: Е.В.Гений (статус: 3-ий класс)
Ответ отправлен: 23.04.2007, 14:49
Оценка за ответ: 4
Комментарий оценки:
Здравствуйте, Е.В.Гений!
да действительно,предложеное вами решение сложнее.Но ведь если его довести до ума то можно будет проверять большие файлы быстро.


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

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

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

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

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

В избранное