Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 7
1

Отсортировать строки фамилия-номер по убыванию номеров

18.09.2016, 22:28. Показов 1455. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Задача состоит в доделывании данной проги
Надо прочитать список 10 фамилий и моб. номеров к ним, отсортировать строки фамилия-номер по убыванию номеров
и вывести в другой файл.
Буду благодарен за обьяснение и готовую прогу.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
program pr1;
 type t=array [1..24] of char;
 tt=array [1..10] of t;
 var a:tt; i,j:byte;
begin
 assign(input,'dan1.inp');
 reset(input);
 assign(output,'res1.out');
 rewrite(output);
  for i:=1 to 10 do
  begin
   for j:=1 to 24 do
   begin
    read(a[i,j]);
    write(a[i,j]);
   end;
    readln;
    writeln;
  end;
  close(input);
  close(output)
end.
Спойлер с входными данными не делаю, потому что пробелы стираются
Символ, с которого начинается номер - 16
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.09.2016, 22:28
Ответы с готовыми решениями:

Найти номер строки наименьшего элемента матрицы и отсортировать данную строку по убыванию
Задание по Delfi 7 помогите решить уважаемые форумчане Дана целочисленная матрица M с размером...

Отсортировать по убыванию столбцы, номер которых не больше заданного
Дана прямоугольная матрица . Отсортировать по убыванию столбцы, номер которых не больше, чем...

Отсортировать строки матрицы по убыванию средних арифметических значений элементов каждой строки
Привет всем,прошу помочь в решении задачи,так как не умею решать задания на матрицы. Дана...

Отсортировать в матрице по убыванию столбцы, номер которых не больше, чем вводимое с клавиатуры число
Дана прямоугольная матрица . Отсортировать по убыванию столбцы, номер которых не больше, чем...

6
 Аватар для vlisp
1046 / 967 / 153
Регистрация: 10.08.2015
Сообщений: 5,237
18.09.2016, 23:40 2
код никуда не свистит, делай отдельно функцию чтения из файла в массив записей, сортировку массива и запись массива в файл
0
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
19.09.2016, 09:46 3
Лучший ответ Сообщение было отмечено notaktuk как решение

Решение

Добавлено через 3 минуты
Цитата Сообщение от vlisp Посмотреть сообщение
код никуда не свистит, делай отдельно функцию чтения из файла в массив записей, сортировку массива и запись массива в файл
зачем так сложно? Массива строк будет достаточно.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
uses Classes;
var
  i,j:integer;
  S:TStringList;
begin
   s:=TStringlist.Create;
   s.loadfromfile('dan1.inp');
   for i:=0 to s.count-2 do
     for j:=i+1 to s.count-1 do
     if copy(s[i],16,length(s[i]))<copy(s[j],16,length(s[j])) then s.exchange(i,j);
   s.savetofile('res1.out');
   s.free;
end.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33048 / 21348 / 8205
Регистрация: 22.10.2011
Сообщений: 36,658
Записей в блоге: 9
19.09.2016, 14:27 4
Joy, зачем же вручную? Есть же уже функционал:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{$mode objfpc} 
uses classes, sysutils;
function f(List: TStringList; I1, I2: Integer): Integer;
begin
  result := comparestr(copy(list[i1], 16, 255), copy(list[i2], 16, 255));
end;
 
var s : string;
begin
  with tstringlist.create do
  try
    loadfromfile('dan1.inp');
    customsort(@f);
    savetofile('res1.out');
  finally
    free;
  end;
end.
1
0 / 0 / 0
Регистрация: 18.09.2016
Сообщений: 7
19.09.2016, 17:18  [ТС] 5
Joy, Ваш код заработал и сделал все как надо, спасибо!
Можете обьяснить 1ую, 6ую и 12ю строки?

Но все таки препод сказал доделать его программу
Я сам не понимаю, зачем так мудрить
0
Эксперт Pascal/Delphi
2386 / 1298 / 1492
Регистрация: 29.08.2014
Сообщений: 4,661
20.09.2016, 07:50 6
Цитата Сообщение от volvo Посмотреть сообщение
result := comparestr(copy(list[i1], 16, 255), copy(list[i2], 16, 255));
классно, только надо индексы местами поменять - сортировка требуется по убыванию
Pascal
1
result := comparestr(copy(list[i2], 16, 255), copy(list[i1], 16, 255));
Цитата Сообщение от notaktuk Посмотреть сообщение
Но все таки препод сказал доделать его программу
- его программу и полное задание давай

Добавлено через 4 минуты
только array [1..24] of char - такое сортировать у меня нет никакого желания. Есть же тип string (строка) в паскале, по сути string[24] - тоже самое. в FPC есть список строк (TStringList) у него есть методы - загрузить из файла (loadfromfile) при этом сразу-же заполняется необходимое количество строк. сохранить в файл (savetofile). Зачем изобретать велосипед, если это реализовано средствами языка программирования.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7797 / 4620 / 2831
Регистрация: 22.11.2013
Сообщений: 13,125
Записей в блоге: 1
20.09.2016, 17:22 7
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от notaktuk Посмотреть сообщение
не понимаю, зачем так мудрить
Чтобы иметь представление о том, как примерно устроены внутри те простые и удобные штуки и чего стоит их вызов.

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
const m=10; n=24; p=16;
var
  a: array [1..m,1..n] of Char;
  i, j, k: Integer; t: Char;
begin
  FillChar(a,SizeOf(a),' ');
  Assign(input,'dan1.inp'); Reset(input);
  Assign(output,'res1.out'); Rewrite(output);
  while not EoF and (i<m) do begin
    Inc(i); j:=0;
    while not EoLn and (j<n) do begin
      Inc(j); Read(a[i,j]);
    end; ReadLn;
  end;
  for i:=m downto 2 do for j:=2 to i do begin
    k:=p; while (k<=n) and (a[j-1,k]=a[j,k]) do Inc(k);
    if (k<=n) and (a[j-1,k]<a[j,k]) then
      for k:=1 to n do begin
        t:=a[j-1,k]; a[j-1,k]:=a[j,k]; a[j,k]:=t;
      end;
  end;
  for i:=1 to m do begin
    for j:=1 to n do Write(a[i,j]); WriteLn;
  end;
  Close(input); Close(output);
end.
Если вспомнить про ASCIIZ строки, можно начать упрощать:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const m=10; n=24; p=15;
var
  a: array [1..m,0..n] of Char;
  i, j, k: Integer; t: Char;
begin
  Assign(input,'dan1.inp'); Reset(input);
  Assign(output,'res1.out'); Rewrite(output);
  while not EoF and (i<m) do ReadLn(a[i]);
  for i:=m downto 2 do for j:=2 to i do begin
    k:=p; while (k<n) and (a[j-1,k]=a[j,k]) do Inc(k);
    if (k<n) and (a[j-1,k]<a[j,k]) then
      for k:=0 to n-1 do begin
        t:=a[j-1,k]; a[j-1,k]:=a[j,k]; a[j,k]:=t;
      end;
  end;
  for i:=1 to m do WriteLn(a[i]);
  Close(input); Close(output);
end.
0
20.09.2016, 17:22
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.09.2016, 17:22
Помогаю со студенческими работами здесь

Отсортировать символы, введенной с клавиатуры строки в порядке возрастания их номеров в ASCII -таблице.
Написать программу, сортирующую символы, введенной с клавиатуры строки в порядке возрастания их...

Отсортировать чётные строки по убыванию
Отсортировать чётные строки по убыванию

Отсортировать строки массива по убыванию
В текстовом файле в табличном виде расположен массив целых чисел 5*5. Отсортировать каждую строку...

Отсортировать по убыванию все строки матрицы
Помогите!)) нужно Отсортировать по убыванию все строки матрицы.

Отсортировать чётные строки матрицы по убыванию
в матрице надо отсортировать чётные строки по убыванию. program dfgdg; uses crt; var a:...

Отсортировать чётные строки матрицы по убыванию
Отсортировать чётные строки по убыванию


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Rust или Go? А может C++?
hw_wired 28.01.2025
С каждой новой технологией или методологией появляются новые языки программирования, призванные решать конкретные задачи либо улучшать аспекты производительности и безопасности. Среди множества. . .
Fortran и WinAPI: как создать приложение с графическим интерфейсом
hw_wired 28.01.2025
Fortran — это один из старейших высокоуровневых языков программирования, широко используемый в науке и инженерии уже несколько десятилетий. Его название происходит от "Formula Translation" (перевод. . .
Списки в Haskell
hw_wired 28.01.2025
Haskell является функциональным языком программирования, который отличается лаконичностью синтаксиса и мощными абстракциями. Важным концептом в Haskell являются списки — упорядоченные коллекции. . .
Функции высшего порядка в Haskell
hw_wired 28.01.2025
Haskell – это современный функциональный язык программирования, который получил широкое распространение благодаря своей выразительности и мощным абстракциям. Одной из ключевых особенностей Haskell. . .
Как в цикле обойти все поля объекта в JavaScript
bytestream 28.01.2025
Объекты в JavaScript представляют собой фундаментальные структуры данных, которые позволяют хранить и организовывать связанную информацию в виде пар ключ-значение. Каждый объект можно представить как. . .
Как выбрать строки в DataFrame по значению столбца в Pandas
bytestream 28.01.2025
В области анализа данных библиотека Pandas стала незаменимым инструментом для работы с табличными данными в Python. Эта мощная библиотека предоставляет множество функций для эффективной обработки и. . .
Как сделать перенос строки в Bash
bytestream 28.01.2025
При работе с командной оболочкой Bash разработчики часто сталкиваются с необходимостью форматирования текстового вывода, где ключевую роль играет правильное управление переносами строк. Умение. . .
Поиск подстроки в строке с помощью Bash
bytestream 28.01.2025
Поиск подстроки в строке является одной из важных задач в программировании и обработке текстов. Применение такого поиска можно найти в самых разных областях, от анализа данных до разработки. . .
[golang] 169. Majority Element
alhaos 28.01.2025
Тут надо вернуть "мажористый" элемент который встречается в слайсе больше чем в половине случаев. По условиям задачи во входных данных такой элемент обязан присутствовать. / / . . .
Когда лучше использовать LinkedList вместо ArrayList в Java
bytestream 28.01.2025
При разработке Java-приложений выбор правильной структуры данных играет ключевую роль в обеспечении эффективности и производительности программы. ArrayList и LinkedList являются двумя. . .
Какой ответ HTTP лучше использовать: 403 Forbidden или 401 Unauthorized, когда недостаточно прав
bytestream 28.01.2025
В современной веб-разработке правильная обработка ошибок и точное информирование клиентов о статусе их запросов играют критическую роль в создании надежных и безопасных приложений. Особое внимание. . .
Как получить список всех файлов коммита в Git
bytestream 28.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде и других файлах проекта. В основе работы Git лежит концепция коммитов - снимков. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru