1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Дан вещественный массив x(n). Найти элементы массива, значение которого наиболее близко к какому-нибудь целому числу.
В данной программе надо чтобы при запуске выводился на экран начальный массив из вещественных чисел(отрицательных и положительных) и после от туда выбирались элементы наиболее близкие какому нибудь целому числу .
const n=10; var x: array [1..n] of real; i,k : integer; min,res : real; begin for i:=1 to n do begin write('x[',i,']='); readln (x[i]); end; min:=1; for i:=1 to n do begin if frac(x[i]) >=0.5 then res:=1-frac(x[i]) else res:=1-(1-frac(x[i])); if res< min then begin min:=res; k:=i; end; end; write('Rezultat: ',x[k]:0:3); readln; end.
Проблема в то что не выводиться массив с вещественными числами ,а я сам его вважу (а вот как сделать чтоб сам выводился незнаю )
Добавлено через 17 мин. Есть еще какой-то способ без использование "frac" ,там как то вычитанием из вещественного масива целого ,для получения целой части ,вроде как-то так )))) Вот незнаю как
Проблема в то что не выводиться массив с вещественными числами ,а я сам его вважу (а вот как сделать чтоб сам выводился незнаю )
вводился или выводился?
Цитата
res:=1-(1-frac(x[i]));
а нельзя просто
Код
res:=frac(x[i]);
?
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
смысл в том что у меня на экран должен выводиться первоначальный массив из вещественых чисел в том числе и отрицательные ,а из них выбирались приблеженно целые
Машина случайным образом сама заполняет массив (причем заполняет массив вещественными числами как отрицательными так и положительными )
через Random
Добавлено через 11 мин. Попробывал сделать так
Uses crt; const n=10; var x: array [1..n] of real; i,k : integer; min,res : real; begin clrscr; randomize; for i:=1 to n do begin x[i]:=random(999); end; min:=1; for i:=1 to n do begin if frac(x[i]) >=0.5 then res:=frac(x[i]) else res:=1-(1-frac(x[i])); if res> min then begin min:=res; k:=i; end; end; for i:=1 to n do begin write (x[i]:0:1 ,' '); end; write('Rezultat: ',x[k]:0:3); readln; end.
Результат получается таков ,что выводять целые числа =(( ,а нужны вещественые (положительные и отрицательные) .
Uses crt; const n=10; var x: array [1..n] of real; i,k : integer; min,res : real; begin clrscr; randomize; writeln ('Ishodnii massiv'); for i:=1 to n do begin x[i]:=random(99)+random ; if random > 0.5 then x[i]:=-x[i]; end; min:=1; for i:=1 to n do begin if frac(x[i]) >=0.5 then res:=1-frac(x[i]) else res:=1-(1- frac(x[i])); if res< min then begin min:=res; k:=i; end; end; for i:=1 to n do begin write (x[i]:0:2 ,' '); end; writeln; writeln ('Rezultat: ',x[k]:0:3); readln; end.
Неправильно... Смотри сам - наиболее близким к целому является 90.00 А у тебя в ответе совсем другое число.
Ошибка в том, что ты берешь остаток не по модулю, а со знаком. попробуй так:
Код
uses crt;
const n=10; var x: array [1..n] of real; i,k : integer; min,res : real;
begin clrscr; randomize; writeln ('Ishodnii massiv'); for i:=1 to n do begin x[i]:=random(99)+random; if random > 0.5 then x[i]:=-x[i]; end;
min:=1; for i:=1 to n do begin if abs(frac(x[i]))>=0.5 then res:=1-abs(frac(x[i])) else res:=abs(frac(x[i])); if res<min then begin min:=res; k:=i; end; end;
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
Спасибо ,только вот в результате целого числа не получаеться ((((((((((( там выбираються разные числа почему и с + и с - .... Вторая часть программы не рабочая... В чем может быть проблема ?
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!