В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
mashacherevchenko
mashacherevchenko
05.04.2023 09:32 •  Информатика

Необходимо реализовать на c++ dynamic 12. (dynamic 11 для дополнения к 12)
dynamic11◦. дан указатель p1 на вершину стека (если стек пуст, то p1 = nil).
также дано число n (> 0) и набор из n чисел. описать тип tstack —
запись с одним полем top типа pnode (поле указывает на вершину стека)
— и процедуру push(s, d), которая добавляет в стек s новый элемент
со значением d (s — входной и выходной параметр типа tstack, d —
входной параметр целого типа). с процедуры push добавить
в исходный стек данный набор чисел (последнее число будет вершиной
стека) и вывести адрес новой вершины стека.
dynamic12. дан указатель p1 на вершину стека, содержащего не менее пяти
элементов. используя тип tstack (см. dynamic11), описать функцию pop(s) целого типа, которая извлекает из стека s первый (верхний)
элемент, возвращает его значение и освобождает память, которую занимал
извлеченный элемент (s — входной и выходной параметр типа tstack). с
функции pop извлечь из исходного стека пять элементов и вывести их значения. вывести также указатель на новую вершину стека (если
результирующий стек окажется пустым, то этот указатель должен быть
равен nil).

Показать ответ
Ответ:
tipichnayapanda
tipichnayapanda
16.05.2023 21:34
// PascalABC.NET 3.1, сборка 1219 от 16.04.2016
begin
  var a:=ReadLines('m17.txt').JoinIntoString.ToIntegers;
  a.Println;
  var b:=a.Select((x,i)->Rec(x,i)).Where(x->x.Item1<0)
    .Select(x->x.Item2).ToArray;
  if b.Count<>2 then
    Writeln('Количество отрицательных элементов не равно двум')
  else begin
    a:=SeqFill(b[0],0).Concat(a.Skip(b[0]).Take(b[1]-b[0]+1))
      .Concat(SeqFill(a.Length-b[1]-1,0)).ToArray;
    a.Println
    end
end.

Тестовое решение:
23 14 7 15 0 13 -6 41 18 13 8 42 27 -11 3 19 10
0 0 0 0 0 0 -6 41 18 13 8 42 27 -11 0 0 0

Файл с исходными данными имеет имя m17.txt. Тестовый файл находится во вложении. Разбивка на строки сделана по 5 значений, но может быть совершенно произвольной. Также нет привязки именно к 17 числам, главное - чтобы отрицательных чисел было ровно два, иначе будет выдано сообщение о их неверном количестве.
0,0(0 оценок)
Ответ:
emasihinp08dbq
emasihinp08dbq
24.03.2022 11:33
Сумма всех четных чисел от 1 до 200 - это на самом деле сумма чисел
2+4+6+...+198+200.

1. Самый короткий вариант

// PascalABC.NET 3.1, сборка 1219 от 16.04.2016
begin
  Writeln(Range(2,200,2).Sum)
end.

Результат:
10100

2. Более длинный и более "школьный" вариант

// PascalABC.NET 3.1, сборка 1219 от 16.04.2016
begin
  var s:=0;
  var i:=2;
  while i<=200 do begin
    s:=s+i;
    i:=i+2
    end;
  Writeln(s)
end.

3. Совсем "тупой школьный" вариант (решение "в лоб")

// PascalABC.NET 3.1, сборка 1219 от 16.04.2016
var
  i,s:integer;
begin
  s:=0;
  for i:=1 to 200 do
    if i mod 2 =0 then s:=s+i;
  Writeln(s)
end.

4. Улучшенный "школьный" вариант

// PascalABC.NET 3.1, сборка 1219 от 16.04.2016
var
  i,s:integer;
begin
  s:=0;
  for i:=1 to 100 do s:=s+2*i;
  Writeln(s)
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота