Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Lucky721
0 / 0 / 4
Регистрация: 13.04.2013
Сообщений: 65
1

Самые распространенные строки

21.12.2013, 20:43. Просмотров 694. Ответов 14
Метки нет (Все метки)

Delphi
1
2
3
4
5
6
7
type Mytype = record
   name:string[10];
   surname:string[10];
  end;
  var
     Students:Mytype;
     MyFile:file of Mytype;
Допустим, дан файл, вот с такими записями, как выше.подкиньте идею, как определить в этом файле, записи в которых чаше всего встречается одинаковое поле name.
Например, файл состоит из:
Вася Петров
Миша Григорьев
Вася Семенов
Петр Рунин
Петр Первый
Вася Грунин

Вася будет самым частым именем, соответственно, записи с name Вася, мне и нужны.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2013, 20:43
Ответы с готовыми решениями:

Вывести самые распространенные женские и мужские имена
Помогите решить задачу пожалуйста! Написать программу, которая формирует файл записей данной...

Вывести самые распространенные мужские и женские имена
Имеется массив записей о студентах, каждая из которых включает поля: фамилия, имя, отчество, пол,...

Найти и вывести самые распространенные женские те мужские имена
О каждом студенте факультета доступна следующая информация: фамилия, имя, отчество, пол, возраст,...

Вывести самые распространенные мужское и женское имена среди студентов
Во входном файле записана следующая информация о каждом из 20 студентов некоторого вуза: ...

14
Игорь[Igor]
723 / 475 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
22.12.2013, 02:04 2
Создай массив в который будеш добавлять имена и кол-во, пробегая пробежавшись циклом по всем данным попутно проверяеш есть ли это имя в массиве если нет то добавляеш если есть то увеличиваеш кол-во имен у соответствующей записи
0
Lucky721
0 / 0 / 4
Регистрация: 13.04.2013
Сообщений: 65
22.12.2013, 11:25  [ТС] 3
Нужно обойтись без массива
0
Tip.the.besT
7 / 7 / 3
Регистрация: 01.04.2012
Сообщений: 98
22.12.2013, 14:42 4
Тоже самое, что и с массивом, только со StringList. Добавляешь в строки, пробегаешь сравниваешь. после определённого символа в каждой строке, пишешь сколько раз встретилось в файле (Например: Петр%2).

Ну этот вариант, для тех кто знает толк в извращениях)
0
Lucky721
0 / 0 / 4
Регистрация: 13.04.2013
Сообщений: 65
22.12.2013, 14:56  [ТС] 5
Да, сложный вариант. Просто должно быть какое нибудь более простое решение.
0
Игорь[Igor]
723 / 475 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
22.12.2013, 15:34 6
Это и есть простое решение
0
Lucky721
0 / 0 / 4
Регистрация: 13.04.2013
Сообщений: 65
22.12.2013, 15:46  [ТС] 7
Тогда можно чуток растолковать? мое приложение работает в консольном режиме
0
DenNik
Непрофессионал
2464 / 2102 / 336
Регистрация: 26.07.2011
Сообщений: 9,249
Записей в блоге: 1
22.12.2013, 16:22 8
TStringGrid в качестве хеш-таблицы. написить отдельную функцию для изменения значения в хеш-таблице по переданному строковому значению Name, используя свойство Values. в конце прогон всей таблицы и поиск максимольного значения Values
0
DenNik
Непрофессионал
2464 / 2102 / 336
Регистрация: 26.07.2011
Сообщений: 9,249
Записей в блоге: 1
22.12.2013, 17:06 9
вот примерно так. единственно, если два или больше имени встречается одинаковое число раз, прога выведет первое втреченное. собственно, в логе все будет видно
0
Вложения
Тип файла: zip Project3.zip (13.1 Кб, 3 просмотров)
DenNik
Непрофессионал
2464 / 2102 / 336
Регистрация: 26.07.2011
Сообщений: 9,249
Записей в блоге: 1
22.12.2013, 17:13 10
небольшая доработка процедуры добавления записи (для красоты )
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
var
  Stud: TStudent;
begin
  // добавление записи в файл
  Stud.Name:= LabeledEdit1.Text;
  Stud.SurName:= LabeledEdit2.Text;
  Reset(f);
  Seek(f,filesize(f));
  Write(f,Stud);
  Closefile(f);
  // доработка процедуры добавления записи (опционально)
  LabeledEdit1.Clear;
  LabeledEdit2.Clear;
  LabeledEdit1.SetFocus;
end;
Добавлено через 4 минуты
также отсутствует защита от пустых строк. В файл они добавятся без проблем, но при обработке будет ошибка
0
Lucky721
0 / 0 / 4
Регистрация: 13.04.2013
Сообщений: 65
22.12.2013, 17:50  [ТС] 11
Delphi
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
type people = record
   name:string[10];
   surname:string[10];
   patronymic:string[20];
   sex:string[1];
   age:byte;
   course:byte;
  end;
  var
     f,ans1,name1:string;
     i,j,k:byte;
     Students:people;
     MyFile:file of people;
 
procedure AddToFile();
begin
AssignFile(myFile, f);
Reset(myFile);
seek(Myfile,fileSize(Myfile));
writeln('Enter the info:');
repeat
with students do
begin
write('name: ');readln(name);
write('surname: ');readln(surname);
write('patronymic: ');readln(patronymic);
write('sex: ');readln(sex);
write('age: ');readln(age);
write('course: ');readln(course);
end;
Write(MyFile,students);
  repeat
    begin;
      writeln('continue typing (y/n)?') ;
      readln(ans1);
    end;
  until ((ans1='y') or (ans1='n'));
until ans1<>'y';
CloseFile(myFile);
writeln('Press any key');
readln;
end;
 
procedure ViewFile();
begin
AssignFile(MyFile, f);
  Reset(MyFile);
  writeln;
writeln('-----------------------------------------------------------');
writeln('|  name    |  surname |     patronymic     |sex| age|course|');
writeln('-----------------------------------------------------------');
while not eof(MyFile) do
begin
read(MyFile, Students);
with Students do
begin
write('|',name:10);
write('|',surname:10);
write('|',patronymic:20);
write('|',sex:3);
write('|',age:4);
write('|',course:6);
write('|');
end;
writeln;
end;
writeln;
close(MyFile);
writeln('Press any key');
readln;
end;
 
procedure FileProcessing();
begin
AssignFile(MyFile, f);
Reset(MyFile);
 
      end;
  end;
end;
 
begin
 f:='MyStudents.dat';
i:=0;
while i<>4 do
  begin
   writeln('1.Add to file');
   writeln('2.View file');
   writeln('3.File processing');
   writeln('4.Exit');
   readln(i);
   if i=1 then AddToFile();
   if i=2 then ViewFile();
   if i=3 then FileProcessing();
  end;
 
end.
Код для всего остального у меня есть. Мне нужно именно идея для поиска самого распространенного имени в списке
0
DenNik
Непрофессионал
2464 / 2102 / 336
Регистрация: 26.07.2011
Сообщений: 9,249
Записей в блоге: 1
23.12.2013, 10:58 12
Цитата Сообщение от Lucky721 Посмотреть сообщение
Мне нужно именно идея для поиска самого распространенного имени в списке
ты вообще мой код разбирал? там есть идея и неважно, что это оконное приложение. ты разберись
0
Lucky721
0 / 0 / 4
Регистрация: 13.04.2013
Сообщений: 65
23.12.2013, 15:06  [ТС] 13
Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
  TStudent = packed record
    Name: string[10];
    SurName: string[10];
  end;
 
const
  FileName = 'c:\file.dat';
var
  Form1: TForm1;
  f: file of TStudent;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  Stud: TStudent;
begin
  // добавление записи в файл
  Stud.Name:= LabeledEdit1.Text;
  Stud.SurName:= LabeledEdit2.Text;
  Reset(f);
  Seek(f,filesize(f));
  Write(f,Stud);
  Closefile(f);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  // чтение и обработка файла
  Reset(f);
  if FileSize(f) <> 0 then
  begin
 
  end;
  CloseFile(f);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  // назначаем файл
  AssignFile(f,FileName);
  // сразу создадим пустой файл если его нет
  if not FileExists(FileName) then
  begin
    Rewrite(f);
    CloseFile(f);
  end;
end;
 
end.
Смотрел я твой код, кроме добавления записей и создания ничего тут больше не вижу
0
DenNik
Непрофессионал
2464 / 2102 / 336
Регистрация: 26.07.2011
Сообщений: 9,249
Записей в блоге: 1
24.12.2013, 12:23 14
Цитата Сообщение от Lucky721 Посмотреть сообщение
Смотрел я твой код, кроме добавления записей и создания ничего тут больше не вижу
блин! забыл сохранить перед архивированием
забирай
1
Вложения
Тип файла: zip Исправлено.zip (14.4 Кб, 3 просмотров)
Lucky721
0 / 0 / 4
Регистрация: 13.04.2013
Сообщений: 65
24.12.2013, 12:48  [ТС] 15
Спасибо, но я уже другую подобную задачу сделал на зачет
0
24.12.2013, 12:48
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2013, 12:48

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Какие самые распространенные бесплатные спам-фильтры Вам известны?
Всем привет понимаю что не заслуживаю как новенький о помощи но все же попрошу помогите . Вопрос...

Вывести на экран все самые длинные и все самые короткие строки из текстового файла
Имеется текстовый файл. Требуется вывести на экран все самые длинные и все самые короткие строки....

Самые просматриваемые, самые залайканные, самые комментируемые посты вывести на отдельные страницы
Здравствуйте. Помогите пожалуйста, еще новичок в WordPress. Хочу сделать отдельные страницы...

Разукрасить разними цветами самые большие и самые наименьшие элементы массива
Разукрасить разними цветами самые большие и самые наименьшие элементы массива.


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.