Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2017, 19:45   #1
malkolm001
Новичок
Джуниор
 
Регистрация: 05.05.2017
Сообщений: 1
По умолчанию У меня не как не выходит сохранить отсортированную таблицу помогите

Код:
program coursew;
uses crt;
var
mfile: text;
data:array[1..20,1..5] of string;
s:string;
n:integer;
amt,sortf:integer;

procedure menu;
begin
     clrscr;
     writeln('╔══════════════╤═╦══════════════╤═╦══════════════╤═╗');
     writeln('║   Open file  │1║ Select field │2║    Sorting   │3║');
     writeln('╠══════════════╪═╬══════════════╪═╬══════════════╪═╣');
     writeln('║   Save file  │4║     About    │5║   Developer  │6║');
     writeln('╠══════════════╧═╩══════════════╧═╩══════════════╪═╣');
     writeln('║                       Exit                     │7║');
     writeln('╚════════════════════════════════════════════════╧═╝');
     write('Your choise is: ');
end;

procedure readfile;
var i:integer;
begin
     amt:=1;
     clrscr;
     assign (mfile,'f.txt');
     reset(mfile);
     writeln('╔══════════╦══════════╦══════════╦══════════╦══════════╗');
     while not eof(mfile) do
     begin
          for i:=1 to 5 do
              readln(mfile,data[amt,i]);
              writeln('║',data[amt,1]:10,'║',data[amt,2]:10,'║',data[amt,3]:10,'║',data[amt,4]:10,'║',data[amt,5]:10,'║');
              inc(amt);
     end;
     writeln('╚══════════╩══════════╩══════════╩══════════╩══════════╝');
     close(mfile);
     dec(amt);
     readln;
end;

procedure select;
begin
     clrscr;
     writeln('╔════════════════════════════════════════════════════════════════╗');
     writeln('║               Please, select the field for sorting:            ║');
     writeln('╠══════════╤═╦══════════╤═╦══════════╤═╦══════════╤═╦══════════╤═╣');
     writeln('║   Brand  │1║   Model  │2║   Year   │3║  Mileage │4║  Number  │5║');
     writeln('╚══════════╧═╩══════════╧═╩══════════╧═╩══════════╧═╩══════════╧═╝');
     writeln;
     write('Your choise is: ');
     readln(sortf);
end;

procedure savefile;
var i:integer;
begin
     clrscr;
     assign (mfile,'f1.txt');
     rewrite(mfile);
     for i:=1 to amt do
         writeln(mfile,data[i,sortf]);
     close(mfile);
     writeln('Data writing was successful!');
     readln;
end;

procedure sort;
var i,j,k:integer;
begin
     clrscr;

     writeln('╔══════════╦══════════╦══════════╦══════════╦══════════╗');
     for i:=1 to amt do
         writeln('║',data[i,1]:10,'║',data[i,2]:10,'║',data[i,3]:10,'║',data[i,4]:10,'║',data[i,5]:10,'║');
     writeln('╚══════════╩══════════╩══════════╩══════════╩══════════╝');
     writeln;

     for i:=1 to amt-1 do
         for j:=1 to amt-i do
             if data[j,sortf]>data[j+1,sortf] then
                for k:=1 to 5 do
                begin
                     s:=data[j,k];
                     data[j,k]:=data[j+1,k];
                     data[j+1,k]:=s;
                end;

     writeln('Sorting successful!');
     writeln;

     writeln('╔══════════╦══════════╦══════════╦══════════╦══════════╗');
     for i:=1 to amt do
         writeln('║',data[i,1]:10,'║',data[i,2]:10,'║',data[i,3]:10,'║',data[i,4]:10,'║',data[i,5]:10,'║');
     writeln('╚══════════╩══════════╩══════════╩══════════╩══════════╝');
     readln;
end;

procedure about;
begin
     clrscr;
     writeln(' ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲');
     writeln(' This program has been created for bubble sorting of file ►');
     writeln(' ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼');
     readln;
end;

procedure creator;
begin
     clrscr;
     writeln(' ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲');
     writeln(' This program has been created by Meged Ivan ►');
     writeln(' ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼');
readln;
end;

begin
     while(n<>7) do
     begin
          menu;
          readln(n);
          case n of
               1: readfile;
               2: select;
               3: sort;
               4: savefile;
               5: about;
               6: creator;
               7: exit;
               else
               begin
                    writeln('Wrong number!');
                    readln;
               end;
          end;
     end;
end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 06.05.2017 в 00:26.
malkolm001 вне форума Ответить с цитированием
Старый 15.05.2017, 17:31   #2
tutejshy
Форумчанин
 
Регистрация: 13.05.2017
Сообщений: 100
По умолчанию

В чем проблема не разобрался, но, похоже, дело в символах псевдографики - больше 26 штук в одну строку не вмещается...

Кстати, интересная вещь: на Линуксе(я пользуюсь обычно им, но на виртуалке и винда стоит) - что-то да выходит. Т.е. есть символы, табличка, но покареженная из-за того, что только 26 символов псевдографики влазят в строку. А вот на винде - абракадабра!

Кажется я нашел решение!
Итак: работает только на винде - линукс не поддерживает таблицу псевдографики.
Вместо того, чтобы писать
Код:
   writeln('╔════════════════════════════════════════════════════════════════╗');
пиши так:
Код:
for i:=1 to 50 do write(#205);
У меня на винде пошло. Короче используй коды символов, а не их изображения - в линуксе такое проканает, а вот виндоус ругается.

Последний раз редактировалось BDA; 15.05.2017 в 18:38.
tutejshy вне форума Ответить с цитированием
Старый 15.05.2017, 18:35   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

А чем вы компилируете?
Вот в дельфи, например, код из первого сообщения дает то, что на картинке.

tutejshy, не нужно писать несколько сообщений подряд, просто дописывайте в последнее сообщение новые мысли.

По поводу исходной проблемы ТСа. Мне показалось, что amt отражает общее количество данных + 1, так что циклы должны быть от 1 до amt - 1. Во-вторых, выводить в файл нужно не только отсортированный столбец, но и все остальные. Больше, на первый взгляд, проблем не вижу (ну не считая фиксированного размера массива под входной файл).
Изображения
Тип файла: png тест.png (9.5 Кб, 135 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 15.05.2017 в 18:45.
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива...Что та не выходит у меня.. Pavel Lapin Паскаль, Turbo Pascal, PascalABC.NET 1 13.11.2011 16:57
Не выходит сохранить файл через XMLHTTP SeRhy Общие вопросы Delphi 1 17.01.2011 14:38
при нажатии на ссылку установка выходит диалог открыть или сохранить, как от него избавиться? Rus_ld Общие вопросы Delphi 3 03.05.2010 13:31
Как сохранить отсортированную таблицу Kingson Microsoft Office Access 12 22.12.2009 13:23
Как правильно сохранить данные в таблицу??? kAtenok87 PHP 4 07.05.2009 11:24