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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.12.2013, 20:34   #1
Настя М
Пользователь
 
Регистрация: 03.12.2013
Сообщений: 22
По умолчанию procedure

Помогите найти ошибку, пожалуйста! (Переменные не менять)

Программа. Дано 80 вещественных чисел. Найти порядковый номер того из них, которое наиболее близко к какому-нибудь целому числу.
program lab7;
uses crt;
type
a1=array[1 .. 90] of real;
var
i1,m1,n1: integer;
c1,k1: real;
f1:text;

procedure qwe( var a: a1; n:integer; c,k: real; m: integer);
var
i: integer;
begin
for i:=1 to n do
begin
if frac(a[i])>=0.5 then k:=1-frac(a[i])
else k:=abs(0- frac(a[i]));
if k<c then
begin
c:=k;
m:=i;
end;
end;
end;

Begin
assign(f1,'c:\lab7b.txt');
reset(f1);
i1:=1;
c1:=1;
n1:=0;
while not eof(f1) do
begin
readln(f1,a1[i1]);
i1:=i1+1;
n1:=n1+1;
end;
qwe(n1,c1,k1,m1);
writeln(m1);
end.
Настя М вне форума
Старый 03.12.2013, 20:44   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Что успел заметить:

Чтобы процедура вернула значение m, надо писать var А перед a - можно без var, даже лучше без.
Код:
procedure qwe(a: a1; n:integer; c,k: real; var m: integer);
И зачем вам c,k ?

И еще, почему всего 4 фактических параметра при вызове?
Код:
qwe(n1,c1,k1,m1);

Последний раз редактировалось type_Oleg; 03.12.2013 в 21:03.
type_Oleg вне форума
Старый 03.12.2013, 22:25   #3
Настя М
Пользователь
 
Регистрация: 03.12.2013
Сообщений: 22
По умолчанию

1.c,k - нужны для сравнения дробной части чисел. 2. А сколько должно быть?
Настя М вне форума
Старый 03.12.2013, 22:31   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Цитата:
Сообщение от Настя М Посмотреть сообщение
А сколько должно быть?
Столько же, сколько и здесь
Код:
procedure qwe( var a: a1; n:integer; c,k: real; m: integer);
5
А что, нужно именно процедуру использовать? Функцию нельзя?
Например, так
Код:
function funm(a:a1;n,k:Integer):Integer; // возвращает порядк. номер ...
// n - размер массива, например 80 ,k - заданное целое число
var i,t:Integer;
    razn:Real;
begin
 razn:=Abs(a[1]-k);
 t:=1;
 for i:=2 to n do
   if Abs(a[i]-k)<razn then
    begin
     t:=i;
     razn:=Abs(a[i]-k);
    end;
 funm:=t;
end;
type_Oleg вне форума
Старый 03.12.2013, 22:33   #5
Настя М
Пользователь
 
Регистрация: 03.12.2013
Сообщений: 22
По умолчанию

Помогите, пожалуйста! Я уже 2 недели её переделываю.
Настя М вне форума
Старый 03.12.2013, 22:34   #6
Настя М
Пользователь
 
Регистрация: 03.12.2013
Сообщений: 22
По умолчанию

Сказали сделать через процедуру!
Настя М вне форума
Старый 03.12.2013, 22:40   #7
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Код:
procedure qwe(a:a1;n,k:Integer;var m:Integer);
var i:Integer;
    razn:Real;
begin
 razn:=Abs(a[1]-k);
 m:=1;
 for i:=2 to n do
   if Abs(a[i]-k)<razn then
    begin
     m:=i;
     razn:=Abs(a[i]-k);
    end;
end;
type_Oleg вне форума
Старый 03.12.2013, 22:41   #8
Настя М
Пользователь
 
Регистрация: 03.12.2013
Сообщений: 22
По умолчанию

Я и так попробовала всё равно выдаёт ошибку pas(33) : Нельзя обратиться к свойству index через тип.
Настя М вне форума
Старый 03.12.2013, 22:44   #9
Настя М
Пользователь
 
Регистрация: 03.12.2013
Сообщений: 22
По умолчанию

Я с массивом не правильно работаю? да?
Настя М вне форума
Старый 03.12.2013, 22:46   #10
Настя М
Пользователь
 
Регистрация: 03.12.2013
Сообщений: 22
По умолчанию

Или не правильно локальные переменные описываю?
Настя М вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Procedure gandi-04 SQL, базы данных 2 06.11.2013 01:57
procedure arnold Паскаль, Turbo Pascal, PascalABC.NET 7 20.02.2013 16:33
Procedure ALABAMA Паскаль, Turbo Pascal, PascalABC.NET 3 20.05.2010 21:06
не работает procedure korand Общие вопросы Delphi 8 09.03.2010 21:18
procedure! please! help! NeAlSe Помощь студентам 2 15.06.2008 15:38