0 / 0 / 0
Регистрация: 28.03.2013
Сообщений: 13

Сформировать массив B, записав в него элементы массива A с нечётными индексами

28.05.2013, 15:30. Показов 5061. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста!!! Паскаль начали недавно проходить, не могу решить задачу.
Сформировать массив B, записав в него элементы массива A с нечётными индексами. Вычислить среднее арифметическое элементов массива B и удалить из него максимальный, минимальный и пятый элементы.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.05.2013, 15:30
Ответы с готовыми решениями:

Сформировать массив B, записав в него элементы массива A с нечётными индексами
Начали проходить массивы. Не получается решить данную задачу. Помогите, кто сечет фишку. Сформировать массив B, записав в него...

Сформировать массив В, записав в него элементы массива А в обратном порядке
Дан массив А состоящий с действителтных чисел. Сформировать В, записав в него элементы массива А в обратном порядке

Сформировать два массива, включая в первый четные элементы исходного массива с нечетными индексами, а во второй нечетные элементы с четными индексами
Задан массив размером K. Сформировать два массива, включая в первый четные элементы исходного массива с нечетными индексами, а во второй...

12
 Аватар для Harlem
66 / 66 / 90
Регистрация: 27.02.2013
Сообщений: 156
29.05.2013, 14:50
Лучший ответ Сообщение было отмечено AL78 как решение

Решение

Вот:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
k:=0;
for i:=1 to n do
  if i mod 2 <> 0 then begin
    inc(k);
    b[k]:=a[i];
  end;
write('Массив В: '); 
for i:=1 to k do
 write(b[k]:4);
writeln;
min:=b[1];
nmin:=1;
for i:=2 to k do
  if min>b[i] then nmin:=i;
max:=b[1];
nmax:=1;
for i:=2 to k do
  if max<b[i] then nmax:=i;
b[nmin]:=0; b[nmax]:=0; b[5]:=0;
write('Измененный массив В: ');
for i:=1 to k do
  write(b[i]:4);
0
Заблокирован
04.04.2022, 18:22
Если кому-то еще нужно)
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
program task;
var a:array of real;
    b:array of real;
    i,n,j,k:byte;
    arifm,max_b,min_b,temp:real;
 
begin
    write('Кол-во элементов: ');readln(n);
    setlength(a,n);
    setlength(b,n);
    for i:=0 to n-1 do begin
        write('a[',i,']=');readln(a[i]);
    end;
    j:=0;
    for i:=0 to n-1 do
        if(i mod 2<>0)then begin
            b[j]:=a[i];
            j:=j+1;
        end
        else continue;
    writeln('---');
    for i:=0 to j-1 do
        writeln('b[',i,']=',b[i]:1:2);
    arifm:=0;
    for i:=0 to j-1 do 
        arifm:=arifm+b[i];
    arifm:=arifm/j;
    writeln('Ср.арифм. = ',arifm:1:2);
    min_b:=b[0];
    max_b:=b[0];
    for i:=0 to j-1 do begin
        if(b[i]<min_b)then begin
            min_b:=b[i];
        end;
        if(b[i]>max_b)then begin
            max_b:=b[i];
        end;
    end;
    for i:=0 to j-1 do begin
        if(b[i]=min_b)then begin
            for k:=i to j do begin
                temp:=b[k];
                b[k]:=b[k+1];
                b[k+1]:=temp;
            end;
            j:=j-1;
        end;
        if(b[i]=max_b)then begin
            for k:=i to j do begin
                temp:=b[k];
                b[k]:=b[k+1];
                b[k+1]:=temp;
            end;
            j:=j-1;
        end;
        if(i=5)then begin
            for k:=i to j do begin
                temp:=b[k];
                b[k]:=b[k+1];
                b[k+1]:=temp;
            end;
            j:=j-1;
        end;
    end;
    writeln('---');
    for i:=0 to j-1 do 
        writeln('b[',i,']=',b[i]:1:2);
    a:=nil;
    b:=nil;
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7808 / 4629 / 2834
Регистрация: 22.11.2013
Сообщений: 13,148
Записей в блоге: 1
04.04.2022, 18:41
pustelekno,
слишком много ошибок: выходы за пределы массива, ненужные перестановки соседних элементов.
Кроме того, что если 5-й элемент был максимальным или минимальным?
0
Заблокирован
04.04.2022, 19:34
Извиняюсь, в первом варианте есть баги
Исправленный вариант:
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
program task;
var a:array of real;
    b:array of real;
    i,n,j,k:byte;
    arifm,max_b,min_b,temp:real;
 
begin
    write('Кол-во элементов: ');readln(n);
    setlength(a,n);
    setlength(b,n);
    for i:=0 to n-1 do begin
        write('a[',i,']=');readln(a[i]);
    end;
    j:=0;
    for i:=0 to n-1 do
        if(i mod 2<>0)then begin
            b[j]:=a[i];
            j:=j+1;
        end
        else continue;
    writeln('---');
    for i:=0 to j-1 do
        writeln('b[',i,']=',b[i]:1:2);
    arifm:=0;
    for i:=0 to j-1 do 
        arifm:=arifm+b[i];
    arifm:=arifm/j;
    writeln('Ср.арифм. = ',arifm:1:2);
    min_b:=b[0];
    max_b:=b[0];
    for i:=1 to j-1 do begin
        if(b[i]<min_b)then begin
            min_b:=b[i];
        end;
        if(b[i]>max_b)then begin
            max_b:=b[i];
        end;
    end;
    for i:=j downto 0 do begin
        if(b[i]=min_b)then begin
            for k:=i to j do begin
                temp:=b[k];
                b[k]:=b[k+1];
                b[k+1]:=temp;
            end;
            j:=j-1;
        end;
        if(b[i]=max_b)then begin
            for k:=i to j do begin
                temp:=b[k];
                b[k]:=b[k+1];
                b[k+1]:=temp;
            end;
            j:=j-1;
        end;
        if(i=5)then begin
            for k:=i to j do begin
                temp:=b[k];
                b[k]:=b[k+1];
                b[k+1]:=temp;
            end;
            j:=j-1;
        end;
    end;
    writeln('---');
    for i:=0 to j do
        writeln('b[',i,']=',b[i]:1:2);
    a:=nil;
    b:=nil;
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7808 / 4629 / 2834
Регистрация: 22.11.2013
Сообщений: 13,148
Записей в блоге: 1
04.04.2022, 19:37
Во втором тоже есть. На первый взгляд, лучше не стало.
Ошибок выхода за границы массива даже добавилось.
0
Заблокирован
04.04.2022, 19:37
Цитата Сообщение от bormant Посмотреть сообщение
ненужные перестановки соседних элементов
Так, в этом и суть задачи - удалить элементы, а следующие перенести на 1 назад (если вы нашли эту задачу из учебника "FreePascal&Lazarus")
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7808 / 4629 / 2834
Регистрация: 22.11.2013
Сообщений: 13,148
Записей в блоге: 1
04.04.2022, 19:43
Про "следующие перенести на 1 назад" в условии ничего нет. Это не требуется ни по заданию, ни по смыслу.
Даже если выполнять неэффективно удаление элемента на каждом шаге.
0
Заблокирован
04.04.2022, 19:45
Цитата Сообщение от bormant Посмотреть сообщение
в условии ничего нет. Это не требуется ни по заданию, ни по смыслу.
Если вы читали учебник, упомянутый мною выше, то вы бы знали, что авторы в подобных задачах удаляли элемент и последующие переносили на 1 назад
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7808 / 4629 / 2834
Регистрация: 22.11.2013
Сообщений: 13,148
Записей в блоге: 1
04.04.2022, 20:07
pustelekno,
То удаление, которое вы пытаетесь написать, выглядит так:
Pascal
1
2
Dec(j);
for k:=i to j-1 do b[k]:=b[k+1];
Но главная проблема далеко не в этом.

Добавлено через 19 минут
Посмотрите внимательно на цикл 39-64.
В первом варианте за один шаг цикла могли удалить 3 элемента, во втором -- два. Посмотрите, что будет, если 5-й элемент максимальный или минимальный (будет удалён лишний элемент).
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7808 / 4629 / 2834
Регистрация: 22.11.2013
Сообщений: 13,148
Записей в блоге: 1
05.04.2022, 10:52
pustelekno,
По сообщению #5
главное:
41-45, 49-53, 57-61: последний элемент b[j-1], но обращаетесь и к b[j], и к b[j+1]
40, 48, 56: такое построение условий даёт в отдельных случаях неверный результат

прочее:
10: зная, что в массиве A элементов n, не знаете, сколько элементов будет в массиве B? Странно...
12: ReadLn для каждого элемента... А как же Конвенция против пыток и других жестоких, бесчеловечных или унижающих достоинство видов обращения и наказания?
16: четность определяется по индексам от 0 или от 1? Ответ будет относиться и к строке 10. Формула нечетного числа 2i+1 (или 2i-1).
20: абсолютно бесполезная строка
32-37: То, что b[i] не может оказаться и максимальным, и минимальным одновременно (в силу 29-30), хороший повод пересмотреть условие.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7808 / 4629 / 2834
Регистрация: 22.11.2013
Сообщений: 13,148
Записей в блоге: 1
06.04.2022, 10:50
Шах расписался в полном неумении,
Вот тут его возьми и замени!
...
(q) ВСВ
pustelekno,
когда нужно удалять более одного элемента, сдвиг хвоста после каждого удаления становится "дорогим", дешевле и проще не "удалять ненужное", а "оставлять нужное":
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
const n=18; m=(n+1) div 2; D=5; W=4;
var
  a: array [0..n-1] of Integer;
  b: array [0..m-1] of Integer;
  i, k, s, mn, mx: Integer;
begin
  Randomize; {s:=0;}
  for i:=0 to n-1 do a[i]:=Random(100);
  for i:=0 to m-1 do begin
    b[i]:=a[2*i]; s:=s+b[i];
  end;
  mn:=b[0]; mx:=b[0];
  for i:=1 to m-1 do
    if      mn>b[i] then mn:=b[i]
    else if mx<b[i] then mx:=b[i];
  Write('A ='); for i:=0 to n-1 do Write(a[i]:W); WriteLn;
  WriteLn('Avg(B) = ',s/m:0:2,'  Min(B) = ',mn,'  Max(B) = ',mx,'  B[',D,'] = ',b[D-1]);
  Write('B ='); for i:=0 to m-1 do Write(b[i]:W); WriteLn;
  Write('B''='); {k:=0;}
  for i:=0 to m-1 do  { оставим подходящие }
    if not ((i=D-1) or (b[i]=mn) or (b[i]=mx)) then begin
      b[k]:=b[i]; Inc(k); Write(b[i]:W);
    end else Write('x':W);
  WriteLn;
  Write('B''='); for i:=0 to k-1 do Write(b[i]:W); WriteLn;
end.
Добавлено через 6 минут
Если не нужен отдельный вывод вектора B с отметками удаляемого "для наглядности", то:
Pascal
19
20
21
22
23
  {k:=0;}
  for i:=0 to m-1 do  { оставим подходящие }
    if not ((i=D-1) or (b[i]=mn) or (b[i]=mx)) then begin
      b[k]:=b[i]; Inc(k);
    end;
1
Заблокирован
09.04.2022, 19:34
Признаю, был не прав. Действительно, проще оставлять нужное, нежели удалять ненужное
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.04.2022, 19:34
Помогаю со студенческими работами здесь

Сформировать массив, записав в него элементы с четными индексами двух массивов.
Из массивов A и B сформировать массив C, записав в него элементы массивов A и B с четными индексами. Вычислить среднее арифметическое...

Сформировать массив B, записав в него все элементы массива А, стоящие после минимального
Помогите пожалуйста решить задачу: Ввести одномерный целочисленный массив A. Сформировать массив B, записав в него все элементы массива...

Сформировать одномерный массив В, записав в него сначала элементы массива А, имеющие четные индексы
Сформировать одномерный массив В,записав в него сначала элементы массива А,имеющие четные индексы,потом-элементы с нечетными индексами.

Сформировать массив, у которого вначале расположены элементы массива А с нечетными индексами, затем с четными
Дан массив А(20). Найти максимальный элемент среди положительных элементов массива А и сформировать массив Р(20), у которого вначале...

Сформировать два новых массива: . В первый массив поместить элементы с четными индексами, а во второй с нечетными
Задан числовой массив размером 10. Сформировать 2 массива размером 5. В первый массив поместить элементы с четными индексами, а во второй с...


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

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

Новые блоги и статьи
Безопасное программирование в Java и предотвращение уязвимостей (SQL-инъекции, XSS и др.)
Javaican 19.05.2025
Самые распространёные векторы атак на Java-приложения за последний год выглядят как классический "топ-3 хакерских фаворитов": SQL-инъекции (31%), межсайтовый скриптинг или XSS (28%) и CSRF-атаки. . .
Введение в Q# - язык квантовых вычислений от Microsoft
EggHead 19.05.2025
Microsoft вошла в гонку технологических гигантов с собственным языком программирования Q#, специально созданным для разработки квантовых алгоритмов. Но прежде чем погружаться в синтаксические дебри. . .
Безопасность Kubernetes с Falco и обнаружение вторжений
Mr. Docker 18.05.2025
Переход организаций к микросервисной архитектуре и контейнерным технологиям сопровождается лавинообразным ростом векторов атак — от тривиальных попыток взлома до многоступенчатых кибератак, способных. . .
Аугментация изображений с Python
AI_Generated 18.05.2025
Собрать достаточно большой датасет для обучения нейронной сети — та ещё головная боль. Часами вручную размечать картинки, скармливать их ненасытным алгоритмам и молиться, чтобы модель не сдулась при. . .
Исключения в Java: советы, примеры кода и многое другое
Javaican 18.05.2025
Исключения — это объекты, созданные когда программа сталкивается с непредвиденной ситуацией: файл не найден, сетевое соединение разорвано, деление на ноль. . . Список можно продолжать до бесконечности. . . .
Как сделать SSO (Single Sign-On) в C# приложении
stackOverflow 18.05.2025
SSO — это механизм, позволяющий пользователю пройти аутентификацию один раз и получить доступ к нескольким приложениям без повторного ввода учетных данных. Вы наверняка сталкивались с ним, когда. . .
Kubernetes с Apache Flink для обработки данных в реальном времени
Mr. Docker 17.05.2025
Kubernetes — это целая философия управления распределёнными приложениями. В отличие от "примитивных" решений вроде Docker Swarm, K8s (как его ласково называют в тусовке DevOps-инженеров) предлагает. . .
Использование декораторов в Python
py-thonny 17.05.2025
Если вы когда-нибудь задумывались о том, как красиво расширить функциональность кода без лишней возни и дублирования, декораторы в Python — та самая волшебная палочка, которую вы искали. По сути, это. . .
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru