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

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

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

 
 Ответить  Открыть новую тему 
> Функция, замена цифр из т.файла на предыдущую
сообщение
Сообщение #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 -


Прикрепленные файлы
Прикрепленный файл  zam.txt ( 171 байт ) Кол-во скачиваний: 239
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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';
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


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

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

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


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


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


Пионер
**

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

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


Клмн!
Не хочет работать! я попробовал уже который способ!
Но ничего кроме преобразования одного, или всех одновременно(нельзя красиво вывести, в виде таблици) чисел вместе!
ХЕЛП! wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

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

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


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

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

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



Сообщение отредактировано: Alex7 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


Пионер
**

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

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


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


НООООООО!!!

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

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

 





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