0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
1

Сжать массив, удалив из него все элементы, величина которых находится в интервале [a,b]

08.11.2009, 20:31. Показов 11523. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
используя процедуры и функции решить задачи А). В одномерном массиве, состоящем из n вещественных элементов вычислить:
1. номер минимального по модулю элемента;
2. сумму модулей элементов массива, расположенных после первого отрицательного элемента.
Сжать массив, удалив из него все элементы, величина которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями.
В). Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых преобразований привести систему к треугольному виду.
Найти кол-во строк, среднее арифметическое элементов которых меньше заданной величины.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.11.2009, 20:31
Ответы с готовыми решениями:

Сжать массив, удалив из него все элементы, величина которых находится внутри отрезка [a, b]
2. Дан одномерный массив, состоящий из N целых элементов. Сжать массив, удалив из него все элементы, величина которых находится внутри...

Сжать массив, удалив из него все элементы, модуль которых находится в интервале
В одномерном целочисленном массиве, состоящем из N, где N-действительное число, задаваемое пользователем, не более 20, заполнить массив...

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

16
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
09.11.2009, 01:00 2
вот А:
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
uses
  crt;
const
  max=10;
type
  MyArr=array[1..max]of integer;
var
  a:MyArr;
{процедура ввода массива}
procedure Writing(var a:MyArr);
var
  i:integer;
begin
  for i:=1 to max do
    a[i]:=random(8)-4;
end;
{процедура вывода массива}
procedure Print(a:MyArr; ch:char);
var
  i:integer;
begin
  writeln('Массив ',ch,':');
  write('[ ');
  for i:=1 to max do
    write(a[i],' ');
  writeln(']')
end;
{функция нахождения минимального по модулю}
function FindMin(a:MyArr):integer;
var
  i,min,tempi:integer;
begin
  min:=abs(a[1]);
  for i:=2 to max do
    if abs(a[i])<min then
    begin
      min:=abs(a[i]);
      tempi:=i
    end;
  Result:=tempi;
end;
{функция сумма модулей}
function Summ(a:MyArr):integer;
var
  i,res:integer;
  fl:boolean;
begin
  res:=0;
  fl:=false;
  for i:=1 to max do
  begin
    if fl then
      inc(res,abs(a[i]));
    if a[i]<0 then
      fl:=true
  end;
  Result:=res;
end;
{основная программа}
begin
  Writing(a);
  Print(a,'A');
  writeln('Минимальный среди модулей элемент a[',FindMin(a),']=',a[FindMin(a)]);
  writeln('Сумма модулей после первого отрицательного: ',Summ(a))
end.
2
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
09.11.2009, 08:10  [ТС] 3
огромное спасибо!!!!!!!!!!!!!а посчет матрицы? =)
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
09.11.2009, 12:56 4
Цитата Сообщение от сашк Посмотреть сообщение
а посчет матрицы? =)
сашк, вероятно вы имеете ввиду 2 задание, но честно вам скажу я не понял что там нужно сделать а именно я не понял в это месте
Цитата Сообщение от сашк Посмотреть сообщение
С помощью допустимых преобразований привести систему к треугольному виду.
поясните на примере каком нибудь и я вам помогу
0
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
09.11.2009, 20:19  [ТС] 5
там вообщем квадратную матрицу привести методом гаусса к треугольному виду, чтобы ниже главной диагонали были нули, с помощью процедуры и функции, вот решение этого задания без процедур и функций program MTRX;
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
const size=30;
type matrix=array [1..size,1..size] of real;
type vector=array [1..size] of real;
var a: matrix;
    b,bsr: vector;
    k,i,j,n,m,d:integer;
    buf,X,sr,s:real;
begin
writeln ('Введите размерность квадратной матрицы:');
readln (n);
m:=n;
for i:=1 to n do begin
  writeln ('Строка ',i);
  for j:=1 to m do read (a[i,j]);
 end;
writeln ('Ввод столбца свободных членов:');
for i:=1 to n do begin
  write ('b[',i,']=');
  readln (b[i]);
end;
{*********************************}
write('Введите X:'); read(X);
s:=0;
for i:=1 to n do begin
    for j:=1 to n do
    s:=s+a[i,j];
    s:=s+b[i];
    bsr[i]:=s/(n+1);
    s:=0;
    end;
 d:=0;
 for i:=1 to n do if bsr[i]<X then d:=d+1;
 writeln('В матрице ',d,' строк(и), среднее арифметическое которых меньше чем ',X);
{*********************************}
writeln('Матрица, приведенная к треугольному виду: ');
begin
 for i:=1 to n-1 do
 for j:=i+1 to n do begin
  buf:=a[i,i]/a[j,i];
  for k:=1 to n do a[j,k]:=a[j,k]*buf-a[i,k];
  b[j]:=b[j]*buf-b[i];
 end;
end;
 for i:=1 to n do  begin
     for j:=1 to n do
     write(a[i,j]:3:4,' ');
     write(b[i]:3:4);
     writeln(' ');
     end;
 
 
end.
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
09.11.2009, 20:28 6
сашк, то есть я правильно понял что из
Code
1
2
3
4
1 2 3 4
5 3 2 1
3 4 3 2
4 5 4 3
надо сделать
Code
1
2
3
4
1 2 3 4
0 3 2 1
0 0 3 2
0 0 0 3
так?
0
Почетный модератор
 Аватар для Puporev
64307 / 47604 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
09.11.2009, 22:15 7
Inadequate, Нет не так, нужно преобразовать по методу Гаусса, это математика.

Добавлено через 14 минут
Вот, вроде так.
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
uses crt;
var a:array[1..20,1..20] of real;
    n,i,j,k:integer;z,r,g:real;
begin
clrscr;
write('Введите количество уравнений n=');
readln(n);
writeln('Введите коэффициенты системы и свободные члены');
for i:=1 to n do
for j:=1 to n+1 do
read(A[i,j]);
readln;
clrscr;
writeln('Матрица коэффициентов и свободных членов');
for i:=1 to n do
  begin
    for j:=1 to n+1 do
    write(A[i,j]:6:2);
    writeln;
  end;
for k:=1 to n do
     begin
       for j:=k+1 to n+1 do
          begin
            r:=a[j,k]/a[k,k];
            for i:=k to n do
               begin
                 a[j,i]:=a[j,i]-r*a[k,i];
               end;
          end;
     end;
writeln('Треугольная матрица:');
for i:=1 to n do
 begin
  for j:=1 to n+1 do
  write(a[i,j]:6:2);
  writeln;
 end;
readln;
end.
0
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
10.11.2009, 06:59  [ТС] 8
вот только надо с помощью процедур и функций это сделать=)
0
Почетный модератор
 Аватар для Puporev
64307 / 47604 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
10.11.2009, 07:06 9
Цитата Сообщение от сашк Посмотреть сообщение
В). Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых преобразований привести систему к треугольному виду.
Найти кол-во строк, среднее арифметическое элементов которых меньше заданной величины.
Где в задании процедуры и функции??? Делай сам.
0
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
10.11.2009, 07:32  [ТС] 10
я в самом начале еще написал, блин не знаю как с помощью процедур и функций=(помогите пожалуйста...
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
10.11.2009, 07:38 11
сашк, в данном случае поддерживаю Puporev'a, так как в условии этого не было... А то что вы где-то в середине темы написали "на клочке туалетной бумаги" это никому не надо. Когда люди заходят в тему, они смотрят и ориентируются на условие... Вы теперь предлагаете ему переписывать всё? Так что учитесь писать верно условие и учитесь уважать чужой труд...
0
Почетный модератор
 Аватар для Puporev
64307 / 47604 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
10.11.2009, 07:58 12
Лучший ответ Сообщение было отмечено как решение

Решение

сашк, И вообще-то я код не тебе писал, а просто привел пример приведения к треугольному виду. А ты вряд ли вообще что тут поймешь, и если хорошо не проштудируешь тему со стороны математики и программирования, то все это бесполезно.
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
uses crt;
type matr=array[1..20,1..20] of real;
procedure Vvod(var mt:matr;var x:byte);{создание матрицы}
var i,j:byte;
begin
write('Введите количество уравнений =');
readln(x);
writeln('Введите коэффициенты системы и свободные члены');
for i:=1 to x do
for j:=1 to x+1 do
read(mt[i,j]);
readln;
clrscr;
writeln('Матрица коэффициентов и свободных членов');
for i:=1 to x do
  begin
    for j:=1 to x+1 do
    write(mt[i,j]:6:2);
    writeln;
  end;
writeln;
end;
procedure Gauss(var mt:matr;x:byte);{приведение к треугольному виду}
var k,i,j:byte;
    r:real;
begin
for k:=1 to x do
     begin
       for j:=k+1 to x+1 do
          begin
            r:=mt[j,k]/mt[k,k];
            for i:=k to x do
               begin
                 mt[j,i]:=mt[j,i]-r*mt[k,i];
               end;
          end;
     end;
end;
function Kol(mt:matr;x:byte;z:real):byte;{подсчет строк}
var i,j,k:byte;
    sum:real;
begin
k:=0;
for i:=1 to x do
 begin
  sum:=0;
  for j:=1 to x+1 do
  sum:=sum+mt[i,j];
  if sum/(x+1)<z then k:=k+1;
 end;
Kol:=k;
end;
procedure Vyvod(var mt:matr;x:byte);{вывод результата}
var i,j:byte;
begin
writeln('Треугольная матрица:');
for i:=1 to x do
 begin
  for j:=1 to x+1 do
  write(mt[i,j]:6:2);
  writeln;
 end;
end;
var a:matr;
    n:byte;
    ch:real;
begin
clrscr;
Vvod(a,n);
Gauss(a,n);
Vyvod(a,n);
write('Введите число: ');
readln(ch);
writeln;
write('Количество строк сумма в которых меньше ',ch:0:2,' = ',Kol(a,n,ch));
readln
end.
4
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
10.11.2009, 09:25  [ТС] 13
БОЛЬШОЕ СПАСИБО=) ВОТ СЕЙЧАС ИЗУЧАЮ))))ТЯЖЕЛО ВСЕ ЭТО((((
0
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
10.11.2009, 20:08  [ТС] 14
скажите пожалуйста (обращаюсь к первому заданию) как сжать массив и дополнить нулями)) с помощь процедур и функций. допустим ввели массив состояший из N вещественных чисел , ну например [1,2,3,4,5] и потом вводим промежуток сжатия , допустим[1,3], программа должна выдать в этом случае такой массив(сжатый) [4,5,0,0,0] помогите пожалуйста......
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
10.11.2009, 21:12 15
сашк, да я посему то этого не увидел... извиняюсь...
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
uses
  crt;
const
  max=10;
type
  MyArr=array[1..max]of integer;
var
  a:MyArr;
{процедура ввода массива}
procedure Writing(var a:MyArr);
var
  i:integer;
begin
  for i:=1 to max do
    a[i]:=random(8)-4;
end;
{процедура сжатия массива}
procedure Zip(var a:MyArr);
var
  i,j,k,m:integer;
begin
  writeln('С какого значения будет сжимать:');
  repeat
    readln(i);
    if (i<1)or(i>max) then
      writeln('Данное значение выходит за границы вашего массива! Попробуйте снова или введите 0 для выхода.');
    if i=0 then
      exit
  until
    (i>=1)and(i<=max);
  writeln('По какое значение будем сжимать:');
  repeat
    readln(j);
    if (j<1)or(j>max) then
      writeln('Данное значение выходит за границы вашего массива! Попробуйте снова или введите 0 для выхода.');
    if j=0 then
      exit
  until
    (j>=1)and(j<=max);
  for k:=1 to max-j do
  begin
    a[i+k-1]:=a[j+k];
    a[j+k]:=0;
  end;
  a[j]:=0
end;
{процедура вывода массива}
procedure Print(a:MyArr; ch:char);
var
  i:integer;
begin
  writeln('Массив ',ch,':');
  write('[ ');
  for i:=1 to max do
    write(a[i],' ');
  writeln(']')
end;
{функция нахождения минимального по модулю}
function FindMin(a:MyArr):integer;
var
  i,min,tempi:integer;
begin
  min:=abs(a[1]);
  for i:=2 to max do
    if abs(a[i])<min then
    begin
      min:=abs(a[i]);
      tempi:=i
    end;
  Result:=tempi;
end;
{функция сумма модулей}
function Summ(a:MyArr):integer;
var
  i,res:integer;
  fl:boolean;
begin
  res:=0;
  fl:=false;
  for i:=1 to max do
  begin
    if fl then
      inc(res,abs(a[i]));
    if a[i]<0 then
      fl:=true
  end;
  Result:=res;
end;
{основная программа}
begin
  Writing(a);
  Print(a,'A');
  writeln('Минимальный среди модулей элемент a[',FindMin(a),']=',a[FindMin(a)]);
  writeln('Сумма модулей после первого отрицательного: ',Summ(a));
  Zip(a);
  Print(a,'A')
end.
2
0 / 0 / 0
Регистрация: 20.02.2010
Сообщений: 5
29.04.2010, 19:53 16
Вот для первой задачи, может кто расписать что каждый строчка в программе делает?
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
uses
  crt;
const
  max=10;
type
  MyArr=array[1..max]of integer;
var
  a:MyArr;
{процедура ввода массива}
procedure Writing(var a:MyArr);
var
  i:integer;
begin
  for i:=1 to max do
    a[i]:=random(8)-4;
end;
{процедура сжатия массива}
procedure Zip(var a:MyArr);
var
  i,j,k,m:integer;
begin
  writeln('С какого значения будет сжимать:');
  repeat
    readln(i);
    if (i<1)or(i>max) then
      writeln('Данное значение выходит за границы вашего массива! Попробуйте снова или введите 0 для выхода.');
    if i=0 then
      exit
  until
    (i>=1)and(i<=max);
  writeln('По какое значение будем сжимать:');
  repeat
    readln(j);
    if (j<1)or(j>max) then
      writeln('Данное значение выходит за границы вашего массива! Попробуйте снова или введите 0 для выхода.');
    if j=0 then
      exit
  until
    (j>=1)and(j<=max);
  for k:=1 to max-j do
  begin
    a[i+k-1]:=a[j+k];
    a[j+k]:=0;
  end;
  a[j]:=0
end;
{процедура вывода массива}
procedure Print(a:MyArr; ch:char);
var
  i:integer;
begin
  writeln('Массив ',ch,':');
  write('[ ');
  for i:=1 to max do
    write(a[i],' ');
  writeln(']')
end;
{функция нахождения минимального по модулю}
function FindMin(a:MyArr):integer;
var
  i,min,tempi:integer;
begin
  min:=abs(a[1]);
  for i:=2 to max do
    if abs(a[i])<min then
    begin
      min:=abs(a[i]);
      tempi:=i
    end;
  Result:=tempi;
end;
{функция сумма модулей}
function Summ(a:MyArr):integer;
var
  i,res:integer;
  fl:boolean;
begin
  res:=0;
  fl:=false;
  for i:=1 to max do
  begin
    if fl then
      inc(res,abs(a[i]));
    if a[i]<0 then
      fl:=true
  end;
  Result:=res;
end;
{основная программа}
begin
  Writing(a);
  Print(a,'A');
  writeln('Мимальный среди модулей элемент a[',FindMin(a),']=',a[FindMin(a)]);
  writeln('Сумма модулей после первого отрицательного: ',Summ(a));
  Zip(a);
  Print(a,'A')
end.
0
 Аватар для galaid
289 / 34 / 6
Регистрация: 20.09.2011
Сообщений: 464
10.11.2012, 12:15 17
Puporev, пару вопросов по коду:
Delphi
1
2
3
4
5
6
7
8
9
10
11
for k:=1 to x do
     begin
       for j:=k+1 to x+1 do
          begin
            r:=mt[j,k]/mt[k,k];
            for i:=k to x do
               begin
                 mt[j,i]:=mt[j,i]-r*mt[k,i];
               end;
          end;
     end;
На сколько я понимаю j - это строки, i - это столбцы? То есть наиболее вложенный цикл у вас по столбцам?

И еще, а что, если элемент mt[k,k] будет равен нулю? В программе явно это не учтено, и в результате будет ошибка деления на ноль. Скажите, если какой-либо элемент, стоящий на главной диагонали исходной матрицы, равен нулю, будет ли равен нулю ее определитель? Или здесь придется еще менять строки местами, чтобы подобная ошибка не возникала? Но и это тоже будет не самый верный вариант, так как в новой матрице (после перестановки строк) вновь может возникнуть ситуация, описанная выше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.11.2012, 12:15
Помогаю со студенческими работами здесь

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]
Напишите программу :confusion: 1. Дан одномерный массив А, состоящий из N целых чисел. Сжать массив, удалив из него все элементы,...

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, b]
Сжать массив, удалив из него все элементы, модуль которых находится в интер*вале . Освободившиеся в конце массива элементы заполнить...

Сжать массив, удалив из него все элементы, модуль которых находиться в интервале [a, b]
Уважаемя администрация помогите пожайлуста бедному студенту с решением задаче на паскале: В однородном массиве, состоящем из n...

Сжать массив, удалив из него все элементы, модуль которых не превышает единицу
В одномерном массиве, состоящем из п вещественных элементов, вычислить: 1. Сумму элементов массива с нечетными номерами. 2. Сумму...

Сжать массив, удалив из него все элементы, модуль которых не превышает 1. Освободившиеся в конце массива элементы заполнить нулями
Сжать массив, удалив из него все элементы, модуль которых не превышает 1. Освободившиеся в конце массива элементы заполнить нулями. ...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

Новые блоги и статьи
Циклы for в Python
py-thonny 17.03.2025
Существует множество ситуаций, когда нам нужно выполнить одно и то же действие несколько раз. Цикл for в Python — настоящий рабочий конь для большинства программистов. Если вам нужно пройтись по всем. . .
Предсказание ветвлений - путь к высокопроизводи­тельному C++
NullReferenced 17.03.2025
В высокопроизводительном программировании на C++ каждый такт процессора на счету. Когда речь заходит о разработке систем с низкой задержкой — будь то высокочастотная торговля, обработка потоковых. . .
Паттерн CQRS в C#
UnmanagedCoder 17.03.2025
Создание сложных корпоративных приложений часто требует нестандартных подходов к архитектуре. Один из таких подходов — паттерн CQRS (Command Query Responsibility Segregation), предлагающий простую,. . .
Паттерн Цепочка ответственности в C#
UnmanagedCoder 17.03.2025
Цепочка ответственности — это поведенческий паттерн проектирования, который позволяет передавать запросы последовательно по цепочке потенциальных обработчиков, пока один из них не обработает запрос. . . .
Создаем микросервисы с NestJS, TCP и Typescript
run.dev 17.03.2025
NestJS — фреймворк, который значительно упрощает создание серверных приложений на Node. js. Его прелесть в том, что он комбинирует концепции ООП, функционального программирования и предлагает. . .
Гексагональная архитектура со Spring Boot
Javaican 17.03.2025
Если вы когда-нибудь сталкивались с ситуацией, когда внесение простых изменений в базу данных или пользовательский интерфейс заставляло вас переписывать весь код, то вы точно оцените элегантность. . .
Позиционировани­е Kafka Consumer и Seek-операции
Javaican 17.03.2025
Что же такое Consumer Seek в Kafka? По сути, это API-метод, который позволяет программно указать, с какой позиции (offset) Consumer должен начать или продолжить чтение данных из партиции. Без этого. . .
Python NumPy: Лучшие практики и примеры
py-thonny 17.03.2025
NumPy (Numerical Python) — одна из ключевых библиотек для научных вычислений в Python. Она превращает Python из просто удобного языка общего назначения в среду для проведения сложных математических. . .
Java Micronaut в Docker: контейнеризация с Maven и Jib
Javaican 16.03.2025
Когда речь заходит о микросервисной архитектуре на Java, фреймворк Micronaut выделяется среди конкурентов. Он создан с учётом особенностей облачных сред и контейнеров, что делает его идеальным. . .
Управление зависимостями в Java: Сравнение Spring, Guice и Dagger 2
Javaican 16.03.2025
Инъекция зависимостей (Dependency Injection, DI) — один из фундаментальных паттернов проектирования, который радикально меняет подход к созданию гибких и тестируемых Java-приложений. Суть этого. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru