|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.04.2011, 15:56 | #1 |
Регистрация: 18.01.2011
Сообщений: 3
|
что можно сделать:confused:
Пусть f – файловая переменная, соответствующая файлу типа File of integer. Написать процедуру Test4D(f), заменяющую в файле нулевые элементы максимальным из соседей.
0111040010432 должно получится 1111441432. вот в принципе готовый код program Project1; {$APPTYPE CONSOLE} uses SysUtils; procedure Test3C(f: string); var file_:File of integer; s,buf:string; max:integer; i:integer; begin AssignFile(file_, f); Rewrite(file_); write('Plase enter number : '); readln(s); if s[1] = '0' then buf:=s[2] else buf:=s[1]; for i:=2 to length(s)-1 do if s[i] = '0' then begin if strtoint(s[i-1])>strtoint(s[i+1]) then buf:=buf+s[i-1] else buf:=buf+s[i+1] end else buf:=buf+s[i]; if s[length(s)] = '0' then buf:=buf+s[length(s)-1] else buf:=buf+s[length(s)]; i:=StrToInt64(buf); write(file_,i); CloseFile(file_); Writeln('Number was Got : '+buf); writeln('Save in file : '+f); readln; end; begin { TODO -oUser -cConsole Main : Insert code here } Test3C('C:\Users\XTen\Desktop\Z\4\C onsole\Файл с данными.txt') end. я хотел спросить можно ли обойтись как нибудь без "strtoint"? или быть может я что то не так вообще написал? подскажите пожалуйста. |
21.04.2011, 11:44 | #2 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,886
|
код надо оформлять специальным тегом, для этого есть кнопочка #
Написали всё довольно-таки коряво... "Пусть f – файловая переменная, соответствующая файлу типа File of integer." не вяжется с "procedure Test3C(f: string);" Насколько я понял , Вы пытаетесь одновременно и писать и читать из одного файла - а это очень проблематично... Код:
Плохо улавливаю Ваши конвертации символов и цифр, и вряд ли strtoint тут виновата, да ещё и инт64 приплели... вобщем каша, сами себя запутали и надеетесь, что код рабочий. И потом, таки раздел для паскаля, а у Вас-таки дельфи, будьте впредь поаккуратнее. Вот как бы я решал такое : 1 заводим 2 массива цифр, положим от 1 до 1000 2 передаем процедуре имя файла 3 в цикле while not eof(file_) считываем каждое число в массив 4 запоминаем позицию в конце чтения (простой инкремент в цикле 3, по окончанию цикла будем знать где кончился файл, альтернативно можно и getfilesize использовать вне массива) 5 закрываем файл 6 цикл по массиву, в нем : a если число не 0 то поставить его на это же место ВО ВТОРОЙ массив, иначе всё остальное b если текущее проверяемое число крайнее, то не допускаем проверки вне массива (не проверяем индексы 0 и количество_элементов[п.4]+1) c проверяем соседей - если один больше другого, то ставим ВО ВТОРОЙ МАССИВ первого, иначе второго 7 открываем файл на перезапись 8 в цикле до количество_элементов пишем кадое число из 2-го массива. 9 закрываем файл вроде всё ) Последний раз редактировалось phomm; 21.04.2011 в 11:46. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
что нужно сделать с <td> что бы между картинками другого <table> не было разделения? | alex555 | HTML и CSS | 22 | 24.04.2012 16:43 |
:confused:Не устанавливается компонент TMS!!!:confused: | Virus25 | Компоненты Delphi | 4 | 20.09.2010 13:15 |
Что нужно знать (сделать), что бы прога запускалась в Виндос 7 и Виста | marina15056 | Помощь студентам | 19 | 24.08.2010 11:29 |
Что можно сделать с исходниками ICQ? | DarkDeivel | Работа с сетью в Delphi | 5 | 09.08.2009 01:30 |
Можно ли такое сделать. | warrior849 | Microsoft Office Word | 4 | 28.09.2008 20:50 |