Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 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
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

код надо оформлять специальным тегом, для этого есть кнопочка #

Написали всё довольно-таки коряво...
"Пусть f – файловая переменная, соответствующая файлу типа File of integer." не вяжется с "procedure Test3C(f: string);"

Насколько я понял , Вы пытаетесь одновременно и писать и читать из одного файла - а это очень проблематично...
Код:
readln(s);
if s[1] = '0' then buf:=s[2] else buf:=s[1];
Непонятно, что Вы этим делаете, а если юзер ввел 1 ? то будет баг при обращении к s[2] !

Плохо улавливаю Ваши конвертации символов и цифр, и вряд ли 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.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что нужно сделать с <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