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

Чтение данных из файла типа record

02.04.2014, 02:22. Показов 6967. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Исходные данные

5 кол-во покупателей
Laima Pusyte 4 13 15.5 8 45.4 12 5 31 4
Morka Morkute 1 15 5.1
Jurgis Puskus 2 1 5.4 22 15.78
Petras Rytinis 3 2 45.6 13 125.45 22 45.41
Algis Greitakojis 2 12 444.4 30 2.5

1 столбик-имена
2 столбик-сколько раз он ходил в магазин за один месяц
3,5,7.. столбик-день месяца
4,6,8.. столбик-сколько заплатил в тот день

Нужно считать данные из файла типа record. Сколько не пытался, никак не получается. Помогите придумать считывание для всех случаев, а не для определенного.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program Noname1;
const fin='duom2.txt';
    fout='rez2.txt';
type pokupateli=record
    imia:string[20];
    kol:integer;
end;
mas=array[1..100] of pokupateli;
var f,ff:text;
    i,n,j,dni,h:integer;
    a:mas;
//==============================
procedure chtenie;
begin
    assign(f,fin);
    reset(f);
    readln(f,n);
    for i:=1 to n do
        readln(f,a[i].imia,a[i].kol);
        ???
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2014, 02:22
Ответы с готовыми решениями:

Чтение данных из файла типа .m
Приветствую! Имеется программа от микроскопа, которая умеет конвертировать данные в формат...

Чтение данных типа int из файла
Не могу сделать так, чтобы данные считывались с файла, уже всё голову сломал. import...

Чтение из файла .dat в record
Здравствуйте. Есть запись: type zap=record mar: string; Nom: string; cvet:...

Ввод данных типа record
Такая проблема: если при описании типа record задаю переменные только числовых или только...

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
02.04.2014, 03:23 2
И что надо в массиве record-ов хранить? kol - это что такое?

Добавлено через 14 минут
В общем случае - так:
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
program Noname1;
const fin='duom2.txt';
    fout='rez2.txt';
type pokupateli=record
    imia:string[20];
    kol:integer;
end;
mas=array[1..100] of pokupateli;
var f,ff:text;
    i,n,j,dni,h:integer;
    a:mas;
//==============================
procedure chtenie;
var
  data : integer;
  price : double;
begin
  assign(f,fin);
  reset(f);
  readln(f,n);
  for i:=1 to n do
  begin
    read(f,a[i].imia, a[i].kol);
    writeln(a[i].imia);
    for j := 1 to a[i].kol do
    begin
      read(f, data, price);
      writeln('den : ', data:2, ', price :', price:7:3); // для проверки, что прочиталось действительно все...
    end;
    readln(f);
  end;
end;
 
begin
  chtenie;
end.
На твоем файле выдало:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Running "d:\test\makarrrr.exe"
Laima Pusyte
den:13, price: 15.500
den: 8, price: 45.400
den:12, price:  5.000
den:31, price:  4.000
Morka Morkute
den:15, price:  5.100
Jurgis Puskus
den: 1, price:  5.400
den:22, price: 15.780
Petras Rytinis
den: 2, price: 45.600
den:13, price:125.450
den:22, price: 45.410
Algis Greitakojis
den:12, price:444.400
den:30, price:  2.500
Можно было обойтись и без указания количества походов в магазин, используя цикл while not eoln(f) - читать до конца строки. Как строка закончилась - переход к следующему покупателю...

Цитата Сообщение от Makarrrr Посмотреть сообщение
Нужно считать данные из файла типа record
Только это не файл типа record, а совершенно обычный текстовый файл...
0
0 / 0 / 0
Регистрация: 30.01.2014
Сообщений: 3
02.04.2014, 03:30  [ТС] 3
В массиве record хранить все данные. Понимаю, что не хватает переменных в record, но ничего толкового написать в чтении не получается. Kol- кол-во походов в магазин. Мне к сожалению нужно именно, чтобы данные были типа record
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
02.04.2014, 11:32 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
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
{$mode objfpc}
 
program Noname1;
uses sysutils;
const fin='duom2.txt';
    fout='rez2.txt';
type
  tshoppingday =
  record
    data:integer;
    price:double;
  end;
  pokupateli=
  record
    imia:string[20];
    kol:integer;
    days:array of tshoppingday;
  end;
 
operator := (rhs : pokupateli) : string;
var
  i : integer;
  sh : tshoppingday;
begin
  with rhs do
  begin
    result := format('%20s %d', [imia, kol]);
    for sh in days do
      result := result + Format(' %d %f', [sh.data, sh.price]);
  end;
end;
 
type
mas=array[1..100] of pokupateli;
var f,ff:text;
    i,n,j,dni,h:integer;
    a:mas;
//==============================
procedure chtenie;
var
  data : integer;
  price : double;
  s : string;
begin
  assign(f,fin);
  reset(f);
  readln(f,n);
  for i:=1 to n do
  begin
    with a[i] do
    begin
      read(f, imia, kol);
      setlength(days, kol);
      for j := 0 to pred(kol) do
      with days[j] do
        read(f, data, price);
 
      s := a[i]; // test
      writeln(s);
      readln(f);
    end;
  end;
end;
 
begin
  chtenie;
end.
, теперь структура хранит всё, включая и все данные о походах в магазин. Или опять что-то не так? Тогда уж говори, что именно, с примером, "как хотелось бы, но это не получается". Или делай сам.

Странные люди, выбрасывают какой-то кусок кода, а потом еще и всё им не так, когда показываешь, как правильно. Хотя сами молчат как рыбы, и непонятно, чего хотят добиться в конечном итоге.
0
02.04.2014, 11:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2014, 11:32
Помогаю со студенческими работами здесь

Запись данных типа record в файл
Помогите записать данные тиипа рекорд в типизированный файл записей В следующий раз потрудись...

Реализовать запись в файл и чтение из файла данных, хранящихся в массиве объектов пользовательского типа
Друзья, нужен код записи и чтения данных с файла, записанных ранее, а точнее выполнить заполнение...

Записи. Считывание с текстового файла запись типа Record
Нужно обеспечить в задании считывание с консоли и текстового файла информации об успеваемости...

С помощью типа record создать таблицу данных
Добрый день. Помогите составить программу, задание следующие... составить программу, которая...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru