С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
2 / 2 / 1
Регистрация: 05.01.2012
Сообщений: 29

Провести сортировку записей, расположив фамилии согласно алфавиту

05.01.2012, 13:09. Показов 1700. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите с решением плиз
Справочник учреждений и организаций: название, адрес (улица, № дома), № телефона, район местонахождения. Район местонахождения определить программным путем по второй цифре в номере телефона: 1 — Дашково—Песочня, 2 — Горроща, 3 — Приокский и Канищево, 5 — Московское шоссе, 6,7 — Центр. Провести сортировку записей, расположив фамилии согласно алфавиту.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.01.2012, 13:09
Ответы с готовыми решениями:

Отсортировать текст, расположив слова согласно алфавиту
Задание: Отсортировать текст, расположив слова в алфавитном порядке, и вывести результат в новый файл (считать, что a=1, b=2, c=3, …, z=26,...

Вывести на экран записи, расположив их фамилии по алфавиту
Программа заполняет массив из 10 записей с 3-мя полями (фамилия, имя, полное число лет) из файла. Вывести на экран записи, расположив их...

1. Провести сортировку заказчиков по алфавиту и для каждого заказчика выяснить, когда и в каком количестве
"Провести сортировку заказчиков по алфавиту и для каждого заказчика выяснить, когда и в каком количестве (расположить по убыванию) они...

5
25 / 4 / 5
Регистрация: 04.01.2012
Сообщений: 41
05.01.2012, 16:54
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вот на пока с этим раъябись а по алфавиту я сам не знаю жду ответа тоже

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
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
program spisok;
uses crt;
type PElement=^TypeElement;
             TypeElement=record
                          name:string;
                          name2:string;
                          kol:integer;
                          gr:integer;
                          vl:integer;
                          next:PElement;
                    end;
var
   f: file of string;
   a:array[1..100] of string ;
   qwe:file of PElement;
   ptrhead:PElement;
   ptrcurrent:PElement;
   vb,kol,gr,vl,i,n,j,k:integer;
   name,name2,s,sub:string;
   q:set of char;
   
const   //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Максимальное количество слов в тексте.
  M = 20;
 
procedure sozd(name:string; kol,gr,vl:integer; name2:string;
                             var ptrHead, ptrCurrent: PElement);
  {Вставка непервого элемента в линейный однонаправленный список}
  {справа от элемента, на который указывает ptrCurrent}
var
  ptrAddition: PElement;   {вспомогательный указатель}
begin
     New(ptrAddition);
     ptrAddition^.name := name;
     ptrAddition^.kol:= kol;
     ptrAddition^.gr:= gr;
     ptrAddition^.vl:= vl;
     ptrAddition^.name2:= name2;
     if ptrHead = nil then begin   {список пуст}
     {создаем первый элемент списка}
     ptrAddition^.Next := nil;
     ptrHead := ptrAddition;
     end else begin   {список не пуст}
     {вставляем элемент списка справа от элемента,}
     {на который указывает ptrCurrent}
     ptrAddition^.Next := ptrCurrent^.Next;
     ptrCurrent^.Next := ptrAddition;
     end;
     ptrCurrent := ptrAddition;
end;
 
procedure print(ptrHead: PElement);
  {Просмотр линейного однонаправленного списка}
var
  ptrAddition: PElement;   {вспомогательный указатель}
begin
     ptrAddition := ptrHead;
     writeln('|_-_-_-_-_-_-_-|-_-_-_-_-_-_|_-_-_-_-_-_-_-_-_-|-_-_-_-_-_-_-_-|-_-_-_-_-_-_-_|');
     while ptrAddition <> nil do begin   {пока не конец списка}
     writeln('| ',ptrAddition^.name:12, ' | ',ptrAddition^.kol:10,' | ',ptrAddition^.gr:16,' | ',ptrAddition^.vl:13,' | ',ptrAddition^.name2:12,' |' );       {Вывод значения элемента}
     ptrAddition := ptrAddition^.Next;
     writeln('|_-_-_-_-_-_-_-|-_-_-_-_-_-_|_-_-_-_-_-_-_-_-_-|-_-_-_-_-_-_-_-|-_-_-_-_-_-_-_|');
     end;
end;
 
 
 
procedure alf(name:string; var ptrHead, ptrCurrent: PElement);
var
  ptrAddition: PElement;
begin
     assign (f, 'file.txt');
     reset (f);
     while not eof (f) do begin
                               read (f, name);
                               s:=name;
                               i:=0;k:=0;
                               //q:=[' ',',' , '-', '!', '?', ';',':','.'];
                               repeat
                               inc(i);
                               //if s[i] in q then begin
                                                      //inc(k);
                                                      //a[k]:=sub;
                                                      //sub:='';
                                                 //end
                                            //else if not (s[i] in q) then sub:=sub+s[i];
                                until (i=length(s))or(s[i]='.');
                                if sub<>'' then begin
                                                     inc(k);
                                                     a[k]:=sub;
                                                     end;
                                writeln;
                                for i:=1 to k-1 do
                                                  for j:=k-1 downto i do
                                                                        if a[j]>a[j+1] then
                                                                                           begin
                                                                                                sub:=a[j+1];
                                                                                                a[j+1]:=a[j];
                                                                                                a[j]:=sub;
                                                                                           end;
                                for i:=1 to k do
                                writeln(a[i]);
                                write (f, a[i]);
                          end;
                          
     close(f);
     end;
 
begin
     clrscr;
     ptrhead:=nil;
     ptrcurrent := nil;
     repeat
     clrscr;
     writeln('###############################################################################');
     writeln('#                                                                             #');
     writeln('#                               МЕНЮ ПРОГРАМЫ                                 #');
     writeln('#                                                                             #');
     writeln('###############################################################################');
     writeln('#                                                                             #');
     writeln('#                     Выберете цифрами вариант действия                       #');
     writeln('#                                                                             #');
     writeln('#_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_#');
     writeln('#                                                                             #');
     writeln('#                   1:Вставка списка                                          #');
     writeln('#                   2:Просмотр списка                                         #');
     writeln('#                   3:Вставка дополнительних элементов списка                 #');
     writeln('#                                                                             #');
     writeln('#                                                                             #');
     writeln('###############################################################################');
     readln(vb);
     case vb of
               1: begin
                       assign (f, 'file.txt');
                       rewrite (f);
                       writeln('Введите количество элементов');
                       readln(n);
                       for i:=1 to n do begin
                       writeln('Введите наименование',i,'-ого крана');
                       readln(name);
                       writeln('Введите количество',i,'-ого крана');
                       readln(kol);
                       writeln('Грузоподъемность',i,'-ого крана, тон');
                       readln(gr);
                       writeln('Вылет стрелки крана',i,'-ого крана, м');
                       readln(vl);
                       writeln('Наименование',i,'-ого судна ');
                       readln(name2);
                       sozd(name,kol,gr,vl,name2,ptrhead,ptrcurrent);
                       write(f, name);
                       end;
                       close (f);
                 end;
               2: begin
                       writeln('|_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_|');
                       writeln('|                              База данных                                    |');
                       writeln('|_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_|');
                       writeln('| Наимен крана | Количество | Грузоподъемность | Вылет стрелки | Наимен судна |');
                       print(ptrhead);
                       writeln('Если вы просмотрели список нажмите любую клавишу');
                       readln;
                  end;
               3:begin
                       writeln('Введите количество элементов');
                       readln(n);
                       for i:=1 to n do begin
                                             writeln('Введите наименование',i,'-ого крана');
                                             readln(name);
                                             writeln('Введите количество',i,'-ого крана');
                                             readln(kol);
                                             writeln('Грузоподъемность',i,'-ого крана, тон');
                                             readln(gr);
                                             writeln('Вылет стрелки крана',i,'-ого крана, м');
                                             readln(vl);
                                             writeln('Наименование',i,'-ого судна ');
                                             readln(name2);
                                             sozd(name,kol,gr,vl,name2,ptrhead,ptrcurrent);
                                             end;
                 end;
               4:begin
                      assign (f, 'file.txt');
                      reset (f);
                      while not eof (f) do begin
                      read (f, a[i]);
                      write(a[i],' ');
                      end;
                      close (f);
                      readln
               end;
     end;
     until(vb=6)
end.
0
2 / 2 / 1
Регистрация: 05.01.2012
Сообщений: 29
05.01.2012, 17:38  [ТС]
я вот не пойму как район местонахождения определить программным путем по второй цифре в номере телефона
0
--\.founder./--
 Аватар для WebMax 2.0
565 / 565 / 392
Регистрация: 20.10.2011
Сообщений: 867
05.01.2012, 17:49
Roman111, Переведи числовое значение номера телефона в строковый тип с помощью функции Str , а потом сравнивай со вторым символом строки !

Ну или сразу в структуре записи укажи строковый тип номера телефона .
0
2 / 2 / 1
Регистрация: 05.01.2012
Сообщений: 29
05.01.2012, 18:02  [ТС]
не фига не врубился
0
--\.founder./--
 Аватар для WebMax 2.0
565 / 565 / 392
Регистрация: 20.10.2011
Сообщений: 867
05.01.2012, 18:17
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Примерно так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
 uses crt;
 
 var nom:integer;
 x:string;
 
 begin
    Write('Номер телефона: ');readln(nom);
    str(nom,x);
 If x[2]='1' then writeln('Дашково—Песочня');
 If x[2]='2' then writeln('Горроща');
 end.
Добавлено через 1 минуту
Или сразу строковый тип:

Pascal
1
2
3
4
5
6
7
8
9
 uses crt;
 
 var nom:string;
 
 begin
 Write('Номер телефона: ');readln(nom);
 If nom[2]='1' then writeln('Дашково—Песочня');
 If nom[2]='2' then writeln('Горроща');
 end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.01.2012, 18:17
Помогаю со студенческими работами здесь

Надо провести сортировку и фильтрацию всех записей бд
при попытке создать сортировку при помощи radiogroup, bitbtn в бд на делфи выбивает ошибку index does not exist index:фамилияprocedure...

Подскажите как эту сортировку переделать в сортировку по алфавиту?
Подскажите как эту сортировку переделать в сортировку по алфавиту?? vector&lt;std::pair&lt;string, int&gt;&gt; popularAuthor; ...

Переделать сортировку студентов по баллам на сортировку по фамилии
Вот у меня есть код сортировки введенных данных по среднему балу: TZap st, *mas_Z; Fz =...

Объединить две линейные таблицы новую таблицу, расположив элементы согласно условию
Слейте две линейные таблицы A и B в новую таблицу C, поставив элементы таблицы A на нечетные места, а элементы таблицы B – на четные.

Excel и группы записей. Импорт записей, согласно категории(которая указана в экселе)
Задаю вопрос, т.к. не нашёл ни в яндексе, ни тут ответ. Просьба ткнуть носом, т.к. считаю что вопрос на уровне новичка и тема должна была...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru