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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2008, 15:51   #21
Ganmaker
Пользователь
 
Аватар для Ganmaker
 
Регистрация: 05.11.2008
Сообщений: 22
По умолчанию

ошибся, впёрся не туда
Ganmaker вне форума Ответить с цитированием
Старый 06.11.2008, 20:29   #22
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию

Вот полное задание:
С использованием генератора псевдослучайных чисел - функции RANDOM - сгенерировать массив {X} 2*(N+6) вещественных элементов в диапазоне –2*(N+6)...4*(N+6), где N - № варианта, и, кроме того:
1. Используя формулу из таблицы 1 лабораторной работы №5, заменив Х на Хi, получить элемен-ты массива Y. Если для заданного значения Xi функция не существует, то элемент Y не заполнять. Т.о., длина массива выясняется по ходу заполнения. Вывести содержимое массива на экран. В массиве Y найти максимальное и минимальное значение элементов, среднее значение элементов массива и сумму отрицательных и произведение элементов, значения которых находится в интервале [-1.5...1.5].
2. Из массива Y создать двумерный массив А с количеством столбцов, запрошенным с клавиату-ры (<=10). Если последняя строка массива А оказалась неполной, ее следует исключить.
3. Заполнить одномерный массив {Z}:
- для четных вариантов: элементы массива Z образовать как сумму элементов каждой строки массива A;
- для нечетных вариантов: элементы массива Z образовать как сумму каждого столбца масси-ва A.
Мой вариант 5.
Вот программа из лабораторной работы №5:
Код:
program lab41;
uses crt;
const t=1e-8;
var a,k,ch,zn,x,y,c:real;
begin
   clrscr;
   write ('Vvedite x=');
   readln (x);
   a:=2*x-3;
   c:=cos(x);
   zn:=x*sqr(x)-0.8*x-0.75;
   if (a>t) then
   begin
      a:=ln(a);
      if (abs(c)>t) and (abs(zn)>t) then
      begin
         k:=sin(x)/c;
         k:=exp(ln(abs(k)/5));
         ch:=7.3*x*sqr(x)+k;
         y:=ch/zn+a;
         writeln ('x=',x:10:5,' y=',y:10:5);
      end
      else
      writeln ('x=',x:10:5, 'y ne syshestvyet tak kak znamenatel raven 0');
   end
   else
   writeln ('x=',x:10:5,' y ne syshestvyet tak kak pod logarifmom chislo<0');
   readkey
end.

Последний раз редактировалось bygoga; 06.11.2008 в 21:48.
bygoga вне форума Ответить с цитированием
Старый 06.11.2008, 20:33   #23
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Да поправь ты каракули в тексте, невозможно же читать. Хоть бы к Новому Году решил.
Цитата:
2(N+6)...4(N+6),
Вот что это? Нам что ли твоя задача нужна?
puporev вне форума Ответить с цитированием
Старый 06.11.2008, 21:32   #24
Slicker
Пользователь
 
Регистрация: 25.08.2008
Сообщений: 51
По умолчанию

это знак умножить, судя по 1 посту..)
Slicker вне форума Ответить с цитированием
Старый 06.11.2008, 21:48   #25
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию

поправил...сори сразу не посмотрел
bygoga вне форума Ответить с цитированием
Старый 06.11.2008, 22:41   #26
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Ну ведь несложная задача, но напиши ты по человечески условие в пять строчек, без номеров вариантов, четных и нечетных, без ссылок на неизвестную формулу из неизвестной лабы. Просто конкретный размер массива, конкретный диапазон, приведи нормально формулу, чтоб ее не вычислять из кода, просто прочитать можно было, четко сформулируй ТВОЕ задание, без всяких вариантов. Поверь, разбирать твои ребусы типа пойди туда, не знаю куда, нет никакого желания. Ты пробегись по разделу, посмотри как люди формируют задание и как им помогают. Сделай один раз, но по человечески, а не так как сейчас.
puporev вне форума Ответить с цитированием
Старый 07.11.2008, 19:36   #27
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию

С помщью RANDOM сгенерировать массив х вещественных чисел в диапазоне от -22 до 44. 1. Используя формулу (во вложении) заменив Х на Хi, получить элементы массива Y. Если для заданного значения Xi функция не существует, то элемент Y не заполнять. Вывести содержимое массива на экран. В массиве Y найти максимальное и минимальное значение элементов, среднее значение элементов массива и сумму отрицательных и произведение элементов, значения которых находится в интервале [-1.5...1.5].
Из массива Y создать двумерный массив А с количеством столбцов, запрошенным с клавиату-ры (<=10). Если последняя строка массива А оказалась неполной, ее следует исключить.
Заполнить одномерный массив {Z} элементы массива Z образовать как сумму каждого столбца масси-ва A.
Вложения
Тип файла: doc Документ Microsoft Office Word.doc (20.5 Кб, 9 просмотров)
bygoga вне форума Ответить с цитированием
Старый 07.11.2008, 19:54   #28
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Размер массива Х=2*(5+6)=22 ?
puporev вне форума Ответить с цитированием
Старый 07.11.2008, 20:52   #29
bygoga
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 45
По умолчанию

Эээ...вроде бы да.
bygoga вне форума Ответить с цитированием
Старый 07.11.2008, 21:12   #30
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Добрался до пункта 2, и началось. Поскольку в формуле есть логарифм, область определения которой x>0, то все x[i] меньше 1,51 отпадают. На интервале (1,51;43,9) значения функции находятся в интервале (9,3;11,7), проверял в Экселе. Сразу отпадает возможность найти сумму отрицательных, т.к. их нет; и произведение чисел из интервала (-1,5;+1,5), которых тоже нет; Что по этому поводу скажете? Часть задачи пропадает. Посмотрите начало программы.
Код:
uses crt;
const n=22;
var x,y:array[1..n]of real;
    i,j:integer;
    max,min:real;
function Pow(a,b:real):real;
var t:real;
begin
  t:=abs(a);
  if a<0 then Pow:=(-1)*exp(b*ln(t))
  else Pow:=exp(b*ln(t));
end;
begin
clrscr;
randomize;
writeln('Massiv X:');
for i:=1 to n do
   begin
     x[i]:=random(66)+random-22; {-21.1..+43.9}
     write(x[i]:6:1);
   end;
writeln;
j:=0;max:=-100;min:=100;
for i:=1 to n do
if (x[i]*x[i]*x[i]-0.8*x[i]-0.75<>0)and(2*x[i]-3>0) then
  begin
    inc(j);
    y[j]:=(7.3*x[i]*x[i]*x[i]+Pow((sin(x[i])/cos(x[i])),1/5))/
    (x[i]*x[i]*x[i]-0.8*x[i]-0.75)+ln(2*x[i]-3);
    if y[j]>max then max:=y[j]
    else if y[j]<min then min:=y[j];
  end;
writeln('Massiv Y:');
for i:=1 to j do
write(y[i]:6:1);
writeln;
writeln('y[j]max=',max:0:1,'   y[j]min=',min:0:1);
readln
end.
puporev вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Random Febreze Общие вопросы Delphi 2 28.04.2008 14:17
random Forrest Gamp Общие вопросы C/C++ 4 11.02.2008 09:46
random Sanek_ntsk Общие вопросы Delphi 8 17.12.2007 21:54
С++ Создать класс содержащий 3х-мерный массив int'ов, заполнять с помощью генератора случайных чисел vipER Помощь студентам 1 22.09.2007 22:08
Помогите пожалуйста!!! С использованием функции Random сформировать одномерный массив Vanya_www_333 Помощь студентам 1 17.08.2007 13:38