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

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

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

> Литерный тип данных), Помогите))
Cheburashka
сообщение 5.06.2009 16:52
Сообщение #1


Бывалый
***

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

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


В общем у меня возникла проблема с литерным типом((

В общем я хочу считать два числа к примеру 5 10.
Но они записаны в файле, и записаны следующим образом:
5           10
10 или 5

И вот когда я считываю первое число (Read (ch);), то оно отлично сохраняется, а вот ко второму числу я никак нимагу перейти(( Разъясните мне пожалуйста, как это сделать!

Сообщение отредактировано: Сергей Меркурьев - 5.06.2009 16:53


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 18)
volvo
сообщение 5.06.2009 16:58
Сообщение #2


Гость






Читать с переводом строки:
ReadLn(f, n1); Readln(f, n2);
Почему это именно литерный тип? Читаем как числа...
 К началу страницы 
+ Ответить 
Cheburashka
сообщение 5.06.2009 16:59
Сообщение #3


Бывалый
***

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

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


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


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 5.06.2009 17:01
Сообщение #4


Я.
****

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

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


Цитата(Сергей Меркурьев @ 5.06.2009 16:59) *

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

Код

Procedure probel;
begin
if ch=' ' then{здесь конекретно пробел,а можно и все что тебе не нужно}
begin
  read(fin,ch);
  probel'
end;
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 5.06.2009 17:02
Сообщение #5


Гость






Значит делай:
while not eoln(f) do
read(f, ch);
end;
readln(f);
 К началу страницы 
+ Ответить 
Lapp
сообщение 5.06.2009 17:02
Сообщение #6


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

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

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


Цитата(Сергей Меркурьев @ 5.06.2009 17:52) *
проблема с литерным типом((
В общем я хочу считать два числа к примеру 5 10.
Я только не понял, как ты в тип Char собираешься считывать 10


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


Бывалый
***

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

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


В общем я вам сейчас дам этот кусок программы, а Вы мне скажите в чём дело.

...
A[0]:=0;
Read(ch);
While ch in ['0'..'9'] do
begin
x:=ord(ch)-48;
for i:=A[0] downto 1 do
A[i+1]:=A[i];
A[1]:=x;
Inc(A[0]);
Read(ch)
end;

B[0]:=0;
Read(ch);
While ch in ['0'..'9'] do
begin
x:=ord(ch)-48;
for i:=B[0] downto 1 do
B[i+1]:=B[i];
B[1]:=x;
Inc(B[0]);
Read(ch)
end;
...

Где начинается строчка B[0]:=0, вот отсюда мне программа не считывает то что нужно!


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 5.06.2009 17:06
Сообщение #8


Гость






Я ж написал тебе - переведи строку: ReadLn, иначе ты пытаешься читать символы #13 #10, а тебе оно надо?
 К началу страницы 
+ Ответить 
Cheburashka
сообщение 5.06.2009 17:08
Сообщение #9


Бывалый
***

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

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


...
A[0]:=0;
Read(ch);
While ch in ['0'..'9'] do
begin
x:=ord(ch)-48;
for i:=A[0] downto 1 do
A[i+1]:=A[i];
A[1]:=x;
Inc(A[0]);
Read(ch)
end;
Readln (input);
B[0]:=0;
Read(ch);
While ch in ['0'..'9'] do
begin
x:=ord(ch)-48;
for i:=B[0] downto 1 do
B[i+1]:=B[i];
B[1]:=x;
Inc(B[0]);
Read(ch)
end;
...

Вы это имели ввиду? Если да то она считывает №26

Добавлено через 11 мин.
Ну так что? Ы чём здесь ошибка заключается?

Сообщение отредактировано: Сергей Меркурьев - 5.06.2009 17:09


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 5.06.2009 17:32
Сообщение #10


Гость






Цитата
Если да то она считывает №26
Вот понимаешь, в чем дело? У меня - не считывает... Смотри:
Прикрепленное изображение
Как видишь, прочиталось все содержимое этих двух строк, посмотри на массивы A и B, и увидишь... У тебя в файле после последнего числа был перевод строки? Добавь, если не было:
10<enter>
5<enter>
<конец файла>
 К началу страницы 
+ Ответить 
Cheburashka
сообщение 5.06.2009 17:41
Сообщение #11


Бывалый
***

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

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


Какой конец строки?
В общем вот программа:
Program N_2;
type TLong=array[0..102] of byte;
Var A,B,S:TLong;
ch:char;
i,x,p,k,max:integer;
Begin
assign (input,'input.txt');
reset (input);
assign (output,'output.txt');
rewrite (output);

A[0]:=0;
Read(ch);
While ch in ['0'..'9'] do
begin
x:=ord(ch)-48;
for i:=A[0] downto 1 do
A[i+1]:=A[i];
A[1]:=x;
Inc(A[0]);
Read(ch)
end;
Readln(input);
B[0]:=0;
Read (ch);
While ch in ['0'..'9'] do
begin
x:=ord(ch)-48;
for i:=B[0] downto 1 do
B[i+1]:=B[i];
B[1]:=x;
Inc(B[0]);
Read(ch)
end;
k:=1; s[0]:=0; s[1]:=0;
If A[0]>B[0] then max:=A[0]
else max:=B[0];
For i:=1 to max do
Begin
p:=0;
p:=p+A[i]+B[i];
If p>9 then begin
s[i]:=p mod 10;
p:=p div 10;
End
else s[i]:=p;
inc(s[0]);
End;
{For i:=A[0] downto 1 do
Write (a[i]);
Writeln;
For i:=B[0] downto 1 do
Write (b[i]);
Writeln; }
For i:=S[0] downto 1 do
Write (S[i]);
End.


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 5.06.2009 17:58
Сообщение #12


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

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

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


Сереж, а зачем так сложно?
Нельзя просто считать в строку, а потом ее обработать?
типа так:

ReadLn(s);
A[0]:=Length(s);
for i:=1 to Length(s) do A[A[0]-i+1]:=s[i];


Я сначала подумал, что ты извращаешься, чтоб не ограничиваться длиной 255, а ты оказывается только до 102 все равно..

М
Не дело это, в теории разбирать задачу.
Переношу.



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


Бывалый
***

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

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


Ну в принципе можно и строкой)) Но меня учителя попросили чтобы я разобрал именно данный способ)
Ну так что там с считыванием второго числа? У меня до сих пор не работает...


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 5.06.2009 18:14
Сообщение #14


Гость






Ну, у меня вот так отработало:
  A[0]:=0;
Read(ch);
While ch in ['0'..'9'] do
begin
x:=ord(ch)-48;
for i:=A[0] downto 1 do
A[i+1]:=A[i];
A[1]:=x;
Inc(A[0]);
Read(ch)
end;
B[0]:=0;
while not (ch in ['0' .. '9']) do read(ch); { <--- пропускаем все до цифры }
While ch in ['0'..'9'] do
begin
x:=ord(ch)-48;
for i:=B[0] downto 1 do
B[i+1]:=B[i];
B[1]:=x;
Inc(B[0]);
Read(ch)
end;
, но печататься у тебя ничего не будет, все символы, которые есть в S - служебные (непечатные), надо их переводить назад, прибавляя 48...
 К началу страницы 
+ Ответить 
Lapp
сообщение 5.06.2009 18:19
Сообщение #15


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

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

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


Цитата(volvo @ 5.06.2009 19:14) *
но печататься у тебя ничего не будет, все символы, которые есть в S - служебные (непечатные), надо их переводить назад, прибавляя 48...
Почему? S же не символьный, а байты. Печатается. У меня напечатало 15 (как я понимаю, правильно). Но у меня нет ТР, только FP.


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


Гость






ypriamii.gif Забыл про перенаправление... В файл же печатается... Вот почему я не люблю работать с Input-ом и Output-ом...
 К началу страницы 
+ Ответить 
Cheburashka
сообщение 5.06.2009 18:26
Сообщение #17


Бывалый
***

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

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


Разъясните что такое TP (turbo pascal?) и FP?

Добавлено через 2 мин.
Кстати спасибо за пояснение. Теперь программа работает)))


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 5.06.2009 18:34
Сообщение #18


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

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

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


Цитата(Сергей Меркурьев @ 5.06.2009 19:26) *
Разъясните что такое TP (turbo pascal?) и FP?
Да, а FP = FreePascal, http://freepascal.org/


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


Бывалый
***

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

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


Ах, ну да я догадывался) Спасибо.


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 18.07.2025 17:54
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"