Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
0 / 0 / 1
Регистрация: 06.01.2013
Сообщений: 51
1

Найти количество четных элементов массива, вывести элементы массива, значение которых попадает в интервал

06.01.2013, 22:12. Показов 3664. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача такая:
Дан одномерный массив Xn. Найти количество четных элементов массива, напечатать на экране все элементы массива, значение которых попадает в интервал [C; D].

Саму программу вроде как я написал, но есть косяки с типами переменных, с ними я не очень дружу, что нужно подправить? Какой тип должен быть у массива? Сейчас ошибка такова Нельзя преобразовать тип single к integer(строчка 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
var
i,n,s,c,d: integer;
Xn: array [1..10] of single;
  begin
     writeln('n='); readln(n); // kol-vo elementov v massive
     for i:=1 to n do begin
     write('Xn(',i,')=');
     readln(Xn[i]);
  end;
  begin
     for i:=1 to n do
    [B] if xn[i] mod 2<>0 then[/B]
     inc(s); // kol-vo chetnih elementov
  end;
     writeln('s=');
  begin
     write('c='); readln(c);
     write('d='); readln(d);
     for i:=1 to n do
     if xn[i]>c and xn[i]<d then 
     writeln(Xn[i]);
    end;
   end.
Добавлено через 1 час 6 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var
i,n,s,c,d: integer;
Xn: array [1..10] of integer;
  begin
     writeln('n='); readln(n); // kol-vo elementov v massive
     for i:=1 to n do begin
     write('Xn(',i,')=');
     readln(Xn[i]);
  end;
  begin
     s=0;
     for i:=1 to n do
     if Xn[i] mod 2<>0 then inc(s); // kol-vo chetnih elementov
     writeln('s=');
  end;
     
  begin
     write('c='); readln(c);
     write('d='); readln(d);
     for i:=1 to n do
     if (Xn[i]>=c) and (Xn[i]<=D) then writeln(Xn[i]);
    end;
   end.
Вроде бы поправил, только вот количестве четных элементов, как правильно сделать с inc.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.01.2013, 22:12
Ответы с готовыми решениями:

Найти номер строки массива размера m на n, в которых находится наибольшее количество четных элементов
Найти номер строки массива размера m на n в которых находиться наибольшее количество четных...

Найти сумму всех элементов массива, и количество элементов, значение которых превышает 6
ввести с клавитуры из N элементов.Найдите сумму всех элементов и количество элементов значение...

Элементы массива заполняются по формуле x*(x-3)*(sqr(x)-81). Найти первые 20 элементов и указать значение x, при которых значения элементов - 0
1. Элементы массива заполняются по формуле x*(x-3)*(sqr(x)-81). Найти первые 20 элементов и указать...

Найти и вывести количество пар элементов массива, произведение которых положительно
Условие такое: Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые...

8
Почетный модератор
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
06.01.2013, 22:17 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var
i,n,s,c,d: integer;
Xn: array [1..10] of integer;
 
begin
write('n='); readln(n); // kol-vo elementov v massive
for i:=1 to n do 
    begin
    write('Xn(',i,')=');
    readln(Xn[i]);
    end;
s:=0;
for i:=1 to n do
    if Xn[i] mod 2=0 then inc(s); // kol-vo chetnih elementov
writeln('s=',s);
write('c='); readln(c);
write('d='); readln(d);
for i:=1 to n do
    if (Xn[i]>=c) and (Xn[i]<=D) then write(Xn[i]);
end.
1
0 / 0 / 1
Регистрация: 06.01.2013
Сообщений: 51
06.01.2013, 23:42  [ТС] 3
Еще вопрос, как из данного массива удалить элемент с определенным индексом? Как произвести замену элементов с определенными индексами?
Вообще как работать не с элементом массива а с его индексом?

Добавлено через 39 минут
При запуске скомпилированного файла программы, код которой выше,последнее действие(вывод элементов на экран) не задерживается на экране, как это исправить?
0
Почетный модератор
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
07.01.2013, 03:11 4
Цитата Сообщение от Surb Посмотреть сообщение
При запуске скомпилированного файла программы, код которой выше,последнее действие(вывод элементов на экран) не задерживается на экране, как это исправить?
перед end прописать readln
Цитата Сообщение от Surb Посмотреть сообщение
удалить элемент с определенным индексом?
Pascal
1
2
3
4
write('Индекс элемента для удаления: '); readln(ind);
for i:=ind to n-1 do
    a[i]:=a[i+1];
dec(n); //или n:=n-1;
Цитата Сообщение от Surb Посмотреть сообщение
произвести замену элементов с определенными индексами
например, заменить все кратные 5
Pascal
1
2
for i:=1 to n do
    if i mod 5=0 then a[i]:=0;
0
0 / 0 / 1
Регистрация: 06.01.2013
Сообщений: 51
08.01.2013, 00:16  [ТС] 5
Цитата Сообщение от КонецСвета Посмотреть сообщение
Pascal
1
2
3
4
write('Индекс элемента для удаления: '); readln(ind);
for i:=ind to n-1 do
* * a[i]:=a[i+1];
dec(n); //или n:=n-1;
Что-то не очень понимаю. По задаче нужно удалить каждый пятый элемент, в задаче тогда цикл пойдет от пяти, и после выполнения операций в цикле, и до продолжения самого цикла i(i=5 в начале), будет прибавляться 5. Может тут я опять же не прав.

Но что-то оттолкнуться от данного вами я не могу. В этом куске получается мы вводим индекс удаляемого элемента, потом начинаем цикл от этого элемента, до предпоследнего элемента массива, затем идет строчка a[i]:=a[i+1], может я не правильно понимаю сами операции с массивами, но тут мы либо прибавляем к индексу удаляемого элемента 1, либо к самому элементу 1, зачем? Мы же не удаляем этим самым элемент из массива. Далее цикл идет до второго элемента с конца.
Пытаясь найти способ удаления элемента из массива я понял лишь то что, последнему элементу присваивается 0, а значения находящиеся после удаляемого элемента переносятся на индекс назад. То есть элемент а(3) становится а(2) при удаление второго элемента.

Не могли бы вы расписать сам алгоритм этого куска, меня сбивает с толку отсутствие каких либо ограничений циклов в паскале, в какой момент идет смена i, я не всегда могу понять.

Добавлено через 15 минут
В общем вот задача
Удалить каждый пятый элемент.
Последние три элемента массива заменить на значение среднего арифметического
элементов исходного массива с четными номерами.
Работа идет все с тем же массивом.
Есть ли в паскале какая-то команда что бы задать шаг цикла?

Добавлено через 15 минут
Я пытался найти сумму элементов с цетным индексом, но т.к. не очень понимаю самих циклов идея в чем-то не правильна.
Pascal
1
2
3
4
5
6
7
begin
     s:=0;
     for i:=2 to n do
     s:=s+Xn[i];
     i:=i+2;
       writeln(s);
  end;
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
09.01.2013, 01:46 6
Цикл for идет с инкрементом/декрементом равным 1. Это вы не измените. Если вам нужны иные приращения переменной цикла, смотрите в сторону цикла while.
0
0 / 0 / 1
Регистрация: 06.01.2013
Сообщений: 51
11.01.2013, 02:41  [ТС] 7
Вот задача целиком.
Дан одномерный массив Xn. Найти первый элемент массива, значение которого ,больше А. Удалить каждый пятый элемент. Последние три элемента массива заменить на значение среднего арифметического элементов исходного массива с четными номерами.
Вот то что я пока что смог сделать, но опять возникла проблема с типами.
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
var
i,n: integer;
kol,s,kolvo: real;
Xn: array [1..10] of integer;
  begin
     write('n='); readln(n);
     for i:=1 to n do begin
     write('Xn(',i,')=');
     readln(Xn[i]);
  end;
  begin
      kol := 0;
      s := 0;
      i := 2;
    while i <= n do begin
        s := s + Xn[i];
        kol := kol + 1;
        i := i + 2;
   end;
    kolvo := s/kol;
    write(kolvo);
   begin
      i := n-3;
    while i <= n do begin
      Xn[i] :=kolvo;
      write('Xn(',i,')=');
      i := i+1;
       end;
    end;
    readln;
    end;
   end.
Я вроде как нашел первый элемент больше А, нашел средние арифметическое элементов с четным индексом, в конце идет попытка замены последних трех элементов, тут возникла проблема с типами, поправьте в этом, и удаление каждого пятого элемента добавьте, заранее благодарен.
0
0 / 0 / 1
Регистрация: 06.01.2013
Сообщений: 51
13.01.2013, 20:52  [ТС] 8
Ребята, хоть кто-нибудь отпишитесь, тут же немного нужно дополнить.
0
Почетный модератор
7966 / 3937 / 2464
Регистрация: 30.10.2011
Сообщений: 5,377
14.01.2013, 03:06 9
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
uses crt;
const nmax=100;
var a,i,j,n,kc,np: integer;
    sar: real;
    X: array [1..nmax] of real;
  begin
     write('n='); readln(n);
     for i:=1 to n do
         begin
         write('X(',i,')=');
         readln(X[i]);
         end;
     write('A=');readln(a);
     kc:=0;
     i:=1;
     while (kc=0) and (i<=n) do
           begin
           if X[i]>a then
              begin
              kc:=kc+1;;
              writeln('Первый элемент, больший А=',X[i]:0:1);
              end;
           i:=i+1;
           end;
     if kc=0 then writeln('Нет элемента массива, большего А');
     writeln('Иходный массив');
     for i:=1 to n do
         write(X[i]:0:1,' ');
     writeln;
     i:=1;
     np:=0;
     while (i<=n) do
           begin
           inc(np);
           if np=5 then
              begin
              for j:=i to n-1 do
                  X[j]:=X[j+1];
              n:=n-1;
              np:=1;
              end;
           i:=i+1;
           end;
     writeln('Массив после удаления каждого пятого');
     for i:=1 to n do
         write(X[i]:0:1,' ');
     writeln;
      kc:=0;
      sar:=0;
      i:= 2;
   while i<=n do
          begin
          sar := sar + X[i];
          kc := kc + 1;
          i := i + 2;
          end;
    sar := sar/kc;
    writeln('Среднее арифметическое элементов на четных местах=',sar:0:3);
    for i:=n-2 to n do
        X[i]:=sar;
     writeln('Массив после замены трех последних');
     for i:=1 to n do
         write(X[i]:0:1,' ');
     writeln;
    readln;
   end.
0
14.01.2013, 03:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2013, 03:06
Помогаю со студенческими работами здесь

Найти и вывести количество пар элементов массива, произведение которых нечётно, а сумма не кратна 5
1) Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 0...

Найти и напечатать номера столбцов матрицы, сумма элементов которых попадает в заданный интервал
в целочисленной матрице найти и напечатать номера столбцов сумма элементов которых попадает в...

Найти количество четных элементов массива, стоящих на четных местах
дан массив c, состоящий из n элементов.Элемента массива ввести с клавиатуры.Найти количество четных...

Вывести элементы массива, абсолютное значение которых больше 10
Дан одномерный массив размерностью 9,заполненный целыми числами, введенными с клавиатуры. Вывести...


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

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