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

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

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

 
 Ответить  Открыть новую тему 
> Функция, замена цифр из т.файла на предыдущую
Alex7
сообщение 14.12.2005 8:47
Сообщение #1


Пионер
**

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

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


Нужно заменить все числа из тектового файла, где они записаны последовательностью(можно считать, что через один пробел) и напечатать эти числа, только проинвертируя каждую их цифру на предыдущую.
Как мне правильно читать с файла?
Program Zamina(Lab11);
Uses crt;
Var z: integer;
a,fname,rad: string;
f:text;
Function Zam(a:string):string;
Var i: byte;
begin
For i:=1 to length(a) do
begin
If a[i]='0' then a[i]:='9';
If a[i]='1' then a[i]:='0';
If a[i]='2' then a[i]:='1';
If a[i]='3' then a[i]:='2';
If a[i]='4' then a[i]:='3';
If a[i]='5' then a[i]:='4';
If a[i]='6' then a[i]:='5';
If a[i]='7' then a[i]:='6';
If a[i]='8' then a[i]:='7';
If a[i]='9' then a[i]:='8';
end;
zam:=a;
end;
Begin
clrscr;
Repeat
z:=0;
Writeln('‚ўҐ¤iвм i¬''п д ©«г'); readln(fname);
assign(f,fname);
{$I-}
reset(f);
{$I+}
if ioresult<>0 then
begin
writeln('ЌҐЇа ўi«м­Ґ i¬''п. ” ©« ­Ґ §­ ©¤Ґ­®!');
Inc(z);
end;
Until z=0;
Writeln;
Readln(f,rad);
repeat
begin
a:=Copy(rad,1,pos(' ',rad)-1); delete(rad,1,pos(' ',rad));
Write(a); gotoxy(15,wherey);Writeln(#26,' ',zam(a));
end;
until Z=length(rad);
Readln;
End.


Сообщение отредактировано: Alex7 - 14.12.2005 8:49


Прикрепленные файлы
Прикрепленный файл  zam.txt ( 171 байт ) Кол-во скачиваний: 178
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 14.12.2005 8:55
Сообщение #2


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

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

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


находишь группу цифр и делаешь с ней вот так :

uses crt;
var
s : string;
i : integer;
temp : char;
begin
clrscr;
readln(s);
for i := 1 to length(s) div 2 do begin
temp := s[i];
s[i] := s[length(s)-i+1];
s[length(s)-i+1] := temp;
end;
writeln(s);

end.


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


Гость






klem4, не пойдет.. Что делает твоя программа? Я ввел '123' - получил перевертыш: '321' А нужно было - КАЖДУЮ цифру строки заменить на предыдущую: '012'

Задания будем читать внимательно, или будем постить то, что первое пришло в голову? nea.gif
   for i := 1 to length(s) do
if s[i] in ['1'..'9'] then s[i] := chr(ord(s[i])-1) else s[i] := '9';
 К началу страницы 
+ Ответить 
klem4
сообщение 14.12.2005 11:13
Сообщение #4


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

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

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


Действительно, перепутал с инверсией ...


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


Пионер
**

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

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


for i := 1 to length(s) do
if s[i] in ['1'..'9'] then s[i] := chr(ord(s[i])-1) else s[i] := '9';

Да, но мы ж читаем стринг из файла, а там находится последовательность чисел, значит там есть между ними и пробелы! А по твоему условию они буду заменены на '9'.
Так не идет. Может так будет правильно?
for i := 1 to length(s) do
if s[i] in ['1'..'9'] then s[i] := chr(ord(s[i])-1) else
if s[i]<>#32 then s[i] := '9';

Так думаю это будет правильно, НО, опять таки же(это моя ошибка) я не указал что именно от меня требовали, а именно:
Код
Разработать ф-я, которая из заданого беззнакового числа формирует новое число путем замены цифр предыдущего на соответствующую меньшую.
Параметр ф-и- [u]число[/u], которое нужно заменить

Мне препод сказал, что нужно читать по числам, молв, что read это может делать без проблем, но разве можно ридать(читать) из текстового файла по цифрам, а не по строкам?

Сообщение отредактировано: Alex7 - 15.12.2005 19:46
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Alex7
сообщение 17.12.2005 14:08
Сообщение #6


Пионер
**

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

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


Клмн!
Не хочет работать! я попробовал уже который способ!
Но ничего кроме преобразования одного, или всех одновременно(нельзя красиво вывести, в виде таблици) чисел вместе!
ХЕЛП! wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 17.12.2005 14:15
Сообщение #7


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

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

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


Я не понимаю что тебе опять не понравилось ...

во первых

Цитата
Да, но мы ж читаем стринг из файла, а там находится последовательность чисел,


Файл у тебя описан как текстовый, соответственно состоит из СТРОК. Читаешь строку и применяешь к ней то, что написано Volvo. Результатом будет новая строка, в которой 0 заменен 9, 1 на 0, 2 на 1 и т.д.


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


Пионер
**

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

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


klem4 А ты прочитал полностью мой пост?
Строки, то которые мы читаем тоже состоят из чисел межу которыми знаки пробела!
а по его условию они(пробелы), т.к. не принадлежат к ['1'..'9'] будут заменятся на '9' ! Понимаешь?
Но это такое, описка, я это в том же посте подправил.
Мне вот чо собственно надо(опять таки же я это написал выше!):

Цитата
Так думаю это будет правильно, НО, опять таки же(это моя ошибка) я не указал что именно от меня требовали, а именно:
Код

Разработать ф-ю, которая из заданого беззнакового числа формирует новое число путем замены цифр предыдущего на соответствующую меньшую.
Параметр ф-и- [u]число[/u], которое нужно заменить



Сообщение отредактировано: Alex7 - 17.12.2005 16:57
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 17.12.2005 19:08
Сообщение #9


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

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

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


У тебя в цикле идет проверка if s[i] in ['1'..'9'] then ... else ...

надо просто добавить еще оду проверку, окончательный вариант :


for i := 1 to length(s) do
if s[i] in ['1'..'9'] then s[i] := chr(ord(s[i])-1)
else if s[i] = '0' then s[i] := '9';


ты же сам почти так и сделал

Сообщение отредактировано: klem4 - 17.12.2005 19:18


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


Пионер
**

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

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


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


НООООООО!!!

Мне нужно читать эти все числа с текстового файла, а потом передавать на обработку функции!
А я не знаю как правиьно читать натуральное беззнаковое число! nea.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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