IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> чтение текстового файла
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


есть текстовый файл:
Код
1 2
3


как эти цифры присвоить переменным a, b, c. что-то у меня не получается, напишите, пожалуйста, кому не лень только блок с read
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






var a, b, c: integer;
// ...
read(f, a, b, c);



Я надеюсь, уроки из прошлой темы извлечены, и теперь признаки конца строки соответствующие в файле? smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 20.09.2010 22:56) *

var a, b, c: integer;
// ...
read(f, a, b, c);



Я надеюсь, уроки из прошлой темы извлечены, и теперь признаки конца строки соответствующие в файле? smile.gif


ага, понял все, вот просто у меня есть текстовый файл, там данные типа

Код
<string> <integer> <char>
(типы разделены пробелами),

вот их не получается считать таким способом

Сообщение отредактировано: doorway -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Ну так любую цифру (1 2 3 твои) можно считать как в string, так и в integer, и в char...

Ну если там перенос после 2, то наверное надо:

readln(f, a, b);
read(f, c);


Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


проблема в том, что в таком случае надо точно знать какое количество символов отводится на <string>. Т.е:
var a:string; b: integer; c: char; k: byte;
// ...
read(f, a: k, b, c);


Сообщение отредактировано: sheka -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Цитата(Unconnected @ 20.09.2010 23:12) *

Ну так любую цифру (1 2 3 твои) можно считать как в string, так и в integer, и в char...

Ну если там перенос после 2, то наверное надо:

readln(f, a, b);
read(f, c);


получается так:
файл такой:
Код
aaa 1
2


код
a:string;
b,c: integer;
...
readln(f, a, b);
read©;
write(a,'--',b,'--',c);


выводит aaa 1--2--0

т.е., если первая переменная(a) при чтении файла имеет тип стринг, то данные с файла в переменную будут читаться не до пробела, а до конца строки. провел ни один эксперимент уже

Добавлено через 10 мин.
Цитата(sheka @ 20.09.2010 23:22) *

проблема в том, что в таком случае надо точно знать какое количество символов отводится на <string>. Т.е:
var a:string; b: integer; c: char; k: byte;
// ...
read(f, a: k, b, c);



Сообщение отредактировано: doorway -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
т.е., если первая переменная(a) при чтении файла имеет тип стринг, то данные с файла в переменную будут читаться не до пробела, а до конца строки.
Разумеется. Потому что строка из файла читается
1) либо до тех пор, пока выделенное под нее место не будет заполнено полностью
2) либо пока не встретится #13(символ конца строки). Всё, больше ничего. Пробел концом строки не является.

Вообще-то это один из первых советов при работе с текстовыми файлами: не использовать смешанные списки ввода. Нужно читать в строку до пробела - читай посимвольно (Char-ом) и соединяй символы в строку.

Цитата
проблема в том, что в таком случае надо точно знать какое количество символов отводится на <string>
Проблема - в том, что при ЧТЕНИИ нельзя указывать ширину поля, только при ЗАПИСИ это возможно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


есть файл из 10 строк, где записаны в строке
фамилию год пол

так вот эти данные надо считать и сравнить людей по годам, я собирался считать циклом каждую часть строки в двумерный массив. в один стринговый массив фамилию, в другой целый год, и в чарный пол. вот загвоздка на том, что первая идет фамилия стринговый тип и считывает всю строку.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Читай по строке в string, а потом эту строку разбивай на фамилию, год и пол, с помощью функций copy и pos.

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Цитата(Unconnected @ 20.09.2010 23:55) *

Читай по строке в string, а потом эту строку разбивай на фамилию, год и пол, с помощью функций copy и pos.


впринципе можно. а как получится, год же должен быть интегер
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(doorway @ 21.09.2010 1:17) *
как получится, год же должен быть интегер
Используй процедуру Val


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Цитата(Lapp @ 21.09.2010 2:48) *

Используй процедуру Val


процедуры нельзя в программе использовать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Если я не ошибаюсь, read - тоже процедура.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Цитата(sheka @ 21.09.2010 22:46) *

var a:string; b: integer; c: char; k: byte;
// ...
read(f, a: k, b, c);



в read после : говорит, что нужна ), почему?

Сообщение отредактировано: doorway -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(doorway @ 21.09.2010 23:59) *
в read после : говорит, что нужна ), почему?
Может, не после, а вместо?
Потому что в Паскале нет форматного read (как тебе уже говорил volvo). Строка читается до конца.
Сообщение, я согласен, не очень точное - там может быть и запятая..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской

Репутация: -  0  +


Цитата(Lapp @ 22.09.2010 2:12) *

Может, не после, а вместо?
Потому что в Паскале нет форматного read (как тебе уже говорил volvo). Строка читается до конца.
Сообщение, я согласен, не очень точное - там может быть и запятая..

а если надо считать строку только первые 15 символов?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гость






doorway, ответы надо не просматривать, а читать. Внимательно читать.

Цитата
а если надо считать строку только первые 15 символов?

И об этом я тоже написал. Повторять как-то не особо хочется. Ибо не факт, что ты соизволишь прочесть со второй попытки.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Виноват. Забыл. Хотел написать следующее:
var a:string[15]; b: integer; c: char; k: byte;
// ...
read(f, a, b, c);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гость






Ответ неверный smile.gif В C будет совсем не то, что ты ожидаешь smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Дык я не обращал внимание на это, ведь о строке думал :yes:
Согласен, там будет пробел, верно?
var a:string[15]; b: integer; c: char; k: byte;
// ...
read(f, a, b, c, с);

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.12.2019 1:22
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name