imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 23.11.2005, 10:24     # 1
GreatLion
Guest
 
Сообщения: n/a

Exclamation Помогите с Pascal Опять и Снова

Спасибо всем кто помго с предыдущим вопросом, но возник ноый. У меня никак не получилось считать из файла какие-то слова отдельно. Содержание файла D:\input.dat :
yes no yes no
Вот текст проги который я пытался :

program num;
var a,b:string;f:Text;

begin
assign(f,'d:\input.dat');
reset(f);
read(f,a);
read(f,b);
write(a,' - ',b);
read(a);{}
end.


выводит:
yes no yes no -
т.е. если тип string, то она считывает по строкам.
А если написать a,b : char, то она считывает по символам, т.е.
y - e
Помогите пожалуйста. Как сделать, чтобы она считывала по словам.
Т.е. она должна вывести yes - no.

Последний раз редактировалось GreatLion; 24.11.2005 в 09:16. Причина: Новая проблема
 
Старый 23.11.2005, 10:34     # 2
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Приводи текст программы и укажи каким текстовым редактором ты набираешь текст.
ЕЖ вне форума  
Старый 23.11.2005, 10:39     # 3
GreatLion
Guest
 
Сообщения: n/a

Текст проги:


program num;
var a:integer;f:file of integer;

begin
assign(f,'d:\input.dat');
reset(f);
read(f,a);
write(a);
read(a);{}
end.

Выводит:
13874

Содержание d:\input.dat:

26


Текстовый редактор - Turbo Pascal 7.0

Последний раз редактировалось GreatLion; 23.11.2005 в 10:46.
 
Старый 23.11.2005, 10:46     # 4
Al-x
Junior Member
 
Регистрация: 30.03.2003
Адрес: СПб
Сообщения: 162

Al-x МолодецAl-x МолодецAl-x Молодец
Попробуй объявить файловую переменную так:
Код:
var f        : text;
А после чтения из файла процедурой val() приводить к числу.

UPD: По идее так должно работать:
Код:
program num;
var a,code:integer;
f:Text;
buf:string;

begin
 assign(f,'d:\input.dat');
 reset(f);
 readln(f,s);
 val(s,a,code);
end.
__________________
640Kbytes should be enough for everything! (c) Bill Gates, 1981.
Все "спасибо" в репутацию

Последний раз редактировалось Al-x; 23.11.2005 в 10:56.
Al-x вне форума  
Старый 23.11.2005, 10:55     # 5
GreatLion
Guest
 
Сообщения: n/a

Большое спасибо. Получилось. Оказывается, надо было переменную объявить как Text, а считывать числа. Еще раз спасибо!
 
Старый 23.11.2005, 11:02     # 6
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Всё элементарно: когды ты в текстовом редакторе пишешь 26, то у тебя образуется два символа с шестнадцатеричными кодами 32 и 36. Когда ты читаешь из файла, при этом объявляя его типизированым file of int, то эти два кода воспринимаются как слово (два байта, 36 - старший, 32 - младший) и оно читается в твою целую двубайтовую переменную a. Если ты переведешь шестнадцатеричное 3632 в десятичное, то получишь как раз 13874.

Решение - читать файл не как типизированный целый, а как текстовый, и преобразовывать считанную строку в целое.

Al-x
Чутка опередил
ЕЖ вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 09:06.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.