Вопрос № 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 Комментарий оценки: Здравствуйте, Е.В.Гений! да действительно,предложеное вами решение сложнее.Но ведь если его довести до ума то можно будет проверять большие файлы быстро.