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

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

25.10.2016, 02:04. Показов 1979. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
- Ввести произвольную размерность одномерного массива в интервале 1..10.
- Ввести данные (тип данных указан в вариантах) с клавиатуры в виде «Х[i]=», где i – индекс элемента.
- После окончания ввода для контроля данных вывести на экран массив.
- Обработать данные в подпрограмме (тип подпрограммы и способ обработки указан в вариантах) и вывести результат.
- Ввод данных и вывод результатов на экран должны производиться в головной программе, все вычисления – в подпрограммах. Оформить подпрограммы в отдельном модуле. Подключить модуль к головной программе.
- Все символьные элементы считать вводимыми только в нижнем регистре.
- Если результатами вычислений являются вещественные числа, то выводить их с точностью до 1-го знака после точки.

Массив символов. В процедуре удалить из исходного массива элементы с четными индексами. Первый элемент массива считать элементом с индексом 1. Размерность итогового массива должна уменьшиться.

Помогите срочно, пожалуйста

Не знаю на верном пути иду или нет, но вот все,что пока написано

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
Unit modulelab5;
Interface
implementation
var
mas: array [1..10] of char;
i,j,n: integer;
begin
j:=0;
n:=0;
For i:= 1 to 10 do
begin
If (mas[i] mod 2 =0) then
if (i mod 2 = 0) then
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
program lab5;
uses modulelab5, crt;
var
a:mas;
i,j, n: integer;
begin
 writeln('Введите размерность массива (1...10):');
  read(n);
   if n>10 then writeln('Ошибка') else 
 writeln('Введите числа');
   for i:=1 to n do
    begin
     write('a[',i,']=');
     read(a[i]);
    end;
   write('Массив=',a);
for i:=1 to n do
write(a[i]:3);
for i:=n downto 1 do
if (i mod 2 = 0) then
  begin
  for j:=i to n-1 do
     a[j]:=a[j+1];
     n:=n-1;
 end;
writeln;
for i:=1 to n do
write(a[i]:3);
readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2016, 02:04
Ответы с готовыми решениями:

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

Уменьшить элементы исходного массива на среднее арифметическое элементов с четными индексами
Произвести обработку последовательности Дан одномерный массив А, содержащий N чисел. Уменьшить...

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

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

7
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
25.10.2016, 07:44 2
Лучший ответ Сообщение было отмечено freakazoid1 как решение

Решение

В модуль lab5m поместите процедуру
Pascal
1
2
3
4
5
6
7
8
procedure RemoveEvenIdx(var a: array of Integer; var n: Integer);
var i, j: Integer;
begin
  i:=0; j:=0;
  while j<n do begin
    a[i]:=a[j]; Inc(i); Inc(j,2);
  end; n:=i;
end;
В программе объявите массив, введите его, выведите, вызовите RemoveEvenIdx, снова выведите массив.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
uses lab5m;
const mn=10;
var
  a: array [1..mn] of Integer;
  n, i: Integer;
begin
  repeat Write('N [1..',mn,']: '); ReadLn(n); until n in [1..10];
  Write('Элементы: '); for i:=1 to n do Read(a[i]); ReadLn;
  Write('A ='); for i:=1 to n do Write(' ',a[i]); WriteLn;
  RemoveEvenIdx(a,n);
  Write('A''='); for i:=1 to n do Write(' ',a[i]); WriteLn;
end.
1
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 24
25.10.2016, 10:27  [ТС] 3
Не получается, можете сразу конечный результат написать?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
25.10.2016, 12:31 4
Могу. Не буду, продолжайте пробовать. Что именно не получается?

Добавлено через 1 минуту
PS. Тип элемента массива не забудьте на Char поменять.

Добавлено через 1 минуту
Болванка модуля выглядит так:
Pascal
1
2
3
4
5
6
unit lab5m;
interface
{...}
implementation
{...}
end.
1
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 24
25.10.2016, 14:52  [ТС] 5
Введите размерность массива (1...10):
4
Введите числа
M[1]=2
M[2]=6
M[3]=4
M[4]=5
Массив=[2,6,4,5,0,0,0,0,0,0]
ogram.Main()[END]

Вот это выдает программа, все написал как вы, процедура ничего не выполняет

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
uses lab5m;
var
  a: M;
  n, i: Integer;
begin
   writeln('Введите размерность массива (1...10):');
  read(n);
   if n>10 then writeln('Ошибка') else
 writeln('Введите числа');
   for i:=1 to n do
    begin
     write('M[',i,']=');
     read(a[i]);
    end;
   write('Массив=', a);
   writeln;
  RemoveEvenIdx(a,n);
  writeln;
  Write('A''='); for i:=1 to n do Write(' ',a[i]); WriteLn;
end.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
unit lab5m;
Interface
type
  M = array[1..10] of integer;
procedure RemoveEvenIdx(var a:M; var n: integer);
 
implementation
procedure RemoveEvenIdx(var a: M; var n: integer);
var i, j: Integer;
begin
  i:=0; j:=0;
  while j<n do begin
    a[i]:=a[j]; Inc(i); Inc(j,2);
  end; n:=i;
end;
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
25.10.2016, 17:30 6
Тем не менее, отличия видны невооруженным глазом. Попробуйте устранить их и посмотреть на результат.
1
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 24
25.10.2016, 17:35  [ТС] 7
различия были в вводе информации, все же у вас были небольшие ошибки или недочеты не знаю как это назвать, но у меня все получилось, спасибо за помощь
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
26.10.2016, 17:46 8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от freakazoid1 Посмотреть сообщение
все же у вас были небольшие ошибки или недочеты
Вы ошибаетесь, или пример ошибки/недочета в студию.

Прогон:
Код
N [1..10]: 5
Элементы: 1 2 3 4 5
A = 1 2 3 4 5
A'= 1 3 5
Прогон:
Код
N [1..10]: 6
Элементы: 1 2 3 4 5 6
A = 1 2 3 4 5 6
A'= 1 3 5
Добавлено через 4 минуты
И после замены Integer на Char:
Прогон:
Код
N [1..10]: 5
Элементы: 12345
A = 1 2 3 4 5
A'= 1 3 5
Прогон:
Код
N [1..10]: 6
Элементы: 123456
A = 1 2 3 4 5 6
A'= 1 3 5
0
26.10.2016, 17:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.10.2016, 17:46
Помогаю со студенческими работами здесь

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

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

Записать в новый массив сначала элементы исходного массива с четными, затем с нечетными индексами
Из одномерного массива А сформировать одномерный массив В, записав в него сначала элементы массива...

Удалить элементы массива с чётными индексами
Правильный ли код и как сделать так что бы правильно выводился результат? #include &lt;iostream&gt; ...


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

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