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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2016, 22:19   #1
weh
 
Регистрация: 05.06.2016
Сообщений: 6
Восклицание Найти значение наименьшего положительного элемента в четных строках и нечетных столбцах матрицы

ЗАДАЧА: Найти значение и координаты (номера строки и столица) наименьшего положительного элемента в четных строках и нечетных столбцах матрицы.

Код:
Program lab;               
                         
const
  nm  = 30;                  { размер массива, матрицы }
 
label  1, 2, 3, 4;
var                         { раздел описания переменных }
 
  s1  : char;
  
  x1, x2, dx, p1, p2, dp, cmax, cmin : real;        
  nx,j, jx, jp, np, imn, jmn         : integer;     
         
  
  atx: array[0..nm]  of real;         
  atp: array[0..nm]  of real;          
  cxp: array[0..nm, 0..nm]  of real;   
  c_cod: array[0..nm, 0..nm]  of integer;    
         
 
procedure vvod (stroka: string; var chislo: real);  {подпрограмма ввода числа} 
var
  s  : string;   
  cod: integer;    
begin
  repeat
    write(stroka);
    readln(s);
    val(s, chislo, cod);
    if cod <> 0 then writeln('Это не число');
  until cod = 0;
end;
 
 
procedure func_c ( x, p: real;  var c: real; var cod: integer);  {подпрограмма вычисления функции}
begin
  cod := 0;
  if (x <= 0)    then  cod := 1 + cod;    {число под логарифмом не должно быть <=0}
  if ((x*x - exp(ln(x*x*x) + (abs(x*x*x*x - 2*p))))=0) then  cod := 8 + cod; {деление на 0(знам.)}   
  if (cod = 0)   then
    c := (sin (sqrt(p*p*p + x*x + 4.5) ))/(x*x - exp(ln(x*x*x) + (abs(x*x*x*x - 2*p))));  
    
end;                               
 
 
begin;      
{ввод данных}  
1:   
  vvod ('Введите начальное значение х1 = ', x1);
  vvod ('Введите конечное  значение х2 = ', x2);
  vvod ('Введите значение  шага для dх = ', dx);
  if (dx * (x2 - x1) < 0) or (abs(dx) > abs(x2 - x1)) then {проверка интервала и шага аргумента х}
    begin
      Write('Неверный интервал или шаг табулирования x');
      goto 1;
    end;
  
  nx := trunc((x2 - x1) / dx) + 1; {расчет числа значений аргумента х (шагов) и формирование массива}
  if ((x1 + (nx - 1) * dx) < x2) then nx := nx + 1;
  if nx < nm  then   for j := 1 to nx 
                                  do atx[j] := x1 + (j - 1) * dx 
  else 
     begin
       writeln('Число шагов аргумента Х превышает размер массива ', nm);
       goto 1;
     end;
  atx[nx] := x2;
  
2:   
  vvod ('Введите начальное значение p1 = ', p1);
  vvod ('Введите конечное  значение p2 = ', p2);
  vvod ('Введите значение  шага для dp = ', dp);
  if (dp * (p2 - p1) < 0) or (abs(dp) > abs(p2 - p1)) then  {проверка интервала и шага аргумента р}
    begin
       Write('Неверный интервал или шаг табулирования p');
       goto 2;
    end;
  
  np := trunc((p2 - p1) / dp) + 1;  {расчет числа значений аргумента р и формирование массива}
  if ((p1 + (np - 1) * dp) < p2) then np := np + 1;
  if np < nm then   for j := 1 to np 
                                   do atp[j] := p1 + (j - 1) * dp
  else 
     begin
        writeln('Число шагов аргумента P превышает размер массива ', nm);
         goto 2;
     end;
  atp[np] := p2;
  {расчет элементов матрицы}
  for jx := 1  to nx do
    for jp := 1  to np
         do 
             begin
                func_c( atx[jx], atp[jp], cxp[jx, jp], c_cod[jx, jp]);
             end;
  
  writeln;
  write ('Арг. Х/Р:');
  for j := 1 to np
       do write(atp[j]:9:3);
  writeln;
  
  for jx := 1  to nx
       do 
    begin
      write(atx[jx]:9:3);
      for j := 1 to np do
         begin
            case c_cod[jx, j] of
               0: write(cxp[jx, j]:9:3);  {вывод значения функции: c := (sin (sqrt(p*p*p + x*x + 4.5) ))/(x*x - exp ( ln(x*x*x) + abs(x*x*x*x - 2*p) ) )}
               1: write('    *    ');     {число под логарифмом не должно быть <=0}
               2: write('    **   ');     {в знаменателе 0}
               3: write('    ***  ');     {число под логарифмом не должно быть <=0 и в знаменателе 0}
            else
               write( '**', c_cod[jx, j]);  {другие ошибки}
            end;
         end;
    writeln;
  end;
  
  writeln (' Комментарий к матрице');
  writeln (' * - число под логарифмом не должно быть <=0');
  writeln (' ** - в знаменателе 0');
  writeln (' *** - число под логарифмом не должно быть <=0 и в знаменателе 0');
  writeln; 
  
{тут надо дописать программу:
"Найти значение и координаты (номера строки и столица) наименьшего 
положительного элемента в четных строках и нечетных столбцах матрицы".}
 
4: 
  writeln;
  write('для повторения нажми цифру 0 и ENTER ');
  readln(s1);  {возвращение в начало}
  if (s1='0') then goto 1;
end.
weh вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для каждого элемента А(i,j) найти наиб.значение среди всех четных элементов в выделенной области sasha1212 Общие вопросы C/C++ 0 27.11.2014 21:26
даны три матрицы,найти наибольшее значение элемента! Елешечка Паскаль, Turbo Pascal, PascalABC.NET 1 04.12.2013 08:55
Найти значение максимального элемента среди четных в массиве! phreaker228 Помощь студентам 8 11.12.2012 01:49
Найти сумму элементов, расположенную в четных (по номеру) строках матрицы c++ inmanika Помощь студентам 1 13.12.2011 21:08
перестановка четных и нечетных столбцов матрицы Lowjedy Помощь студентам 1 10.05.2011 18:12