![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Flyer |
![]()
Сообщение
#1
|
Гость ![]() |
Помогите пожалуйста решить задачу выделения троичного числа на паскале.Програма должна быть написана на стандарте языка. Так же нельзя использовать массивы и строки....
Обрабатываемый текст вводиться с клавиатуры. Пример: qjhjereh 1231 1100 sdhf1231 hjh110 Результат: 1100 Заранее благодарен... |
![]() ![]() |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Объясни задание по подробней, что за троичные числа ?
![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Гость |
![]()
Сообщение
#3
|
Гость ![]() |
Числа в троичной системе счисления всмысле)
|
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Вводишь строку, разбиваешь ее на слова ( Разбиение на слова. Все способы. ) Выделяешь очередное слово, идешь по нему, если в нем есть какие-либо символы кроме (0, 1, 2) то это НЕ число в троичной системе.
Вроде все ![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
мисс_граффити |
![]()
Сообщение
#5
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
klem4, почти.
Цитата Так же нельзя использовать массивы и строки.... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата Так же нельзя использовать массивы и строки.... Тогда, как, извини, ты собрался хранить результат? Допустим, я буду вводить символы, которые гарантированно составляют число в системе счисления с основанием 3, КАК ты это число запомнишь (без строк и массивов), чтобы потом его же напечатать в качестве результата?(я не сказал, что это невозможно, просто интересно, как ТЫ это себе представляешь?) |
Гость |
![]()
Сообщение
#7
|
Гость ![]() |
В том то и дело что никак не представляю,поэтому и обратился за помощью....
|
klem4 |
![]()
Сообщение
#8
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Какое-то странное задание, ну раз ничего нельзя использовать, буднем использовать видеопамять
![]() Хотя это конечно маразм ![]() 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";'
|
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Угу...
Или рекурсия ![]() |
Гость |
![]()
Сообщение
#10
|
Гость ![]() |
спасибо большое
|
klem4 |
![]()
Сообщение
#11
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Гость, если честно, я очень сомневаюсь что задачу надо решать именно так
![]() Уточни задание, я уверено как минимум одну строковую переменную использовать можно. (Чтобы ввести последовательность). А больше и не надо ничего ![]() Volvo, а как еще можно ? Ума не приложу ... -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Я написал выше - рекурсией
![]() ![]() klem4 Попробуй, кстати, хорошая разминка для мозгов будет ![]() |
klem4 |
![]()
Сообщение
#13
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Аа ты имеешь в виду по такомуже принципу (юзать видеопамять) но через стек, понятно, можно попробовать.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата (юзать видеопамять) Я этого не говорил, это ТЫ сказал... Про видеопамять в моем посте не было ни слова...Все я понял. klem4 |
мисс_граффити |
![]()
Сообщение
#15
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
а файлы можно использовать?...
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Гость |
![]()
Сообщение
#16
|
Гость ![]() |
используется только стандартный ввод и стандартный вывод...
|
volvo |
![]()
Сообщение
#17
|
Гость ![]() |
В общем, вот что у меня получилось (как и заказывали, без массивов, без строк, без файлов)
![]() Решение пока не открываю, может, кто-то захочет решить самостоятельно... Спойлер (Показать/Скрыть)
|
klem4 |
![]()
Сообщение
#18
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
![]() 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(r) <= 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";'
|
volvo |
![]()
Сообщение
#19
|
Гость ![]() |
Это смотря какой язык считать стандартом... Объекты появились только с 5.5
До этого никакой поддержки ООП в Паскале не было ![]() |
klem4 |
![]()
Сообщение
#20
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Слушай, твою прогу еще не разбирал, но на соклько я понял если сразу ввести привильное число, дальшее ввод прекращается ? Я вот например хочу ввести '102 qwerrtt 123' ... Ну или как автор тест привел, нельзя ведб у тебя ?
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 31.07.2025 5:20 |