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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2021, 21:38   #1
Rubin2021
 
Регистрация: 15.04.2021
Сообщений: 4
По умолчанию Множество данных

Ребята помогите, пожалуйста вывести информацию из текстового файла в виде таблицы
Условие: множество данных – музыкальные компакт-диски,
1) исполнитель (string);
2) тираж (real);
3) количество записей (integer);

Запросы:
1) ввод информации из текстового файла;
2) добавление новых элементов в конец массива;
3) просмотр всех элементов массива;
4) вывод информации из массива в текстовый файл;

Вот код программы:
Код:
program kompakt_diski;
uses crt;
var
  k: integer;

procedure vvod;
const
  rz = [' ', ',', '.'];{пусть между словами пробелы, запятые, точки, можешь добавить}
var
  f, g: text;
  f1: Text;
  s, k, sl: string;
  p: byte; 
  step: integer;
  temp: string;
begin
  assign(g, 'C:\PABCWork.NET\\новыйй вариант\Русские хиты 90-х — копия.txt');
  reset(g);
  while not eof(g) do
  begin
    inc(step);
    readln(g, temp);
    writeln(temp);
    if step mod 20 = 0 then
  end;
  write(g);
  close(g);
  assign(f, 'C:\PABCWork.NET\\новыйй вариант\Русские хиты 90-х — 2копия.txt');
  reset(f);  
  write('Введите слово для поиска ');
  readln(sl);
  while not eof(f) do
  begin
    readln(f, s);
    p := pos(sl, s);{позиция первого вхождения слова}
    if(p > 0){если больше ноля}
    and ((p = 1) or (s[p - 1] in rz)){и слово первое или перед ним разделитель}
    and ((p + length(sl) = length(s)) or (s[p + length(sl)] in rz)){или последнее или после него разделитель}
    then
    begin
      writeln(s);{выводим на экран}
      k := s;
    end;
  end;
  close(f); 
 
end;

procedure dobavlenie;
var
  fl, f2: text;  
  str: string;
  step: integer;
  temp: string;

begin
  assign(fl, 'C:\PABCWork.NET\Русские хиты 90-х — копия.txt');  
  append(fl);  
  readln(str);  
  writeln(fl, str);  
  close(fl);
  
  assign(f2, 'C:\PABCWork.NET\Русские хиты 90-х — копия.txt');
  reset(f2); 
  while not eof(f2) do
  begin
    inc(step);
    readln(f2, temp);
    writeln(temp);
    if step mod 20 = 0 then
  end;
  close(f2);
  
end;

procedure prosmotr;
var
  f: text;
  step: integer;
  temp: string;

begin
  assign(f, 'C:\PABCWork.NET\Русские хиты 90-х — копия.txt');
  reset(f);
  
  while not eof(f) do
  begin
    inc(step);
    readln(f, temp);
    writeln(temp);
    if step mod 20 = 0 then
  end;
  close(f);
end;

procedure vivod;
const
  rz = [' ', ',', '.'];
var
  f, g: text;
  f1: Text;
  s, k, sl: string;
  p: byte; 
  step: integer;
  temp: string;
begin
  assign(g, 'C:\PABCWork.NET\\новыйй вариант\Русские хиты 90-х — копия.txt');
  reset(g);
  while not eof(g) do
  begin
    inc(step);
    readln(g, temp);
    writeln(temp);
    if step mod 20 = 0 then
  end;
  write(g);
  close(g);
  assign(f, 'C:\PABCWork.NET\\новыйй вариант\Русские хиты 90-х — 2копия.txt');
  reset(f);  
  write('Введите слово для поиска ');
  readln(sl);
  while not eof(f) do
  begin
    readln(f, s);
    p := pos(sl, s);{позиция первого вхождения слова}
    if(p > 0){если больше ноля}
    and ((p = 1) or (s[p - 1] in rz)){и слово первое или перед ним разделитель}
    and ((p + length(sl) = length(s)) or (s[p + length(sl)] in rz)){или последнее или после него разделитель}
    then
    begin
      writeln(s);{выводим на экран}
      k := s;
    end;
  end;
  close(f); 
  Assign(f1, 'C:\PABCWork.NET\новыйй вариант\output2.txt');
  Rewrite(f1);
  WriteLn(f1, k);
  Close(f1);
end;

begin
  clrscr; //main program
  while k <> 5 do
  begin
    
    Writeln('1 - ввод информации из текстового файла;');
    Writeln('2 - добавление новых элементов в конец массива');
    Writeln('3 - просмотр всех элементов массива');
    Writeln('4 - вывод информации из массива в текстовый файл');
    Writeln('5 - Выход');
    writeln('Сделайте выбор запроса: ');
    readln(k);
    if (k < 1) or (k > 5) then 
    begin
      Writeln('Диапозон задан неверно');      
    end; 
    if k = 5 then
    begin
      break;
    end
    else
      case k of
        1: vvod;
        2: dobavlenie;
        3: prosmotr;
        4: vivod;
            end;
  end;
end.
Вложения
Тип файла: txt Русские хиты 90-х.txt (299 байт, 0 просмотров)
Тип файла: txt Русские хиты 90-х — копия.txt (179 байт, 0 просмотров)
Тип файла: txt Русские хиты 90-х — 2копия.txt (371 байт, 0 просмотров)
Rubin2021 вне форума Ответить с цитированием
Старый 15.04.2021, 22:14   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Я не смотрел весь код, но если надо оформить вывод колонками, то можно использовать символ табуляции (ASCII-код 9). Вот пример:
Код:
writeln(a[1], #9, a[2], #9, a[3], #9, a[4]);
writeln(b[1], #9, b[2], #9, b[3], #9, b[4]);
writeln(c[1], #9, c[2], #9, c[3], #9, c[4]);
writeln(d[1], #9, d[2], #9, d[3], #9, d[4]);
Получится что-то типа таблицы, только без границ.
Arigato вне форума Ответить с цитированием
Старый 15.04.2021, 22:37   #3
Rubin2021
 
Регистрация: 15.04.2021
Сообщений: 4
По умолчанию

Arigato, подскажите, куда это прописать?)
в текстовом файле информация в виде текста и чисел
Rubin2021 вне форума Ответить с цитированием
Старый 16.04.2021, 00:52   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Это никуда не прописать, это пример того, как использовать табуляции при выводе текстовых данных. Дальше сами...
Arigato вне форума Ответить с цитированием
Старый 16.04.2021, 13:54   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

В Паскале, как и во многих языках, можно задавать формат выводимых данных.

write(x) - вывод значения и оставление точки вывода в той же строке.
Пример:
56.5_ - тут символ нижнего подчёркивания имитирует точку вывода: с этой позиции будет отсчитываться место следующего вывода.

writeln(x) - вывод значения и перевод маркера в начало следующей строки.
56.5
_ - тут символ нижнего подчёркивания имитирует точку вывода. Следующий вывод будет с начала строки.

Для форматированного вывода значения, хранящегося в переменной, за именем переменной следует указать формат через двоеточие.
Пример:
writeln(x:m:n) - тут предполагается, что переменная x вещественного типа. В таком формате выводимое значение занимает m позиций строки. При этом, n - позиций будет отведено для дробной части.
Ещё раз прочитайте текст в отношении того, каков смысл m и n.
m - это число позиций отводимое под переменную. Сюда входит и целая часть числа, и число знаков после точки, и точка, и знак числа.
n - это число позиций, отводимых под дробную часть.
Если результат будет занимать больше позиций, чем вы отвели под него, то он будет выведен, а строка, в которой делался вывод, будет искажена.
Если необходимо вывести строку, или целое число, то задаётся только значение для m.
К сожалению в таком форматировании нет символов выравнивания. Выводимое значение выравнивается по правой границе.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 17.04.2021, 21:08   #6
Rubin2021
 
Регистрация: 15.04.2021
Сообщений: 4
По умолчанию

ViktorR, спасибочки)
Rubin2021 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование данных из одной таблицы в множество других файлов Flekker Microsoft Office Excel 10 14.07.2016 14:31
Программа в Паскале: Даны три множества : Х1, Х2, Х3. Сформировать множество Y=(X1UX2) ⋂(X1UX3)\(X2UX3) и множество Y1 Агнесска Помощь студентам 0 06.05.2016 13:50
Множество, содержащее натуральные числа из первой сотни. Сформировать новое множество из простых чисел первого множества Aimet Паскаль, Turbo Pascal, PascalABC.NET 3 16.06.2011 20:50
Дано множество А, напечатать четные элементы, входящие в другое множество (Паскаль) Марийка92 Помощь студентам 4 03.04.2011 17:38
Задано некоторое множество М и множество Т того же типа dark999 Помощь студентам 5 01.04.2011 14:17