Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
103 / 90 / 75
Регистрация: 04.11.2011
Сообщений: 1,820
1

В заданном массиве заменить нулями элементы, не превышающие заданное значение

18.11.2013, 22:02. Показов 1693. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста, не имею понятия как делать. Составить программу по заданному условию. Первая часть условия является заданием на разработку процедуры для функции f или пару функций(f1,f2). Условие 2ой части задания предполагает обязательное использование разработанной процедуры. В большинстве случаев исходным данным является квадратная матрица А.
А вот и само условие:Cоставить процедуру, которая в заданном массиве С заменяет нулями элементы, не превышающие https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{1}{B}\sum_{i=1}^{n}f({C}_{i}) где n кол-во эл в массиве С, а B некоторая величина. Задать в качестве f синус и B=5, применить процедуру к каждому столбцу матрицы А, подсчитав при этом как изменится средн арифметическое матрицы А

Добавлено через 1 час 6 минут
Знает кто как сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2013, 22:02
Ответы с готовыми решениями:

В заданном массиве заменить нулями элементы, не превышающие заданного значения
Проверьте пожалуйста код. Помогите пожалуйста, не имею понятия как делать. Составить программу по...

Заменить во втором массиве числа превышающие заданное пользователем значение нулями (Конфликт размеров операндов)
Здравствуйте. Вот есть у меня массив int B C помощью асемблера нужно: Заменить во втором...

В массиве заменить нулями числа, превосходящие заданное значение
Требуется разработать ассемблерную программу для обработки массива из 5 чисел - заменить нулями...

В заданном одномерном массиве все отрицательные элементы заменить нулями и подсчитать их количество
В заданном одномерном массиве все отрицательные элементы заменить нулями и подсчитать их количество.

10
Cyborg Drone
18.11.2013, 23:42
  #2

Не по теме:

Цитата Сообщение от Xo6ut Посмотреть сообщение
исходным данным является квадратная матрица А.
Цитата Сообщение от Xo6ut Посмотреть сообщение
в заданном массиве С
Цитата Сообщение от Xo6ut Посмотреть сообщение
применить процедуру к каждому столбцу матрицы А
Как-то всё несуразно выглядит. Можно было бы не копировать, а написать, что конкретно требуется сделать.
Цитата Сообщение от Xo6ut Посмотреть сообщение
подсчитав при этом как изменится средн арифметическое матрицы А
никак среднее арифметическое не изменится. Оно не было определено. Наверное, его просто надо вычислить.
Цитата Сообщение от Xo6ut Посмотреть сообщение
Знает кто как сделать?
Конечно же, кто знает как сделать.

Оформляйте свои посты более подробно. Чтобы каждому необученному академику было ясно, хотя бы приблизительно, что именно Вы хотели спросить.

0
103 / 90 / 75
Регистрация: 04.11.2011
Сообщений: 1,820
19.11.2013, 00:33  [ТС] 3
Вот 2 фотки, на 1 из них общее условие, на 2ой, по вариантам(я 21)
Миниатюры
В заданном массиве заменить нулями элементы, не превышающие заданное значение   В заданном массиве заменить нулями элементы, не превышающие заданное значение  
0
103 / 90 / 75
Регистрация: 04.11.2011
Сообщений: 1,820
19.11.2013, 23:00  [ТС] 4
помогите пжлст

Добавлено через 2 часа 28 минут
Ап.
0
Модератор
9874 / 5242 / 3306
Регистрация: 17.08.2012
Сообщений: 16,011
20.11.2013, 01:05 5
Да... Вы написали задание полностью. Извиняюсь за всяческие придирки. Методичка путаницей изъяснений и несуразными умолчаниями привела меня в уныние. Автору надо бы два балла за неё поставить. Вот, еле написал, как я это дело понял.
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
program test;
 
const n = 10;
 
type func = function(x: real): real;
 
{$F+}
function sinus(x : real):real;
begin
  sinus := sin(x)
end;
{$F-}
 
procedure zeroset(b: real; var c: array of real; f: func);
var i: integer;
    a: real;
begin
  a := 0;
  for i := 0 to sizeof(c) - 1 do a := a + f(c[i]);
  a := a / b;
  for i := 0 to sizeof(c) - 1 do if c[i] < a then c[i] := 0
end;
 
var a: array [1..n] of array [1..n] of real;
    i, j: integer;
    q, p: real;
 
begin
  randomize;
  q := 0;
  writeln('Source array A:');
  for j := 1 to n do
    begin
      for i := 1 to n do
        begin
          a[i, j] := random * 200 - 100;
          q := q + a[i, j];
          write(a[i, j]:7:2)
        end;
      writeln
    end;
  q := q / n / n;
  writeln('Average of A =', q:7:2);
  for i := 1 to n do zeroset(5, a[i], sinus);
  p := 0;
  writeln('Result array A:');
  for j := 1 to n do
    begin
      for i := 1 to n do
        begin
          p := p + a[i, j];
          write(a[i, j]:7:2)
        end;
      writeln
    end;
  p := p / n / n;
  writeln('Average of result A = ', p:7:2);
  readln
end.
1
103 / 90 / 75
Регистрация: 04.11.2011
Сообщений: 1,820
20.11.2013, 02:10  [ТС] 6
А зачем эти значки? {$F+}{$F-}
И еще тут требует значок [
Код
var c: array of real
после array
0
Модератор
9874 / 5242 / 3306
Регистрация: 17.08.2012
Сообщений: 16,011
20.11.2013, 02:30 7
Цитата Сообщение от Xo6ut Посмотреть сообщение
А зачем эти значки? {$F+}{$F-}
включение и выключение формирования дальнего типа вызова процедуры. При использовании процедурных переменных используется дальний тип вызова (far). Если не указать этот спецкомментарий, процедурные переменные использовать не удастся.
Цитата Сообщение от Xo6ut Посмотреть сообщение
И еще тут требует значок [
всё зависит от версии паскаля. Ну, напишите так, может, прокатит:
Pascal
1
2
3
4
5
6
7
8
9
procedure zeroset(b: real; var c: array [1..n] of real; f: func);
var i: integer;
    a: real;
begin
  a := 0;
  for i := 1 to n do a := a + f(c[i]);
  a := a / b;
  for i := 1 to n do if c[i] < a then c[i] := 0
end;
У меня в Delphi работает.

В заданном массиве заменить нулями элементы, не превышающие заданное значение
1
103 / 90 / 75
Регистрация: 04.11.2011
Сообщений: 1,820
20.11.2013, 02:36  [ТС] 8
Спасибо огромное, но можно как-нибудь без {$F+}{$F-} оформить?

Добавлено через 3 минуты
Выдает много ошибок, сейчас скачаю делфи, попробую там.
0
Модератор
9874 / 5242 / 3306
Регистрация: 17.08.2012
Сообщений: 16,011
20.11.2013, 02:43 9
Можно. Но тогда, в большинстве компиляторов, будут невозможны процедурные переменные. Если с Дельфи не работали - учтите, потратите много времени на его изучение. Может, лучше и не качать. Без процедурных переменных будет так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
procedure zeroset(b: real; var c: array [1..n] of real);
var i: integer;
    a: real;
begin
  a := 0;
  for i := 1 to n do a := a + sinus(c[i]);
  a := a / b;
  for i := 1 to n do if c[i] < a then c[i] := 0
end;
//.....
for i := 1 to n do zeroset(5, a[i]);
0
103 / 90 / 75
Регистрация: 04.11.2011
Сообщений: 1,820
20.11.2013, 02:51  [ТС] 10
На строке
Pascal
1
zeroset(5, a[i], sinus);
Выдает вот это
[Error] Unit1.pas(71): Local procedure/function 'sinus' assigned to procedure variable
Добавлено через 4 минуты
Сейчас попробую разобраться

Добавлено через 1 минуту
Получился вот такой код:
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
const n = 10;
 
type func = function(x: real): real;
 
{$F+}
function sinus(x : real):real;
begin
  sinus := sin(x)
end;
{$F-}
 
procedure zeroset(b: real; var c: array of real);
var i: integer;
    a: real;
begin
  a := 0;
  for i := 1 to n do a := a + sinus(c[i]);
  a := a / b;
  for i := 1 to n do if c[i] < a then c[i] := 0
end;
 
var a: array [1..n] of array [1..n] of real;
    i, j: integer;
    q, p: real;
 
begin
  randomize;
  q := 0;
  writeln('Source array A:');
  for j := 1 to n do
    begin
      for i := 1 to n do
        begin
          a[i, j] := random * 200 - 100;
          q := q + a[i, j];
          write(a[i, j]:7:2)
        end;
      writeln
    end;
  q := q / n / n;
  writeln('Average of A =', q:7:2);
  for i := 1 to n do zeroset(5, a[i]);
  p := 0;
  writeln('Result array A:');
  for j := 1 to n do
    begin
      for i := 1 to n do
        begin
          p := p + a[i, j];
          write(a[i, j]:7:2)
        end;
      writeln
    end;
  p := p / n / n;
  writeln('Average of result A = ', p:7:2);
  readln
end;
end.
Выдает ошибкy error I/O 105
0
Модератор
9874 / 5242 / 3306
Регистрация: 17.08.2012
Сообщений: 16,011
20.11.2013, 03:05 11
Вот-вот... Это потому, что не вставлены {$F+}{$F-}, поэтому функция 'sinus' остаётся локальной (вызов для этой процедуры ближнего типа), а процедурные переменные вызываются глобально (вызов дальнего типа). Происходит попытка глобально вызвать локальную процедуру. Вот и ошибка.

Добавлено через 12 минут
Цитата Сообщение от Xo6ut Посмотреть сообщение
Выдает ошибкy error I/O 105
А... Выводить куда, не ведает... Такое бывает, если старая версия паскаля работает под виндами. Скорее всего, вылечится добавлением после
Pascal
1
program test;
строчки
Pascal
1
uses wincrt;
0
20.11.2013, 03:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2013, 03:05
Помогаю со студенческими работами здесь

Заменить нулями в матрице элементы с четной суммой индексов, которые имеются в заданном массиве
Даны целые числа a1, ... ,a10, целочисленная квадратная матрица порядка n. Заменить нулями в...

Необходимо заменить нулями в матрице элементы с четной суммой индексов, которые имеются в заданном массиве
Даны целые числа a1, ... , a10, целочисленная квадратная матрица порядка n. Заменить нулями в...

Заменить нулями в матрице элементы с четной суммой индексов, значения которых имеются в заданном массиве
Здравствуйте!!! Помогите пожалуйста с задачей))) Даны целые числа a1, ..., an, действительная...

В заданном массиве чисел заменить все элементы между минимальным и максимальным элементами массива нулями
Во всех вариантах элементы массива вводить с помощью генератора случайных чисел. Обязательно...

В заданном двухмерном массиве заменить нулями элементы, стоящие в строках или столбцах, где есть нули
В заданном двухмерном массиве заменить нулями элементы, стоящие в строках или столбцах, где есть...

В заданном двумерном массиве A(n,m) заменить нулями элементы стоящие в строках или столбцах, где имеются нули.
В заданном двумерном массиве A(n,m) заменить нулями элементы стоящие в строках или столбцах, где...


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

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