Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 5 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Junior
Статус: Не в сети
Регистрация: 14.09.2009
Привет!
Написал прогу, но она не работает (Delphi (console)).... Думаю, что ошибка где-то в конце.
Задание такое:
1) прочитать массив чисел из файла(в моём случае массив чисел с названием файлы massiv.txt).
2) минимальное число увеличить на 1.
3) максимальное число уменьшить на 1.
4) полученный массив сохранить в другом файле.
ругается в конце почему-то... :(
procedure ReadArray(FileName:string; var A:array of integer; var N:integer);
var
f:textfile;
begin
AssignFile(f,FileName);
Reset(f);
N:=0;
while not eof(f) do
begin
Readln(f,A[N]);
N:=N+1;
end;
CloseFile(f);
end;

procedure DecMax(var A: array of integer; N:integer);
var
max,j,i:integer;
begin
max:=a[0];
for i:=0 to N-1 do
begin
if a[i]>max then
begin
a[i]:=max;
j:=i;
end;
end;
max:=max-1;
a[j]:=max;
end;

procedure IncMin(var A:array of integer; N:integer);
var
min,j,i:integer;
begin
min:=a[0];
for i:=0 to N+1 do
begin
if a[i]<min then
begin
a[i]:=min;
j:=i;
end;
end;
min:=min+1;
a[j]:=min;
end;





procedure WriteArray(FileName:string; var A:array of integer; N:integer);
var
f:textfile;
begin

end;

var
b:array[0..10000-1] of integer;
m:integer;
begin
ReadArray('test.txt', b, m);
DecMax('test.txt', b, m);
IncMin('test.txt', b, m);
WriteArray('test.txt', b, m);
end.



Партнер
 

Member
Статус: Не в сети
Регистрация: 04.05.2007
Откуда: Немеция
Фото: 0
твое объявление процедуры: procedure IncMin(var A:array of integer; N:integer);
твой вызов процедуры: IncMin('test.txt', b, m);

Ничего странного не видишь? :-)

В сам код процедур не вчитывался, первое, что бросилось - вышенаписанное.

декремент - Dec(i, n)
инкремент - Inc(i, n)
где i - увеличиваемое/уменьшаемое число, n - шаг изменения (параметр необязательный, по умолчанию равен 1)

Fallout 13
а где ты там C/CPP-декремент в коде автора топика видишь?
Все глаза проглядел, не увидел, или автор изменил ужо :D

_________________
i7 5930k| Asus Strix x99 | 32Gb DDR4-3000 | EVGA GTX 1080 Ti FE | Phanteks Enthoo Primo | СВО


Последний раз редактировалось Beginner_ 01.03.2010 18:27, всего редактировалось 2 раз(а).

 

Member
Статус: Не в сети
Регистрация: 13.03.2009
Откуда: Новокузнецк
ошибка у вас в ДНК
шутка ))


procedure ReadArray(FileName:string; var A:array of integer; var N:integer);
...
откомпилить нечем, но вроде норм.

procedure DecMax(var A: array of integer; N:integer);
var
max,j,i:integer;
begin
max:=a[0];
for i:=0 to N-1 do
begin
if a[i]>max then
begin
a[i]:=max; --- что вы здесь делаете? может быть поменять местами ;) . скажем max:=a[i];
j:=i;
end;
end;
max:=max-1; --- лишнее
a[j]:=max; --- a[j]:=a[j]-1; (не помню как в дельфи декремент, но точно не -- :tooth: )
end;

procedure IncMin(var A:array of integer; N:integer);
var
min,j,i:integer;
begin
min:=a[0];
for i:=0 to N+1 do
begin
if a[i]<min then
begin
a[i]:=min; --- аналогичная ошибка (смотри выше)
j:=i;
end;
end;
min:=min+1; --- сократи запись аналогично предидущей процедуре
a[j]:=min;
end;





var
b:array[0..10000-1] of integer;
m:integer;
begin
ReadArray('test.txt', b, m);
DecMax('test.txt', b, m); --- неверный вызов процедуры (зачем здесь 'test.txt')
IncMin('test.txt', b, m); --- неверный вызов процедуры (зачем здесь 'test.txt')
WriteArray('test.txt', b, m); --- вы хотите переписать исходный файл? нет, дайте другое имя.
end.


 

Junior
Статус: Не в сети
Регистрация: 14.09.2009
Такс, спасибо, что уделяете внимание! :-)
procedure DecMax(var A: array of integer; N: integer);
var
max:integer;
i:integer;
j:integer;
begin
max:=a[0];
for i:=0 to N-1 do
begin
if a[i]>max then
begin
max:=a[i];
j:=i;
end;
end;
max:=max-1; почему лишнее?
a[j]:=max;
end;

procedure IncMin(var A: array of integer; N: integer);

var
min:integer;
i:integer;
j:integer;

begin
for i:=0 to N-1 do
begin
if a[i]<min then
begin
min:=a[i];
j:=i;
end;
end;
min:=min+1;
a[j]:=min;
end;

procedure WriteArray(FileName: string; var A: array of integer; N: integer);
var
f:textfile;
begin
AssignFile(f, FileName);
Reset(f);
N:=0;
while not eof(f) do
begin
readLN(f,A[n]);
N:=N+1;
end;
CloseFile(f);
end;

var
A:array [0..10000] of integer;
N:integer;

begin
ReadArray('massiv.txt', a, n);
DecMax('massiv.txt', ругается здесь a, n);
IncMin('massiv.txt',ругается здесь a, n);
WriteArray('otvet.txt', a, n);
{WriteArray('massiv.txt', a, n);}
readLN;
end.

Не помните, как делать вставку, например, "Введите имя файла" ? :oops:


 

Member
Статус: Не в сети
Регистрация: 13.03.2009
Откуда: Новокузнецк
Beginner_ писал(а):
декремент - Dec(i, n)
инкремент - Inc(i, n)
где i - увеличиваемое/уменьшаемое число, n - шаг изменения (параметр необязательный, по умолчанию равен 1)

Fallout 13
а где ты там C/CPP-декремент в коде автора топика видишь?
Все глаза проглядел, не увидел, или автор изменил ужо :D


max:=max-1; почему лишнее?
a[j]:=max;


не лишнее но запись этих строк выглядела бы изящнее (и работала бы быстрее), если сделать так:
dec(a[j]);
и все.

min:=min+1;
a[j]:=min;

inc(a[j]);




cosmetolog писал(а):
Такс, спасибо, что уделяете внимание! :-)
Не помните, как делать вставку, например, "Введите имя файла" ? :oops:


Теперь вы потрудитесь и прочитайте ответы, прежде чем что то еще писать.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 5 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan