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

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

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

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


Гость






Помогите пожалуйста решить задачу выделения троичного числа на паскале.Програма должна быть написана на стандарте языка. Так же нельзя использовать массивы и строки....
Обрабатываемый текст вводиться с клавиатуры. Пример:
qjhjereh 1231 1100 sdhf1231 hjh110
Результат: 1100
Заранее благодарен...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

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

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


Объясни задание по подробней, что за троичные числа ? unsure.gif



--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Числа в троичной системе счисления всмысле)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

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

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


Вводишь строку, разбиваешь ее на слова ( Разбиение на слова. Все способы. ) Выделяешь очередное слово, идешь по нему, если в нем есть какие-либо символы кроме (0, 1, 2) то это НЕ число в троичной системе.

Вроде все smile.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


klem4, почти.
Цитата
Так же нельзя использовать массивы и строки....


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


Гость






Цитата
Так же нельзя использовать массивы и строки....
Тогда, как, извини, ты собрался хранить результат? Допустим, я буду вводить символы, которые гарантированно составляют число в системе счисления с основанием 3, КАК ты это число запомнишь (без строк и массивов), чтобы потом его же напечатать в качестве результата?

(я не сказал, что это невозможно, просто интересно, как ТЫ это себе представляешь?)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






В том то и дело что никак не представляю,поэтому и обратился за помощью....
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Perl. Just code it!
******

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

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


Какое-то странное задание, ну раз ничего нельзя использовать, буднем использовать видеопамять smile.gif) Это ведь не запрещено ?

Хотя это конечно маразм crazy.gif Но для хранения нашей последовательности мы не используем ни байта. Ну точнее один байт - ch и тот после ввода естественно будет хранить последний символ.

uses crt;

type

TVideoWord = record
Symbol, Attrib: Byte;
end;

TVideoText = array[1..43 * 50] of TVideoWord;

PVideoText = ^TVideoText;

function GetScreenPtr: Pointer;
begin
if ( Mem[0:$0410] and $30) = $30 then
GetScreenPtr := Ptr($B000, 0)
else
GetScreenPtr := Ptr($B800, 0)
end;

var
V: PVideoText;
Ch: char;
Count, i, back, j: Integer;
bad: Boolean;
begin
Clrscr;

V := GetScreenPtr;

Count := 0;

repeat
Ch := readkey;
if Ch <> #13 then begin
write(Ch);
inc(Count);
end;
until ch = #13;

writeln;

i := 1;

while (i <= count) do begin
while (Char(V^[i].Symbol) = ' ') and (i <= count) do inc(i);
if i <= count then begin
back := i;
bad := false;
while (Char(V^[i].Symbol) <> ' ') and (i <= count) do begin
if not(Char(V^[i].Symbol) in ['0'..'2']) then bad := true;
inc(i);
end;
if not bad then begin
writeln;
for j := back to pred(i) do write(Char(V^[j].Symbol));
end;
end;
end;

Readln;
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Угу...

Или рекурсия rolleyes.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






спасибо большое
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Perl. Just code it!
******

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

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


Гость, если честно, я очень сомневаюсь что задачу надо решать именно так smile.gif)))
Уточни задание, я уверено как минимум одну строковую переменную использовать можно. (Чтобы ввести последовательность). А больше и не надо ничего smile.gif



Volvo, а как еще можно ? Ума не приложу ...


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Я написал выше - рекурсией smile.gif Зачем использовать строку, если можно задействовать стек? Правда, будут небольшие проблемы при печати числа (оно захочет печататься "задом наперед", но это тоже преодолимо) smile.gif

klem4 Попробуй, кстати, хорошая разминка для мозгов будет smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Perl. Just code it!
******

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

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


Аа ты имеешь в виду по такомуже принципу (юзать видеопамять) но через стек, понятно, можно попробовать.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Цитата
(юзать видеопамять)
Я этого не говорил, это ТЫ сказал... Про видеопамять в моем посте не было ни слова...

Все я понял. klem4
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


а файлы можно использовать?...


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


Гость






используется только стандартный ввод и стандартный вывод...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гость






В общем, вот что у меня получилось (как и заказывали, без массивов, без строк, без файлов) smile.gif

Решение пока не открываю, может, кто-то захочет решить самостоятельно...

Спойлер (Показать/Скрыть)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Perl. Just code it!
******

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

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


smile.gif

uses crt;

type

PList = ^TList;

TList = record
Data: Char;
Next: PList;
end;

TStack = Object
public
constructor Create;
destructor Free;
procedure Push(value: Char);
procedure DisplayPart(_from, _to: PList);
procedure Main;
private
First: PList;
end;


constructor TStack.Create;
begin
First := nil;
end;

destructor TStack.Free;
var
R, T: PList;
begin

R := First;

while (R <> nil) do begin
T := R^.Next;
Dispose( R );
R := T;
end;

end;

procedure TStack.Push(value: Char);
var
R, T: PList;
begin

GetMem(R, sizeof(TList));

R^.Data := value;
R^.Next := nil;

if First = nil then First := R

else begin

T := First;

while (T^.Next <> nil) do T := T^.Next;

T^.Next := R;

end;

end;

procedure TStack.DisplayPart(_from, _to: PList);
var
R: PList;
begin

R := _from;

writeln;

while (R <> nil) and (Integer® <= Integer(_to)) do begin
write(R^.Data);
R := R^.Next;
end;

end;

procedure TStack.Main;
var
i, f, t: PList;
ch: Char;
bad: Boolean;
begin

repeat
ch := readkey;
if ch <> #13 then begin
write(ch);
Push(ch);
end;
until ch = #13;

writeln;

i := First;

while (i <> nil) do begin
while (i <> nil) and (i^.Data = ' ') do i := i^.Next;
if i <> nil then begin
f := i;
bad := false;
while (i <> nil) and (i^.Data <> ' ') do begin
if not (i^.Data in ['0'..'2']) then bad := true;
i := i^.Next;
end;
if not(bad) then DisplayPart(f, i);
end;
end;

end;

var
S: TStack;

begin
clrscr;

S.Create;
S.Main;
S.Free;

readln;
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гость






Это смотря какой язык считать стандартом... Объекты появились только с 5.5

До этого никакой поддержки ООП в Паскале не было smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Perl. Just code it!
******

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

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


Слушай, твою прогу еще не разбирал, но на соклько я понял если сразу ввести привильное число, дальшее ввод прекращается ? Я вот например хочу ввести '102 qwerrtt 123' ... Ну или как автор тест привел, нельзя ведб у тебя ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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