М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
olgateviasheva
olgateviasheva
12.09.2021 08:18 •  Информатика

Определить кол-во простых чисел,содержащихся в заданной последовательности n1 n2.. n20 (алгоритм паскаль)

👇
Ответ:
hggggg666
hggggg666
12.09.2021
Function IsPrime(n: integer): boolean;
  // Проверка, является ли число простым
var
  p: integer;
  found: boolean;
begin
  found := (n mod 2 = 0);
  p := 3;
  while (not found) and (sqr(p) <= n) do
  begin
    found := (n mod p = 0);
    p := p + 2
  end;
  IsPrime := (not found) or (p = 2)
end;

const
  n = 20;

var
  i, k: integer;
  a: array[1..n] of integer;

begin
  Write('Введите 20 целых чисел через пробел: ');
  for i := 1 to n do
  begin
    Read(a[i]);
  end;
  k := 0;
  for i := 1 to n do
    if IsPrime(a[i]) then k := k + 1;
  Writeln('Количество простых чисел- ', k)
end.

Тестовое решение:

Введите 20 целых чисел через пробел: 5 36 83 1673 339 73 34 14623 7 173 62 45 3463 326 28 934 345 24 4526 1143
Количество простых чисел- 6
4,4(69 оценок)
Открыть все ответы
Ответ:
Стас1326
Стас1326
12.09.2021
Задача 1. Код, предложенный Budzsergiy777p0i27m наиболее подходит для решения, если слова разделены только одним пробелом. Решение задачи ниже аналогично (удалить пробелы в начале и в конце строки, затем посчитать пробелы, увеличить на 1 результат и вывести на экран)

Программа:
print(input().strip().count(' ')+1)

Задача 2. Здесь следует учесть, что строка является неизменяемым элементом, т.е. напрямую символ в строке изменить нельзя, но можно получить два среза строки до и после буквы 'h' и затем склеить первый срез + большая буква 'H' + второй срез. Например, строка
'abchdef' -> 'abc'+'H'+'def'. А чтобы не захватить первую и последнюю букву h, нужно найти их индексы в строке и затем обрабатывать только часть строки между первой и последней буквой h.

Программа:

x=input()              #ввод строки
n1=x.find('h')       #находим индекс первого вхождения буквы h
n2=x.rfind('h')      #находим индекс последнего вхождения буквы hy=x[n1+1:n2]     #выбираем срез строки после первого вхождения
                          #буквы h и до последнего вхождения буквы h
while y.find('h')!=-1: #пока в срезе есть буква h       y=y[:y.find('h')]+'H'+y[y.find('h')+1:]  #заменить малую букву h на H
print(x[:n1+1]+y+x[n2:])   #вывод строки до первой буквы h+результат
                                        #замен в срезе h на H + вывод строки после
                                        # последней буквы h
4,6(71 оценок)
Ответ:
MrMixa008
MrMixa008
12.09.2021
PascalABC.NET 3.3.5, сборка 1669 от 21.05.2018
Внимание! Если программа не работает, обновите версию!

1. Функция

function avg(a:array of integer):=a.Where(t->t>0).Average;

begin
  var a:=ReadAllText('input.txt').ToIntegers;
  Writeln('Среднее значение положительных элементов ',avg(a))
end.

2. Процедура

procedure avg(a:array of integer; var m:real);
begin
  m:=a.Where(t->t>0).Average
end;

begin
  var a:=ReadAllText('input.txt').ToIntegers;
  var m:real;
  avg(a,m);
  Writeln('Среднее значение положительных элементов ',m)
end.

Хорошо видно, что решение с функцией имеет явное преимущество.
4,5(37 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ