Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 01.10.2014
Сообщений: 22
1

Написать процедуру и функцию, которая ищет количество положительных чисел в массиве

02.10.2014, 08:18. Показов 835. Ответов 9
Метки нет (Все метки)

11) Создать приложение. Написать процедуру и функцию, которая подсчитывает количество положительных элементов в массиве и определяет наибольшую разницу между этими элементами. В основной программе ввести массив из 15 элементов и проверить работу подпрограмм.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2014, 08:18
Ответы с готовыми решениями:

Разработать процедуру, которая в массиве натуральных чисел, находи количество чисел, для которых Р и М равны
Народ, мне очень нужна помощь. 1) Разработать функцию, которая вычисляет десятичное число М,...

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

Используя стек, написать процедуру или функцию, которая определяет количество вхождений буквы Е в файл
Используя стек, написать процедуру или функцию, которая определяет количество вхождений буквы Е в...

Написать функцию которая ищет последнее слово в строке(заканчивается пробелом)
надо написать ф-ю которая ищет последнее слово в строке(заканчивается пробелом). я написал, но не...

9
19 / 19 / 10
Регистрация: 19.05.2015
Сообщений: 704
29.07.2015, 11:56 2
Pascal
1
for i:= 1 to 15 do if k>0 then inc(k);
Где к - количество положительных элементов
0
Модератор
8558 / 4261 / 2928
Регистрация: 17.08.2012
Сообщений: 13,548
29.07.2015, 23:55 3
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
procedure positiv_cnt(var x: array of integer; var count: integer);
var i: integer;
begin
  count := 0;
  for i := 0 to high(x) do if x[i] > 0 then inc(count)
end;
 
function max_positiv_diff(var x: array of integer): integer;
var i, max_p, min_p: integer;
begin
  max_p := 0;
  min_p := maxint;
  for i := 0 to high(x) do
    if x[i] > 0
      then if x[i] > max_p
        then max_p := x[i]
        else if x[i] < min_p
          then min_p := x[i];
  max_positiv_diff := max_p - min_p
end;
 
const m = 15;
 
var i, k: integer;
    a: array [1..m] of integer;
begin
  writeln('Введите элементы массива a[', m, ']:');
  for i := 1 to m do
    begin
      write('a[', i:2, '] = ');
      readln(a[i])
    end;
  positiv_cnt(a, k);
  writeln('Количество положительных элементов: ', k);
  if k < 2
    then write('В массиве менее двух положительных элементов, разность вычислить невозможно')
    else write('Наибольшая разность между положительными элементами: ', max_positiv_diff(a));
  readln
end.
0
Администратор
Эксперт .NET
9126 / 4400 / 747
Регистрация: 17.04.2012
Сообщений: 9,178
Записей в блоге: 14
30.07.2015, 16:51 4
Цитата Сообщение от malinka_irinka Посмотреть сообщение
подсчитывает количество положительных элементов в массиве
Раз уж у нас в распоряжении .NET, попробуем лямбда-выражения и LINQ
Pascal
1
2
3
4
5
6
7
uses System, System.Linq, Arrays;
 
begin
    var arr: array of integer := new integer[42];
    FillByRandom(arr, -100, 100);
    Console.WriteLine(arr.Count(x -> x > 0));
end.
А вот вторую часть задания сделать с помощью LINQ мне представляется затруднительным
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31182 / 20381 / 7939
Регистрация: 22.10.2011
Сообщений: 35,337
Записей в блоге: 6
30.07.2015, 21:52 5
Вторую - это вот эту:
Цитата Сообщение от malinka_irinka Посмотреть сообщение
наибольшую разницу между этими элементами
? Очень просто:
Pascal
1
2
    var positives := arr.Where(x -> x > 0);
    Console.WriteLine(positives.Max() - positives.Min());
2
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
30.07.2015, 22:49 6
А зачем нужен Linq? Без него компилируется.

Кстати, не мог бы кто нибудь объяснить, что за штука такая этот Linq, и с чем ее едят?) На мелкосовтовском сайте про sql запросы пишут так туманно...

p.s получается в итоге вот что

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
uses
  System, Arrays;
 
const
  size = 42;
 
var
 Arr: array of Integer;
 Positives: sequence of Integer;
 
begin
  Arr := new Integer[Size];
  FillByRandom(Arr, Shortint.MinValue, Shortint.MaxValue);
  Positives := Arr.Where(x -> x > 0);
  Console.WriteLine(positives.Count);
  //Positives.ForEach(x -> Console.Write(x));
  Console.WriteLine(arr.Max() - arr.Min);
end.
В закомментированной строке я хотел красиво вывести последовательность, но компилятор падает, даже не удосужившись написать, что я сделал не так

Почему-то он очень часто падает на лямбдах

Добавлено через 1 минуту
похоже не получится красиво вывести одной строкой всю последовательность. Придется по старинке, эх..
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31182 / 20381 / 7939
Регистрация: 22.10.2011
Сообщений: 35,337
Записей в блоге: 6
30.07.2015, 23:51 7
Цитата Сообщение от Nekromail2011 Посмотреть сообщение
Без него компилируется.
Не надо думать, что у всех точно та же версия компилятора, что и у тебя. Мой компилятор не собирает программу без System.Linq, например. Да еще и без Reference-ов.
Цитата Сообщение от Nekromail2011 Посмотреть сообщение
похоже не получится красиво вывести одной строкой всю последовательность.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{$reference System.Core.dll}
uses
  System, Arrays, System.Linq;
 
const
  size = 42;
 
var
 Arr: array of Integer;
 
begin
  Arr := new Integer[Size];
  FillByRandom(Arr, Shortint.MinValue, Shortint.MaxValue);
  var Positives := Arr.Where((x : integer) -> x > 0);
  Console.WriteLine(positives.Count());
  WriteArray(Positives.ToArray(), ' '); // Прекрасно все выводится
  writeln;
  Console.WriteLine(Positives.Max() - Positives.Min());
end.
0
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
31.07.2015, 00:19 8
у меня сборка 969 от 30.06.2015, версия ядра 2.2.0.969
0
Администратор
Эксперт .NET
9126 / 4400 / 747
Регистрация: 17.04.2012
Сообщений: 9,178
Записей в блоге: 14
31.07.2015, 11:01 9
Цитата Сообщение от Nekromail2011 Посмотреть сообщение
что за штука такая этот Linq, и с чем ее едят?
Описание LINQ
По сути - это группа методов, облегчающих работу с коллекциями.

Не по теме:

Цитата Сообщение от volvo Посмотреть сообщение
Очень просто:
Тьфу, а я городил... Идею не подхватил.

0
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
31.07.2015, 11:22 10
а синтаксис запросов не поддерживается в pabcnet?)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2015, 11:22

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

Написать процедуру и функцию, которая определяет, является ли число простым
Написать процедуру и функцию которая определяет является число ли простым. В основной программе...

Написать процедуру, вычисляющую произведение и частное положительных чисел
написать процедуру, вычисляющую произведение и частное положительных чисел ПОМОГИТЕ, ПОЖАЛУЙСТА =(

Написать процедуру, которая считает количество слов в строке.
С клавиатуры вводится строка. Написать процедуру, которая считает количество слов в строке. ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.