Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 16.10.2019
Сообщений: 7
1

Проблема с процедурой

26.12.2020, 15:41. Показов 1337. Ответов 2

Author24 — интернет-сервис помощи студентам
Здравствуйте! Написал код для лабораторной работы, но выдаёт ошибку с begin и end. Я не могу её найти, но полагаю, что она связана с процедурой izm. Если возможно, то и другие проблемы(если есть) тоже желательно подправить. Вот условие и код:

const n=20;
type Vector=array [1..n] of real;
Описать процедуру изм(x, y, z), которая в том из векторов x и z, где больше
всего отрицательных элементов (считать что такой вектор один), все его
положительные элементы заменяет на их кубы – если это вектор x или вектор
z, на их обратные величины – если это вектор y.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
program lr_3;
 
const
  n = 5;
 
type
  vector = array[1..n] of real;
 
var
  x, y, z: vector;
 
procedure izm(var x, y, z: vector);
  function minus(a: vector): byte;//функция подсчёта отриц. коорд-т
  begin
    var
    i, k: integer;
    begin
      k := 0;
      for i := 1 to n do
        if a[i] < 0 then 
          k := k + 1;
      minus := k;
    end;
  end;
 
procedure vvodvector(var m: vector);//заполнение вектора
var
  i: byte;
begin
  writeln('Введите элементы вектора');
  for i := 1 to n do
    readln(m[i])
end;
 
procedure printvector(v: vector);//вывод вектора
var
  i: byte;
begin
  writeln('Вектор: ');
  for i := 1 to n do
    write(v[i]:4);
  writeln;
end;
 
var
  i: byte;
//в каком из векторов больше всего отрицательных, его преобразования
begin
  vvodvector(x);
  printvector(x);
  vvodvector(y);
  printvector(y);
  vvodvector(z);
  printvector(z);
  
  if (minus(x) > minus(y)) and (minus(x) > minus(z)) then
  begin
    writeln('Больше всего отрицательных в х');
    for i := 1 to n do
    begin
      if x[i] > 0 then x[i] := x[i] * x[i] * x[i];
      write(x[i]:5:0);
    end
  end
  else if (minus(z) > minus(x)) and (minus(z) > minus(y)) then
  begin
    writeln('Больше всего отрицательных в z');
    for i := 1 to n do
    begin
      if z[i] > 0 then z[i] := z[i] * z[i] * z[i];
      write(z[i]:5:0);
    end
  end
  else if (minus(y) > minus(x)) and (minus(y) > minus(z)) then
  begin
    writeln('Больше всего отрицательных в y');
    for i := 1 to n do
    begin
      y[i] := -y[i];
      write(y[i]:5:0);
    end
  end
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2020, 15:41
Ответы с готовыми решениями:

Проблема с процедурой Gettime
uses crt,dos; var i,k:word; h,m,s,h1:word; t:longint; Begin clrscr; begin ...

Проблема с процедурой EXEC
Здравствуйте. Делаю программу, состоящую из нескольких файлов, которые связаны между собой...

Проблема с процедурой
В делфи работаю не долго, так вот и проблеми возникают, хочу сделать две процедуры, одна активирует...

Проблема с CLR процедурой
Подскажите в чем проблема? Есть CLR процедура... public partial class StoredProcedures { ...

2
3017 / 1642 / 649
Регистрация: 19.03.2019
Сообщений: 5,318
26.12.2020, 16:40 2
Лучший ответ Сообщение было отмечено DeathDemon как решение

Решение

неудивительно. с логикой то беда..
у тебя в 12-й строке началось описание procedure Izm. а где её тело? (begin и end) ?

Добавлено через 40 минут
12 строчку удали совсем, а функцию Minus запиши так:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
type
  vector = array[1..n] of real;
 
var
  x, y, z: vector;
 
  function minus(a: vector): byte; //функция подсчёта отриц. коорд-т
  var i, k: integer;
    begin
      k := 0;
      for i := 1 to n do
        if a[i] < 0 then
          k := k + 1;
      minus := k;
    end;
у меня заработало...
1
0 / 0 / 0
Регистрация: 16.10.2019
Сообщений: 7
26.12.2020, 19:38  [ТС] 3
Оно, конечно работает, но почему-то не задействована часть с подсчётом и выводом преобразованного вектора с наибольшим кол-вом отрицательных значений. Можешь пожалуйста подсказать почему?
0
26.12.2020, 19:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2020, 19:38
Помогаю со студенческими работами здесь

проблема с хранимой процедурой в Interbase
Здравствуйте. Есть БД под IB6, и клиентская прога к ней на Delphi. В БД хранится процедура...

Проблема с процедурой вставки строки
Firebird 2.5 + Delphi есть процедура по вставке строки которая лежит в FB: SET TERM ^ ; ...

Подскажите в чем проблема с хранимой процедурой???
Вот процедура CREATE PROCEDURE dbo.myprocedure @a int output AS if exists(select * from...

проблема с хранимой процедурой Call Comm.Execute
есть хранимая процедура возвращающая и выходные параметры и набор записей. если ее вызываю так:...

В чем разница между процедурой окна и хуковской процедурой?
Поясню вопрос: Как я понял определенный хук 'фильтрует' сообщения пришедшие окну и может их...

Эту одну программу надо записать в две с процедурой и функцией. сначала с процедурой а потом с функции две задачи
Составить словесное (математическое) описание и блок-схему следующей задаче: у треугольника АВС...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru