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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2012, 10:35   #1
odinchik
 
Регистрация: 06.06.2010
Сообщений: 7
По умолчанию работа с файлом.информация по турфирме.Записи(record)

в файле находится информация по турфирме: страна, отель, стоимость путевки,звездность. этот файл я сделала.
задания:
1. вывести страну и отель, где отели с 3 звездами.
2. найти страну и отель с минимальной стоимостью путевки. и вывести все нужно в другой файл

я прочитала всю теорию по работе с файлами в Паскале, но на практике ничего не получается. полнейший блонд.
вот что я смогла родить
Код:
Program Turfirma;

type tabl=record
  country:string[10];
  name:string[14];
  price:integer;
  stars:integer;
end;
var ved: array [1..100] of hotel;
буду благодарна, если кто-то откликнется и поможет решить.


input.txt

Последний раз редактировалось Stilet; 02.06.2012 в 11:17.
odinchik вне форума Ответить с цитированием
Старый 02.06.2012, 11:28   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Ну первое, оно же главное. Ваш input.txt - не типизированный, а текстовый файл. Это значит, что придется "разбирать" каждую считанную строку.

Алгоритм:
Код:
открыть файл (исходный)
считать строку (из исходного файла)
разобрать считанную строку на составляющие
проверить "звездность" отеля, если она = 3, вывести информацию
проверить цену, если минимальна - заменить информацию об отеле с минимальной ценой (например писать её в отдельную переменную)
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 02.06.2012, 11:29   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Считывание:
Код:
k:=0;min:=0;
while not eof(f) do begin
 readln(f,s);
 i:=pos(s,',');ved[k].country:=copy(s,1,i);delete(s,1,i); 
 i:=pos(s,',');ved[k].name:=copy(s,1,i);delete(s,1,i); 
 i:=pos(s,',');ved[k].price:=copy(s,1,i);delete(s,1,i); 
 i:=Length(s);ved[k].stars:=copy(s,1,i);
 if ved[k].price<ved[min].price then min:=k;
 inc(k);
end;
Где: f:text - текстовый файл, который ты прикладываешь, открытый с помошью reset();
k:integer - просто счетчик min:integer - номер минимального

А дальше ved[min] даст тебе страну с минимальной стоимостью.
Смысл ясен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.06.2012, 11:55   #4
odinchik
 
Регистрация: 06.06.2010
Сообщений: 7
По умолчанию

спасибо за отклики!!! вы потрясающие люди!

Цитата:
Сообщение от Stilet Посмотреть сообщение
Считывание:
[CODE]

Смысл ясен?

нет, я такой дуб.
вот что я написала...

type tabl=record
country:string[10];
name:string[14];
price:integer;
stars:integer;
end;
var ved: array [1..100] of tabl;
f,f1:text;
k:integer;
min:integer;
i:integer;
c:char;
begin
assign (f, 'H:\input.txt');
assign (f1, 'H:\output.txt');
reset (f); rewrite (f1);

что дальше?

"i:=pos(s,',');ved[k].country:=copy(s,1,i);delete(s,1,i) ;
i:=pos(s,',');ved[k].name:=copy(s,1,i);delete(s,1,i);
i:=pos(s,',');ved[k].price:=copy(s,1,i);delete(s,1,i);
i:=Length(s);ved[k].stars:=copy(s,1,i);
if ved[k].price<ved[min].price then min:=k;
inc(k);
end;" это я вообще не понимаю, я в Паскале мало соображаю.вроде когда теорию читаю-все ясно.

Последний раз редактировалось odinchik; 02.06.2012 в 12:04.
odinchik вне форума Ответить с цитированием
Старый 02.06.2012, 12:27   #5
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Ну я бы сделал тип элемента min не integer, а tabl.

Прочитайте мануал по функции pos.
В текстовом виде стока
Код:
i:=pos(s,',');ved[k].country:=copy(s,1,i);delete(s,1,i) ;
выглядит так: найти в строке позицию запятой, скопировать все до запятой, удалить все до запятой.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 02.06.2012, 13:08   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Vanta11a, Stilet, вам не кажется, что вы не совсем правы? Вместо того, чтобы говорить, как распарсить текстовый файл, сказали бы, что обычно в таких заданиях сам файл должен быть файлом записей. Тогда его нужно создавать не в блокноте, а в том же паскале программно.

Я не говорю, что вы написали что-то неправильное, но преподаватель вполне может не засчитать такое решение. Задача стоит в получении навыков работы с типизированными файлами, а не с текстовыми
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 02.06.2012, 13:15   #7
odinchik
 
Регистрация: 06.06.2010
Сообщений: 7
По умолчанию

BDA, привет!)
по заданию я сама создаю текстовый файл, и из него извлекаю информацию для решения двух задач.
а выполненные задачи должны сохраняться в другой блокнотовский файл, который создает сама программка.)
odinchik вне форума Ответить с цитированием
Старый 02.06.2012, 13:37   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

odinchik, то есть вы на 100% уверены, что файл должен быть текстовым, а не файлом записей?
Я не совсем точно выразился. Файл записей будете заполнять все равно вы, но только с помощью программы на паскале.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 02.06.2012, 13:41   #9
odinchik
 
Регистрация: 06.06.2010
Сообщений: 7
По умолчанию

BDA, да, Вы наверное правы.
про текстовый на самом деле не уверена, может быть и типизированным)
odinchik вне форума Ответить с цитированием
Старый 02.06.2012, 13:43   #10
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Типизированный и нетипизированный файл - две большие разницы, как говорят в Одессе.
Хотя может и не такие уж большие.
Определитесь, какой Вам надо.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль.Записи (RECORD). Alex20 Помощь студентам 7 27.11.2011 13:28
Передача записи (Record) с данными посети (Indy) Archangel_x Работа с сетью в Delphi 3 06.06.2011 11:38
Записи(record) mexx1337 Паскаль, Turbo Pascal, PascalABC.NET 3 20.05.2011 05:41
Записи (record) mexx1337 Паскаль, Turbo Pascal, PascalABC.NET 1 12.05.2011 23:43
Сложная структура записи (record+array) Alex Cones Общие вопросы Delphi 20 20.10.2009 19:10