Форум программистов, компьютерный форум CyberForum.ru

Сравнение тхт фаилов - C++

Восстановить пароль Регистрация
 
sipsmail
Сообщений: n/a
15.11.2013, 16:18     Сравнение тхт фаилов #1
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
type 
starray=array[1..15] of string;
var
i:integer;
m:char; 
a:starray;
sl:text;
{Алгоритм бинарного поиска}
procedure b (s:starray);
var
n,k,c,i:integer; 
st:string; 
t:text;
begin
assign(t,'test.txt');
reset(t);
while not eof(t) do
begin
i:=1;
readln(t, st);
n:=1; k:=15; c:=(n+k) div 2;
{Алгоритм сравнения строк, чтобы находилась первая строка, округление в меньшую сторону и в большую для нахождения последней строки}
while (st<>s[c]) and (c>n)and (c<k)do
begin
i:=i+1;
if s[c]>st then
begin
k:=c;
c:=(n+k) div 2;
end
else
begin
n:=c;
c:=(n+k) div 2 + (n+k) mod 2;
end;
end;
if st=s[c]
then writeln (st,' строка найдена количество сравнений: ', i)
else writeln (st,' строка не найдена количество сравнений: ', i);
end;
end;
{Алгоритм поиска перебором}
procedure p (s:starray);
var
i:integer;
t:text;
st:string;
begin
assign (t,'test.txt');
reset(t);
while not eof(t) do
begin
readln(t, st);
i:=1;
while (i<15) and (st<>s[i]) do
i:=i+1;
if st=s[i]
then writeln (st,' строка найдена количество сравнений: ', i)
else writeln (st,' строка не найдена количество сравнений: ', i);
end;
end;
{Основная программа}
begin
writeln ('Выберите способ поиска, "B" - бинарный поиск, "P" - поиск перебором');
assign(sl,'sorted_list.txt');
reset(sl);
readln(m);
for i:=1 to 15 do
readln(sl, a[i]);
if m='P'
then
p (a)
else 
b (a);
end.
Выше написан код на паскале , нужно переписать на Си (желательно с одинаковым алгаритмом).
Задание: Массив длины 15 заполнен строками, упорядоченными по алфавиту без повторов: список зарегистрированных посетителей сайта, поступивших абитуриентов, названий книг и т.п. (можно загружать в массив готовый список из отдельного текстового файла, например sorted_list.txt)
Во втором текстовом файле (test.txt) содержится перемешанный набор строк с повторениями, в том числе все строки, записанные в массив, а также новые строки.
Считывая по одной строке из файла test.txt, нужно выполнить поиск каждой строки в массиве, по результатам которого вывести на экран номер ее позиции в массиве и количество ее сравнений с содержимым ячеек массива, произведенных в ходе поиска.
Реализовать два метода поиска строк в массиве: поиск перебором, бинарный поиск. Пользователь должен иметь возможность выбора метода.
В выводе построить график зависимости количества сравнений строки с содержимым ячеек массива от номера ее позиции в массиве для каждого метода. Подсчитать и привести в выводе среднее число сравнений по всем строкам для каждого метода.

P.S. я первокурсник , желательно без замудренных вещей... хочется не просто здать , а разобраться
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2013, 16:18     Сравнение тхт фаилов
Посмотрите здесь:

Програма с .тхт файлом C++
C++ записываем ответ в файл .тхт
C++ возможен ли поиск в тхт файле?
Чтение и Запись в файл тхт C++
C++ c++ робота с файлом тхт
C++ Чтение файла ТХТ С++
C++ Записать числа из ТХТ файла в массив
Запись в файл тхт из мемо C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 13:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru