4 / 4 / 3
Регистрация: 28.09.2013
Сообщений: 152
1

Вывод отсортированного массива в файл

05.09.2014, 19:34. Показов 1757. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание такое:
Дан список сотрудников лаборатории(10 человек) в виде
ФАМИЛИЯ ДОЛЖНОСТЬ
15 симв. 10 симв.
Белюков ст.инженер
Васильева техник
Возможные должности : инженер, ст. инженер, техник, вед. инженер.
Данные в одной строке отделяются друг от друга пробелами.
Расположить элементы списка в порядке “возрастания “ должности от "техника" до "вед.инженера" и вывести в выходной файл. Задание нужно выполнить с использованием двумерных символьных массивов, текстовых файлов и без процедур.

Я с файлами никогда до этого не работал. Я не представляю даже, как сделать сортировку.
Пока вот есть считывание файлов и запись данных в другой файл.
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
const N=10; M=25;
type t=array [1..M] of char;
     tt=array [1..N] of t;
var i, k: byte;
    A: tt;
begin
    assign(output, 'res.out');
    rewrite(output);
    assign(input, 'dan.in');
    reset(input);
    for i:=1 to N do
        for k:=1 to M do begin
            read(A[i, k]);
            if (A[i, k] = #10) then
                break;
    end;
    for i:=1 to N do
        for k:=1 to M do begin
            write(A[i, k]);
            if (A[i, k] = #10) then
                break;
        end;
    writeln;
    writeln;
    close(input);
    close(output);
end.
У меня все строки, получается, записаны в массиве. Я думал сделать сортировку массива, но я сортирую же не по какому-то конкретному элементу, а по элементу после пробела. Но алгоритмы не выходят.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2014, 19:34
Ответы с готовыми решениями:

Вывод отсортированного массива,в текстовой файл
В общем,написан код сортировки по убыванию в столбце,запускаю прогу,он правильно сортирует но в...

Сортировка массива и вывод половины отсортированного массива (Объясните код)
Нужно очень детальное описание кода (знаю что код сортирует массив и выводит половину...

Вывод отсортированного двумерного массива
Помогите, пожалуйста. Надо переставить нулевые строки в верхнюю часть. Эти строки ищутся,...

Вывод отсортированного массива в 16-ричной системе
есть массив заполненный делаю sort ....и хочу чтобы вывод был в 16-ричной системе,не получается(((...

6
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7534 / 4394 / 2785
Регистрация: 22.11.2013
Сообщений: 12,588
Записей в блоге: 1
05.09.2014, 21:00 2
Цитата Сообщение от NikitoZZZ Посмотреть сообщение
ДОЛЖНОСТЬ
10 симв.
.., вед. инженер
ничего, что "вед. инженер" в 10 символов не влезает?
0
4 / 4 / 3
Регистрация: 28.09.2013
Сообщений: 152
05.09.2014, 21:12  [ТС] 3
Цитата Сообщение от bormant Посмотреть сообщение
ничего, что "вед. инженер" в 10 символов не влезает?
Так в задании написано. Я взял массив на один элемент больше. А вообще я немножечко переписал код (без сортировки).
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 N=10; M=28;
type t=array [1..M] of char;
     tt=array [1..N] of t;
var i, k: byte;
    A: tt; Temp: t;
begin
    assign(output, 'res.out');
    rewrite(output);
    assign(input, 'dan.in');
    reset(input);
    for i:=1 to N do
        for k:=1 to M do begin
            read(A[i, k]);
            if A[i, k]=#10 then
                break;
        end;
    for i:=1 to N do
        for k:=1 to M do begin
            write(A[i, k]);
            if A[i, k]=#10 then
                break;
        end;
    writeln;
    close(input);
    close(output);
end.
28 взял, чтобы еще символ каретки и символ перехода на новую строку влазил в массив.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7534 / 4394 / 2785
Регистрация: 22.11.2013
Сообщений: 12,588
Записей в блоге: 1
05.09.2014, 22:57 4
Как пример для доводки:
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
const
  n=10; pn=4;
  position: array [1..pn,0..11] of Char = (
    'техник','инженер','ст.инженер','вед.инженер');
var
  p: array [1..pn,1..n,0..20] of Char;
  c: array [1..pn] of Integer;
  b: array [0..255] of Char;
  i, j, k, m: Integer;
begin
  Assign(input,'input.txt'); Reset(input);
  Assign(output,'output.txt'); Rewrite(output);
  for i:=1 to n do begin
    ReadLn(b);
    j:=0;
    while (b[j]<>#0) and (b[j]<>' ') do Inc(j);
    if b[j]=#0 then continue;
    b[j]:=#0; Inc(j);
    while (b[j]=' ') do Inc(j);
    for m:=1 to 4 do begin
      k:=0;
      while (b[j+k]<>#0) and (position[m,k]<>#0) 
        and (b[j+k]=position[m,k]) do Inc(k);
      if b[j+k]=position[m,k] then begin
        Inc(c[m]);
        k:=0;
        while (b[k]<>#0) do begin
          p[m,c[m],k]:=b[k]; Inc(k);
        end;
      end;
    end;
  end;
  for m:=1 to pn do
    for i:=1 to c[m] do
      WriteLn(p[m,i],' ',position[m]);
  Close(input); Close(output);
end.
0
4 / 4 / 3
Регистрация: 28.09.2013
Сообщений: 152
06.09.2014, 15:45  [ТС] 5
Цитата Сообщение от bormant Посмотреть сообщение
Как пример для доводки:
А можно комментарии расставить, чтобы понять, что код делает ?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7534 / 4394 / 2785
Регистрация: 22.11.2013
Сообщений: 12,588
Записей в блоге: 1
07.09.2014, 01:38 6
Лучший ответ Сообщение было отмечено NikitoZZZ как решение

Решение

NikitoZZZ,
А вы спрашивайте, что именно непонятно; а то пока непонятно, что же тут комментировать...
11-12 -- связываем ввод/вывод с дисковыми файлами input.txt/output.txt и открываем их соответственно для чтения/записи;
13 -- n раз повторим
. 14 -- читаем из файла строку
. 15-16 -- ищем первый пробел в считанной строке
. 17 -- если строка кончилась раньше, уходим в строку 13
. 18 -- заменяем первый пробел на символ с кодом 0 и сдвигаем j дальше
. 19 -- пропускаем все пробелы, j будет смещением в b первого непробела после (15-16)
. 20 -- для каждой из 4 должностей
.. 21-23 -- сравниваем название должности с одной из 4-х известных
.. 24 -- если нашли, то
.. 25-29 -- копируем фамилию в список фамилий для соответствующей должности
33 -- для каждого из 4-х списков должностей
. 34-35 -- выводим содержимое списка отдельной должности
36 -- закрываем файлы
37 -- всё кончено, точка
1
4 / 4 / 3
Регистрация: 28.09.2013
Сообщений: 152
07.09.2014, 21:00  [ТС] 7
Спасибо большое вам !
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2014, 21:00
Помогаю со студенческими работами здесь

Вывод отсортированного массива 2-мя методами сортировки
Пишу на Ideone, задание состояло в сортировке массива 2-мя способами, в моем случае выбором и...

Вывод отсортированного массива с индексами элементов до сортировки
ЗАДАЧА: известны номера пловцов от 0 до n. Необходимо определить по результатам соренований, какое...

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

Неверный вывод отсортированного массива чисел с плавающей точкой
Когда эту же программу запускаю не в потоке, выводит все правильно. #include &lt;iostream&gt; #include...

Вывод в текстовый файл списка файлов, отсортированного по дате последнего изменения (начиная с самого старого)
Хотелось бы узнать, какой командой можно выполнить данную операцию. Желательно чтобы вывод был в...

Неполадки с копированием массива и выводом копии отсортированного массива
Шалом, говорит снова чайник, который пишет лабораторную. Итак, проблема состоит в том, что на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru