Страница 1 из 2
ГОРЮ! Ошибки помогите исправить!
Добавлено: 19 мар 2008, 21:09
повстанец
Нужно из исходного массива сформировать другой с заменой нулевых элементов (если они есть) значениями, равными максимальному элементу
Вот прога (не работаеть...)
Program Z6_15;
Var
a,b:array[1..15] of integer;
i,j,n,x:integer;
f1,f2:text;
Begin
Assign(f1,'1.txt');
Assign(f2,'2.txt');
reset(f1);
Read(f1,n);
For i:=1 to n do Read(f1,a);
close(f1);
x:=a[1];
n:=a[1];
For i:=2 to n do if x<a then x:=a;
For i:=1 to n do
begin
if a=0 then x:=0;
Rewrite(f2);
For i:=1 to n do Write(f2,a,' ');
Close(f1);
Close(f2);
end;
End.
Вся фишка в том, что обязательно задействовать тестовые файлы. Помогите, горю!!
Re: ГОРЮ! Ошибки помогите исправить!
Добавлено: 19 мар 2008, 21:53
Medved
" писал(а):For i:=1 to n do
begin
if a=0 then x:=0;
Rewrite(f2);
For i:=1 to n do Write(f2,a,' ');
Close(f1);
Close(f2);
end;
End.
Так ты много раз перезаписываешь файл=)
А так нет:
For i:=1 to n do if a=0 then x:=0;
Rewrite(f2);
For i:=1 to n do Write(f2,a,' ');
Close(f1);
Close(f2);
end.
Re: ГОРЮ! Ошибки помогите исправить!
Добавлено: 19 мар 2008, 21:55
MOTOCoder
Вот подправил, теперь вроде работает:
[syntax='Delphi']
Program Z6_15;
Var
a,b:array[1..15] of integer;
i,j,n,x:integer;
f1,f2:text;
Begin
Assign(f1,'1.txt');
Assign(f2,'2.txt');
reset(f1);
Read(f1,n);
For i:=1 to n do Read(f1,a
);
close(f1);
x:=a[1];
For i:=2 to n do if a>x then x:=a;
For i:=1 to n do
if a=0 then a:=x;
Rewrite(f2);
For i:=1 to n do Write(f2,a,' ');
Close(f2);
End.
[/syntax]
P.S. Первый раз у меня Касперский обматерил паскалевскую программу, троян, однако 
Re: ГОРЮ! Ошибки помогите исправить!
Добавлено: 19 мар 2008, 21:57
Medved
Опоздал на 2 минуты! =)
Re: ГОРЮ! Ошибки помогите исправить!
Добавлено: 19 мар 2008, 21:58
MOTOCoder
Medved писал(а):Опоздал на 2 минуты! =)
Да, но одну из ошибок Вы не нашли:
For i:=1 to n do if a
=0 then x:=0;
а надо
For i:=1 to n do if a=0 then a:=x;
Re: ГОРЮ! Ошибки помогите исправить!
Добавлено: 19 мар 2008, 22:13
Medved
Я просмотрел именно по смыслу- begin/end не имело назначения
Re: ГОРЮ! Ошибки помогите исправить!
Добавлено: 19 мар 2008, 22:19
повстанец
Спасибо всем огромное! Прога заработала, но...
В текстовом фыйле 1 находится такой массив 1 20 -80 3 8 4 0 3 7 5 4 2 4 6 0
По идее в файл 2 он должен записать его с заменой двух нулей на 20 (это максимальное).
А мне он почему-то упорно записывает число 20 и все...
Я ночь не буду спать, пока не разберусь!!
Поможите кто чем может)
Re: ГОРЮ! Ошибки помогите исправить!
Добавлено: 19 мар 2008, 22:27
MOTOCoder
Странно, у меня все работает:
Входной файл:
Выходной файл:
Вы код из поста #2 или #3 используете?
Re: ГОРЮ! Ошибки помогите исправить!
Добавлено: 19 мар 2008, 23:01
повстанец
Это что-то удивительное. С последовательностью 8 1 4 2 0 19 -10 0 1
все отлично работает! Но в некоторых случаях, включая последовательность 1 20 -80 3 8 4 0 3 7 5 4 2 4 6 0 программа выдает максимальный элемент. И еще: как можно организовать, чтобы максимальный элемент тоже записывался в конечный файл?
Re: ГОРЮ! Ошибки помогите исправить!
Добавлено: 19 мар 2008, 23:19
MOTOCoder
В приведенном вами коде кол-во чисел определяется по первому элементу файла, а у вас файл начинается сразу с первого числа.