помогите плиз , ваще ах00еть задание Я такого никогда не делал, с меня жига семки
ps моя первая лаба О_О
в оперативной памяти имеется незаполненная таблица слов (строковый массив) длиной N ,
N > 10 . Из текстового файла поочереди считываются слова в количестве , большем 10. Составить прогу , которая выполняет поиск слова в таблице. И, если слово не неайдено, добавляет его
п1) разработать две процедуры или функции - решение задачи , реализующие алгоритмы поиска перебором и бинарного поиска. В ходе поиска должен выполняться подсчет количества сравнений исходного слова с таблицей
п2) Исследовать поведение алгоритма путем многократного запуска программы ; каждый запуск сопровождается перемешиванием текстового набора слов
п3) В отчете привести графики зависимости среднего числа сравнений от степени заполнения таблицы для каждого алгоритма . Подсчитать и привести среднее число сравнений по всем словам для каждого алгоритма.
Примечание: при выполнении бинарного поиска слова в таблице должны быть упорядочены лексикографически
wtf?
в оперативной памяти имеется незаполненная таблица слов (строковый массив) длиной N ,
N > 10 . Из текстового файла поочереди считываются слова в количестве , большем 10. Составить прогу , которая выполняет поиск слова в таблице. И, если слово не неайдено, добавляет его
п1) разработать две процедуры или функции - решение задачи , реализующие алгоритмы поиска перебором и бинарного поиска. В ходе поиска должен выполняться подсчет количества сравнений исходного слова с таблицей
В оперативной памяти имеется таблица слов (строковый массив). Поступает некоторое слово. Узнать, есть ли слово в таблице.
1. Разработать 2 процедуры (или функции) решения задачи «Поиск слова в таблице» в соответствии с алгоритмами: поиск перебором, бинарный (двоичный) поиск.
2. Отладить процедуры (функции) с помощью тестового набора слов в количестве n , где n>10 – размер таблицы.
Примечание 1. Таблица в алгоритме поиск перебором заполняется динамически по мере поступления слов.
Примечание 2. Таблица в алгоритме бинарный поиск должна быть заполнена предварительно словами, и слова в таблице должны быть упорядочены лексикографически.
Примечание 3. Тестовый набор слов для отладки и сбора статистики удобно размещать в текстовом файле, в этом случае при каждом запуске программы не нужно будет набирать слова заново
я не силён в программировании,строковый массив это просто строка?если да тогда тебе нужно сначала копировать строковый массив в другую переменную, считать слово,найти в массиве ближайший пробел,сравниваем считанное слово с тем что стоит до пробела,если одинаково переключаемся на следующее слово с тхт файла,если нет - удаляем пробел вместе с тем что стоит до него и повторяем процедуру,пока не закончатся символы в строке,а потом добавляем слово в оригинал массива и переключаем на следующее слово в тхт файле
#29 это я в инете решения нет
#35 да не , просто после школьной программы для меня это жестко ; мы даже string тип не проходили ... уж куда там считывать из txt . с числами работали онли
var fin:text
n:integer;
slovo:string;
naydeno:integer;
bla-bla
// kstate ne yveren 4to v "var" nado pisat v takoi forme, posmotri)
begin
naydeno:=0;
assign(fin,"input.txt");
reset(fin) // ili rewrite(fin) ya yje ne pomny, po4itay
readln(fin,n);
for i:=1 to n do
begin
readln(fin,s[i]); // ny i nado vverhy obyavit masiv strok, tam 4to-to tipo var s:array[1..100] of string ya yje zabil
end
writeln('vvedite slovo dlya poiska') // ili tam nado pisat ne odny skobky: ' a dve: " ya ne pomny
readln(slovo);
for i:=1 to n do
if s[i]=slovo then naydeno:=1;
if naydeno=0 then s[n+1]:=slovo; //esli nety slova v masive, to dobavlyaem ego
close(fin);
End.
ps 9 klass PASCAL
psss fin - eto prosto nazvanie fayla, mojno pisat lyboe, NO y tebua doljen but input.txt vmeste s programmoi
Programm labaleda; var n,z,x,v,h : Integer; a,s,d,t : String; f : Text; // текстовый файл begin // старт Assign(f, asdf.txt); // присваиваем текстовую переменную k := 'slovo1 slovo2 slovo3'; // строковый массив O_O d := k; // копируем строковый массив h := length(d); // определяем его длину while length(g) > 0 do // (1) begin g := readln(f); // считываем строку из файла v := length (g) // определяем её длину while length(g) > 0 do // пока не закончится строка которую прочли из файла выполняем (2) begin While Pos(' ', g) > 0 Do // пока находятся пробелы в строке из файла делаем (3) begin z :=Pos (' ', g) // находим каким стоит пробел в строке из файла a := Copy (g,1,z-1); // копируем слово x :=Pos(' ', d) // определяем каким стоит пробел в массиве t := Copy (d,1,x-1); // копируем слово для сравнения из массива while at or Length(d) =0 do // пока слова не одинаковы или не закончится массив выполняем (4) begin d := Copy (d,x+1,h-x); // копируем массив без первого слова x :=Pos(' ', d) // определяем позицию пробела в массиве h := length(d); // определяем длину получившегося массива t := Copy (d,1,x-1); // копируем следующее слово для проверки end // (/4) if Length(d) = 0 then // если длина оставшихся слов в массиве 0 то begin g := Copy(g,z+1,v-z); // убираем из строки файла первое слово d := k // заново копируем его end else // если нет begin k := k+t // добавляем в строковый массив слово d := k // заново копируем его g := Copy(g,z+1,v-z); // убираем из строки файла первое слово end; end; // (/3) end; // (/2) d := k; // заново копируем массив end; // (/1) end. // конец
Ты хочешь чтоб за тебя все делали?
Алгоритм расписать подробно?
Конкретно, что есть и конкретные по этому вопросы, тогда, может, получишь ответ.
А пока иди свободной кассой работать, мудило, таких погромистов и так хватает.
в #51 в конце нужно вывести переменную k или d
также не сделаны проверки на размер слова(сам думаю сможешь добавить,я за364лся уже,бошка болит)
и количество сравнений или как там
вот инфа
бледь начал делфи учить когда нужно было прогу для голосования на естарс за м5 написать,и то редко учу,вообще них7я не шарю
вот поступил в технарь на прогера,думаю научат
зы "Примечание 2. Таблица в алгоритме бинарный поиск должна быть заполнена предварительно словами, и слова в таблице должны быть упорядочены лексикографически." вообще хз что это
#57 Programm labaleda; var n,z,x,v,h,j : Integer; a,s,d,t : String; f : Text; // текстовый файл begin // старт Assign(f, asdf.txt); // присваиваем текстовую переменную m := 'slovo1 slovo2 slovo3'+#13#10+
'slovo4 slovo5 slovo6'; // строковый массив O_O k := readln(m) // читаем строку из массива d := k; // копируем строковый массив h := length(d); // определяем его длину j := 0 // количество сравнений while length(g) > 0 do // (1) begin g := readln(f)+' '; // считываем строку из файла v := length (g) // определяем её длину while length(g) > 0 do // пока не закончится строка которую прочли из файла выполняем (2) begin While Pos(' ', g) > 0 Do // пока находятся пробелы в строке из файла делаем (3) begin z :=Pos (' ', g) // находим каким стоит пробел в строке из файла a := Copy (g,1,z-1); // копируем слово x :=Pos(' ', d) // определяем каким стоит пробел в массиве t := Copy (d,1,x-1); // копируем слово для сравнения из массива j := j+1 // количество сравнений + 1 while at or Length(d) =0 do // пока слова не одинаковы или не закончится массив выполняем (4) begin // d := Copy (d,x+1,h-x); // копируем массив без первого слова x :=Pos(' ', d) // определяем позицию пробела в массиве h := length(d); // определяем длину получившегося массива t := Copy (d,1,x-1); // копируем следующее слово для проверки j := j+1 // количество сравнений + 1 end // (/4) if Length(d) = 0 then // если длина оставшихся слов в массиве 0 то begin g := Copy(g,z+1,v-z); // убираем из строки файла первое слово d := k // заново копируем его end else // если нет begin if length(t) > 0 then // проверка на размер begin k := k+t // добавляем в строковый массив слово end d := k // заново копируем его g := Copy(g,z+1,v-z); // убираем из строки файла первое слово end; end; // (/3) k := readln(m) // читаем строку из массива end; // (/2) d := k; // заново копируем массив end; // (/1) end. // конец
#63 Это все хуиня, не парься.
Юзай алгоритм Крика, у него ч0тко. Хотя б действительно массив) Только синтаксис он неособо соблюдал, и не все переменные обозначил. В функцию код закинь и дорабатывай.
А у экстрема код на поиск слова по тексту, это сложнее и твоему заданию не соответствует.
В языке Паскаль, как и в большинстве языков программирования, предусмотрены средства, позволяющие оформлять вспомогательный алгоритм как подпрограмму. Это бывает необходимо тогда, когда какой-либо подалгоритм неоднократно повторяется в программе или имеется возможность использовать некоторые фрагменты уже разработанных ранее алгоритмов. Кроме того, подпрограммы применяются для разбиения крупных программ на отдельные смысловые части в соответствии с модульным принципом в программировании.
Для использования подалгоритма в качестве подпрограммы ему необходимо присвоить имя и описать алгоритм по правилам языка Паскаль. В дальнейшем, при необходимости вызвать его в программе, делают вызов подпрограммы упоминанием в нужном месте имени соответствующего подалгоритма со списком входных и выходных данных. Такое упоминание приводит к выполнению входящих в подпрограмму операторов, работающих с указанными данными. После выполнения подпрограммы работа продолжается с той команды, которая непосредственно следует за вызовом подпрограммы.
В языке Паскаль имеется два вида подпрограмм - процедуры и функции.
Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными - передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы).
Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими.
Описание и вызов процедур и функций
Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур.
Формат описания процедуры имеет вид:
procedure имя процедуры (формальные параметры);
раздел описаний процедуры
begin
исполняемая часть процедуры
end;
Формат описания функции:
function имя функции (формальные параметры):тип результата;
раздел описаний функции
begin
исполняемая часть функции
end;
Формальные параметры в заголовке процедур и функций записываются в виде:
var имя праметра: имя типа
и отделяются друг от друга точкой с запятой. Ключевое слово var может отсутствовать (об этом далее). Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа. При описании параметров можно использовать только стандартные имена типов, либо имена типов, определенные с помощью команды type.Список формальных параметров может отсутствовать.
Вызов процедуры производится оператором, имеющим следующий формат:
имя процедуры(список фактических параметров);
Список фактических параметров - это их перечисление через запятую. При вызове фактические параметры как бы подставляются вместо формальных, стоящих на тех же местах в заголовке. Таким образом происходит передача входных параметров, затем выполняются операторы исполняемой части процедуры, после чего происходит возврат в вызывающий блок. Передача выходных параметров происходит непосредственно во время работы исполняемой части.
Вызов функции в Турбо Паскаль может производиться аналогичным способом, кроме того имеется возможность осуществить вызов внутри какого-либо выражения. В частности имя функции может стоять в правой части оператора присваивания, в разделе условий оператора if и т.д.
Для передачи в вызывающий блок выходного значения функции в исполняемой части функции перед возвратом в вызывающий блок необходимо поместить следующую команду:
имя функции := результат;
При вызове процедур и функций необходимо соблюдать следущие правила:
количество фактических параметров должно совпадать с количеством формальных;
соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.
Заметим, что имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти. Кроме того, все формальные параметры являются временными переменными - они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.
Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.
var x,y,m,n: integer;
procedure MaxNumber(a,b: integer; var max: integer);
begin
if a>b then max:=a else max:=b;
end;
begin
write(''''Введите x,y '''');
readln(x,y);
MaxNumber(x,y,m);
MaxNumber(2,x+y,n);
writeln(''''m='''',m,''''n='''',n);
end.
Аналогичную задачу, но уже с использованием функций, можно решить так:
var x,y,m,n: integer;
function MaxNumber(a,b: integer): integer;
var max: integer;
begin
if a>b then max:=a else max:=b;
MaxNumber := max;
end;
begin
write(''''Введите x,y '''');
readln(x,y);
m := MaxNumber(x,y);
n := MaxNumber(2,x+y);
writeln(''''m='''',m,''''n='''',n);
end.
#77 у тя там правильно почти все. Нормальная такая процедура поиска слова по тексту) Быдлокод мальца , но пофиг, лаба же.
А ему надо сделать поиск по массиву, т.е. формат файла будет array[1..1kk] of string. С массивом сравнивать проще.
А процедура будет типа такой:
a :=1; //счетчик новых слов
for i=1 to n do //n и m - количество непустых элементов в массиве и тхт-файле соответственно.
for j=1 to m do
begin
if (massiv[i] = txtfile(j-1)) then //не очень помню, как в Паскале файлы обсчитываются, в Дельфе с нулевой строки, потому -1. txtfile - внешний текстовый файл. Сравниваем каждый элемент с каждым.
begin
massiv[n+a] := txtfile[j];
inc(a);
end;
И все, в принципе. Забиваешь таблицу программно, текстовый файл создаешь. Считаешь количество элементов, потом вызываешь эту процедурку. И все готово, недостающие слова из файла забьются в таблицу в проге.
#81 Давай сам. Вот тебе здесь три варианта, из них делай один.
Если ща с первой залажаешь, то дальше совсем-совсем тяжко будет, фэйл за фэйлом ждет тебя.
пацаны все х7йня , давайте по новой.. везде все копался .. но это не то что надо
зы
Там не нужно какое-то конкретное слово искать. Нужно, что бы из файла слово доставалось, проверялось есть в таблице(тхт файло) или нет, если нет, то добовлялось в таблицу, если это возможно. По всем выводить сообщения(добавлено, найдено или не найдено, но добавить нельзя)