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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 22.11.2013, 15:13   #31
AZelensky
Пользователь
 
Регистрация: 15.11.2013
Сообщений: 52
По умолчанию

Цитата:
Сообщение от ZX Spectrum-128 Посмотреть сообщение
Вариант Сергея вовсе не этот. Это уж вы сами чего-то наструячили. А его вариант работает.
Можете тогда мой код отредактировать правильно?

Вот код:

Код:
USES CRT;
CONST
MaxElMass = 30;
Var
Mass: array [1..MaxElMass] of REAL;
number: REAL;
n: INTEGER;
i, minI: byte;
Begin
TextBackGround(White);
TextColor(Black);
CLRSCR;
write('Enter number: '); READ(number);
write('Enter max element: '); READ(n);
writeln('Enter values: ');
For i:= 1 to n Do begin
    write('Element[', i, '] = ');
    READLN(Mass[i]);
end;
writeln('The resulting array: ');
write('Array: [');
For i:= 1 to n Do begin
    write(',', Mass[i]:0:0);
end;
write(']');
ReadLN;
TextColor(20);
writeln('');
writeln('Press "ENTER" to continue...');
ReadLN;
TextColor(Black);
minI := 1;  {считаем, что 1й элемент ближе всего к заданному числу}
  For i:= 2 to n Do
     If ABS(number - Mass[i]) < ABS(Mass[minI] - Mass[i]) then
              minI := i;
writeln('The near element  index = ', minI);
ReadLN;
END.
AZelensky вне форума
Старый 22.11.2013, 15:28   #32
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Нет, не рискну. Если уж вам код Сергея не подходит. То мне точно не стОит даже пытаться.
ZX Spectrum-128 вне форума
Старый 22.11.2013, 15:33   #33
AZelensky
Пользователь
 
Регистрация: 15.11.2013
Сообщений: 52
По умолчанию

Цитата:
Сообщение от ZX Spectrum-128 Посмотреть сообщение
Нет, не рискну. Если уж вам код Сергея не подходит. То мне точно не стОит даже пытаться.
Хорошо, я сам Вот так?:

Код:
USES CRT;
CONST
MaxElMass = 30;
Var
Mass: array [1..MaxElMass] of REAL;
number: REAL;
n: INTEGER;
i, minind: byte;
Begin
TextBackGround(White);
TextColor(Black);
CLRSCR;
write('Enter number: '); READ(number);
write('Enter max element: '); READ(n);
writeln('Enter values: ');
For i:= 1 to n Do begin
    write('Element[', i, '] = ');
    READLN(Mass[i]);
end;
writeln('The resulting array: ');
write('Array: [');
For i:= 1 to n Do begin
    write(',', Mass[i]:0:0);
end;
write(']');
ReadLN;
TextColor(20);
writeln('');
writeln('Press "ENTER" to continue...');
ReadLN;
TextColor(Black);
minind:= 1;
For i:= 2 to n Do
   If ABS(number - Mass[i]) < ABS(Mass[minind] - Mass[i]) then
      minind:= i;
writeln('The near element index = ', minind);
END.
AZelensky вне форума
Старый 22.11.2013, 16:01   #34
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

А работает? А работает правильно?
Если да, то все прекрасно и вы - молодец.
ZX Spectrum-128 вне форума
Старый 22.11.2013, 16:06   #35
AZelensky
Пользователь
 
Регистрация: 15.11.2013
Сообщений: 52
По умолчанию

Цитата:
Сообщение от ZX Spectrum-128 Посмотреть сообщение
А работает? А работает правильно?
Если да, то все прекрасно и вы - молодец.
Ввожу число 2.4 макс. элемент 3 и массив 1, 2, 3. Мне выводит 3. Правильно?
AZelensky вне форума
Старый 22.11.2013, 16:18   #36
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Поставьте себя на место компилятора:

If ABS(number - Mass[i]) < ABS(Mass[minind] - Mass[i]) then
minind:= i;
I=2
|2.4-2|<|1-2| minind=2
I=3
|2.4-3|<|2-3| minind=3
А должно быть 2!
ZX Spectrum-128 вне форума
Старый 22.11.2013, 16:37   #37
AZelensky
Пользователь
 
Регистрация: 15.11.2013
Сообщений: 52
По умолчанию

Цитата:
Сообщение от ZX Spectrum-128 Посмотреть сообщение
Поставьте себя на место компилятора:

If ABS(number - Mass[i]) < ABS(Mass[minind] - Mass[i]) then
minind:= i;
I=2
|2.4-2|<|1-2| minind=2
I=3
|2.4-3|<|2-3| minind=3
А должно быть 2!
Тогда что не правильно в коде? Я уже и так и сяк пробовал. И как ты сказал, и как он сказал.
AZelensky вне форума
Старый 22.11.2013, 17:03   #38
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Самый первый вариант, подправленный. Работает.
Код:
USES CRT;
Var
a: array [1..10] of REAL;
n, min: REAL;
i: byte;
ind: byte;
Begin
CLRSCR;

 write('N = '); readln(n);

  randomize;
  for i:=1 to 10 do begin
    a[i]:=random*10;
    write(a[i]:6:2);
  end;



  min := a[1];
  for i:=1 to 10 do begin

    if abs(a[i]-n) < min then begin

        min :=  abs(a[i]-n);
        ind := i;

    end;
  end;

  writeln;
  writeLN(ind);
  readln;
END.
ZX Spectrum-128 вне форума
Старый 22.11.2013, 17:38   #39
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если стоит задача
Цитата:
Определить
порядковый номер того из них, которое ближе всего к заданному
числу
то код неверен. попробуйте задать массив 1 2 3 4 и число number 10
попытайтесь угадать ответ!

но и мой код содержит ошибку.
я бы попробовал такой код:
Код:
USES CRT;
Var
a: array [1..10] of REAL;
n, min: REAL;
i: byte;
ind: byte;
Begin
CLRSCR;

 write('N = '); readln(n);

  randomize;
  for i:=1 to 10 do begin
    a[i]:=random*10;
    write(a[i]:6:2);
  end;



  ind := 1;
  for i:=1 to 10 do 
    if abs(a[i]-n) < ans(a[ind]-n) then ind := i;

  writeln;
  WriteLn(ind);
  readln;
END.

Последний раз редактировалось Serge_Bliznykov; 22.11.2013 в 17:40.
Serge_Bliznykov вне форума
Старый 22.11.2013, 17:57   #40
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Цитата:
то код неверен. попробуйте задать массив 1 2 3 4 и число number 10
попытайтесь угадать ответ!
Судя по ручной трассировке будет 0

А так замечательно на рандомных значениях работало
ZX Spectrum-128 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана непустая последовательность вещественных чисел, оканчивающаяся числом 1000. Последовательность является неубывающей. fanatloko Паскаль, Turbo Pascal, PascalABC.NET 1 23.06.2013 14:25
Дана последовательность вещественных чисел. каждая пара чисел задает границы отрезка. Найти количество целых чисел на отрезках 'studentka' Помощь студентам 6 30.11.2011 18:35
Последовательность вещественных чисел ch1c1sT Помощь студентам 1 09.10.2011 19:05
Ввести строку символов,в которой задана последовательность целых чисел (возможно со знаком), разделенных killoff1234 Помощь студентам 0 16.05.2010 18:37