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

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

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

 
 Ответить  Открыть новую тему 
> Литерный тип данных), Помогите))
сообщение
Сообщение #1


Бывалый
***

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

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


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

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

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

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


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


Гость






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


Бывалый
***

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

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


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


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


Я.
****

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

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


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

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

Код

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


Гость






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


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

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

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


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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Я ж написал тебе - переведи строку: ReadLn, иначе ты пытаешься читать символы #13 #10, а тебе оно надо?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 мин.
Ну так что? Ы чём здесь ошибка заключается?

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


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


Гость






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


Бывалый
***

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

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


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


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


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

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

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


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


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


Гость






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


Бывалый
***

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

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


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

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


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


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

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

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


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


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


Бывалый
***

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

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


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


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

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

 





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