Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
3 / 3 / 3
Регистрация: 17.11.2012
Сообщений: 40

Создать типизированный файл, который содержит сведения об автомобилях

04.01.2013, 00:27. Показов 2075. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
program n1;
 
type
  rec = record
    marka: string[20];
    firma: string[20];
    cost: integer;
  end;
 
var
  cars: file of rec;
 
procedure addCar;
begin
  with cars do
  begin
    write('марка: ');
    readln(marka);
    write('фирма: ');
    readln(factory);
    write('цена: ');
    readln(cost);
  end;
end;
 
begin
  Assign(cars, 'C://cars');
  {$I-}
  Reset(cars);
  {$I+}
  if IOresult = 0 then
  addCar;
  with cars do
  begin
  write(marka,'%');
  writeln(factory,'%');
  writeln(cost);
  end;
end.
кричит, мол Program.pas(18) : Неизвестное имя 'marka'
хотя объявил в начале.
что не так?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.01.2013, 00:27
Ответы с готовыми решениями:

Создать типизированный файл, который содержит несколько вещественных чисел, после чего вывести эти вещественные числа из типизированного файла на эк
Создать типизированный файл, который содержит несколько вещественных чисел, после чего вывести эти вещественные числа из типизированного...

Создать типизированный файл, который содержит несколько вещественных чисел, после чего вывести на экран монитора эти вещественные числа в двоичну сис
Создать типизированный файл, который содержит несколько вещественных чисел, после чего вывести на экран монитора эти вещественные числа в...

Создать типизированный файл avto, содержащий сведения об автомобилях
Program zadanie1; type avto = record marka:string; nomer:string; fam:string; end; var a:array of avto; ...

13
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
04.01.2013, 00:32
вы используете для записи тип rec, а записывать пытаетесь в cars
Цитата Сообщение от mrflo Посмотреть сообщение
with cars do
то есть рассматриваете файл как запись, а не файл записей...
0
3 / 3 / 3
Регистрация: 17.11.2012
Сообщений: 40
04.01.2013, 00:56  [ТС]
так то да.
а теперь ещё раз
Цитата Сообщение от КонецСвета Посмотреть сообщение
что же касается программы, то вы используете для записи тип rec, а записывать пытаетесь в cars
Сообщение от mrflo
with cars do
то есть рассматриваете файл как запись, а не файл записей...
но для школьника

Добавлено через 14 минут
вы предлагаете чесать через cars.marka и cars.factory етс?
0
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
04.01.2013, 01:09
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
type
  rec = record
    marka: string[20];
    firma: string[20];
    cost: integer;
  end;
 
var cars: file of rec;
    c: char;
 
procedure Vvod(var car: rec);
begin
  with car do
  begin
    write('марка: ');
    readln(marka);
    write('фирма: ');
    readln(firma);
    write('цена: ');
    readln(cost);
  end;
end;
 
procedure addCar;
var car: rec;
begin
Vvod(car);
  if FileExists('D:\cars.dta') then
    begin
    reset(cars);
    seek(cars,filesize(cars));
    write(cars,car);
    end else
      begin
      rewrite(cars);
      write(cars,car);
      end;
end;
 
procedure VyvodF;
const l='----------------------------------------';
      s='|    Марка    |     Фирма     |  Цена  |';
var car: rec;
begin
reset(cars);
writeln(l);
writeln(s);
writeln(l);
while not eof(cars) do
  begin
  read(cars,car);
  with car do
    writeln('|',marka:10,'|':4,firma:14,'|':2,cost:7,'|':2);
  end;
writeln(l); 
end;
 
begin
  Assign(cars,'D:\cars.dta');
repeat
write('Записать данные в файл? (y/n) '); readln(c);
if c='y' then addCar;
until c='n';
VyvodF;
end.
2
3 / 3 / 3
Регистрация: 17.11.2012
Сообщений: 40
04.01.2013, 01:53  [ТС]
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

upd: глянул в книжке, там это делают через доп. переменную.
замутил
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
program n1;
 
type
  rec = record
    marka: string[20];
    firma: string[20];
    cost: integer;
  end;
 
var
  cars: file of rec;
  temp:rec;
 
procedure addCar;
begin
  with temp do
  begin
    write('марка: ');
    readln(marka);
    write('фирма: ');
    readln(factory);
    write('цена: ');
    readln(cost);
    write(cars,temp);
  end;
end;
 
begin
  Assign(cars, 'C://cars');
  {$I-}
  Reset(cars);
  {$I+}
  if IOresult = 0 then
  addCar;
  with cars do
  begin
  write(marka,'%');
  writeln(factory,'%');
  writeln(cost);
  end;
end.
теперь ругается так
Program.pas(21) : Неизвестное имя 'factory'

Добавлено через 1 минуту
отсюда вопрос: откуда у меня руки?

Добавлено через 9 минут
если я объявил firma а использую factory
это лечится?

Добавлено через 32 минуты
КонецСвета, а что делать, если он просит ; в начале строки?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
begin
  Assign(cars, 'C://cars.txt');
  Reset(cars);
  repeat
  begin
  write('есть что записать?(Y/N)' ); readln(q);
  if q= 'Y' or q='y' then begin
  addCarData;
  addCarToFile;
  end
  else halt(1);
end;
end.
в последнюю строку
Program.pas(54) : Ожидалось ';'
0
3 / 3 / 3
Регистрация: 17.11.2012
Сообщений: 40
04.01.2013, 19:40  [ТС]
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
68
69
70
71
program n1;
type 
rec=record
marka:string[20];
model:string[20];
cost:integer;
end;
var
cars:file of rec;
temp:rec;
q:char;
procedure addcar;
begin
with temp do
begin
write('марка: ');
readln(marka);
write('модель: ');
readln(model);
write('цена: ');
readln(cost);
end;
end;
procedure cartofile;
begin
if fileexists('C://cars.base')
then
begin
reset(cars);
seek (cars); filesize(cars);
write(cars, temp);
end
else
begin
rewrite(cars);
write(cars,temp);
end;
end;
procedure screenoutput;
var car:rec;
begin
reset(cars);
writeln('--------------------------------------------------------------');
writeln('I  Марка            I  Модель            I  Цена             I');
writeln('I-------------------I--------------------I-------------------I');
while not eof(cars) do 
begin
read(cars,car);
with car do
begin
writeln('I',marka[20],'I',model[20],'I',cost[20],'I');
writeln('I-------------------I--------------------I-------------------I');
end;
writeln('--------------------------------------------------------------');
end;
end;
 
begin;
assign(cars, 'C://cars.base');
reset(cars);
repeat;
begin;
write('есть что записать?(Y/N) ');
readln(q);
if q='Y' or q='y' then begin;
addcar;
cartofile;
end;
if q='n' or q='N' then screenoutput;
end;
end.
второй день мучаюсь
0
 Аватар для ermolay
3451 / 2389 / 2135
Регистрация: 04.12.2011
Сообщений: 3,966
04.01.2013, 20:27
1. repeat без until
2. в процедуре seek не хватает параметра seek(cars,15) (например);
3. в 51 строке - cost - без квадратных скобок, (марка и модель вероятно тоже)..
4. вот так верно: if (q='Y') or (q='y') then begin; (у вас не было скобок)
5. точки с запятой после begin
6. форматированный код более читабелен

вот так прога пытается запуститься, далее - сами..
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
68
69
70
71
72
73
74
75
76
77
78
79
program n1;
 
type
  rec = record
    marka: string[20];
    model: string[20];
    cost: integer;
  end;
 
var
  cars: file of rec;
  temp: rec;
  q: char;
 
procedure addcar;
begin
  with temp do
  begin
    write('марка: ');
    readln(marka);
    write('модель: ');
    readln(model);
    write('цена: ');
    readln(cost);
  end;
end;
 
procedure cartofile;
begin
  if fileexists('C://cars.base')
  then
  begin
    reset(cars);
    seek(cars,5); filesize(cars);
    write(cars, temp);
  end
  else
  begin
    rewrite(cars);
    write(cars, temp);
  end;
end;
 
procedure screenoutput;
var
  car: rec;
begin
  reset(cars);
  writeln('--------------------------------------------------------------');
  writeln('I  Марка            I  Модель            I  Цена             I');
  writeln('I-------------------I--------------------I-------------------I');
  while not eof(cars) do 
  begin
    read(cars, car);
    with car do
    begin
      writeln('I', marka[20], 'I', model[20], 'I', cost, 'I');
      writeln('I-------------------I--------------------I-------------------I');
    end;
    writeln('--------------------------------------------------------------');
  end;
end;
 
begin
  assign(cars, 'C://cars.base');
  reset(cars);
  repeat
    begin
      write('есть что записать?(Y/N) ');
      readln(q);
      if (q = 'Y') or (q = 'y') then 
      begin;
        addcar;
        cartofile;
      end;
      if (q = 'n') or (q = 'N') then screenoutput;
    end;
  until q = 'n';
end.
1
Почетный модератор
 Аватар для КонецСвета
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
05.01.2013, 00:10
mrflo, у меня смутное чувство, что вы используете не PascalABC.NET, а Турбо паскаль. Я не ошибаюсь?
тогда все надо немного по другому оформлять..
пишите, если актуально =)
0
3 / 3 / 3
Регистрация: 17.11.2012
Сообщений: 40
05.01.2013, 15:52  [ТС]
именно pascalABC.NET
0
3 / 3 / 3
Регистрация: 17.11.2012
Сообщений: 40
05.01.2013, 16:07  [ТС]
ermolay,
2. там нужно конец файла найти. seek (cars, filesize(cars)); так вроде
3. как тогда cost ограничить на 20 символов?(в моей индусской интерпретации это ещё на 10 строк кода)

Добавлено через 6 минут
и табличка некорректно выводится

Добавлено через 10 секунд
и табличка некорректно выводится
0
 Аватар для ermolay
3451 / 2389 / 2135
Регистрация: 04.12.2011
Сообщений: 3,966
05.01.2013, 16:16
Цитата Сообщение от mrflo Посмотреть сообщение
cost ограничить на 20 символов?
ограничивается длина строки при описания типа записи для экономии используемой памяти. В Вашем случае - длина строки при описании марки и модели. То есть когда вы будете забивать данные, программа будет игнорировать символы после 20-го в названии.. ээ.. например тех же жигулей) А в 51 строке программа считывает данные из файла, там скобки просто не нужны.
0
3 / 3 / 3
Регистрация: 17.11.2012
Сообщений: 40
05.01.2013, 16:40  [ТС]
надо чтобы в 51 строке ровная таблица получилась
0
 Аватар для ermolay
3451 / 2389 / 2135
Регистрация: 04.12.2011
Сообщений: 3,966
05.01.2013, 17:06
Цитата Сообщение от mrflo Посмотреть сообщение
ровная таблица
аа.. тогда так:
Pascal
1
model:20
для данного случая ровнее будет так
Pascal
1
writeln(marka,' ':20-length(marka),model,' ':20-length(model),cost);
1
3 / 3 / 3
Регистрация: 17.11.2012
Сообщений: 40
05.01.2013, 18:29  [ТС]
мм
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.01.2013, 18:29
Помогаю со студенческими работами здесь

Файл содержит сведения об автомобилях: марка, год выпуска, фамилия владельца и номер. Выведите сведения об автомобилях задаваемой марки и определите их средний возраст. Среди всех автомобилей найдите
Файл содержит сведения об автомобилях: марка, год выпуска, фамилия владельца и номер. Выведите сведения об автомобилях задаваемой марки и...

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

Создать типизированный файл, который содержит несколько вещественных чисел
Создать типизированный файл, который содержит несколько вещественных чисел, после чего вывести эти вещественные числа с типизированного...

Создать типизированный файл, который содержит данные о билетах на авиарейсы
Создать типизированный файл, который содержит данные о билетах на авиарейсы. Поля записи – страна, дата вылета, самолет, класс, цена....

Создать типизированный файл, который содержит несколько целых чисел
кто шарит файлы Создать типизированный файл, который содержит несколько целых чисел, после чего вывести эти целые числа из...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru