// PascalABC.NET 3.3, сборка 1634 от 14.02.2018 // Внимание! Если программа не работает, обновите версию!
type Human=class public Name:string; Age:string; Height:string; end;
begin var h:=new Human; Write('Привет, как тебя зовут:'); Readln(h.Name); Write('Здорово ' ,h.Name,', а скажи-ка сколько тебе лет:'); Readln(h.Age); if (h.Age).ToInteger>18 then Writeln('Здорово ты уже совершеннолетний!') else Writeln('Ой! Да ты ещё совсем мал.'); Write('Окей, а какой же твой рост (см) :'); Readln(h.Height); Writeln('Вот результаты. Твоё имя - ',h.Name,', тебе ' ,h.Age, ' лет, а рост - ',h.Height ,'см') end.
Я не совсем понял смысла вводить тут класс, потому что работа с ним ведется, как с обыкновенной записью. Замените начало кода программы нижеследующим и убедитесь, что ничего не изменится.
type Human=record Name:string; Age:string; Height:string; end;
// PascalABC.NET 3.3, сборка 1634 от 14.02.2018 // Внимание! Если программа не работает, обновите версию!
begin var a:=ArrRandom(ReadInteger('n='),-11,11); a.Println; // 1 begin var s:=a.Where(t->t<0); if s.Count=0 then Writeln('1. Нет отрицательных элементов') else Writeln('1. Первый отрицательный элемент номер ', a.IndexOf(s.First)+1) end; // 2 begin var s:=a.Select((v,i)->(v,i)).Where(t->(t[0]>0) and t[0].IsEven); if s.Count=0 then Writeln('2. Нет четных положительных элементов') else begin var r:=s.Last; Writeln('2. Последний четный положительный элемент номер ',r[1]+1, ', значение ',r[0]) end end; // 3 begin var s:=a.Select((v,i)->(v,i)).Where(t->t[0] mod 5=0); if s.Count<2 then Writeln('3. Нет двух элементов, кратных 5') else Writeln('3. Номер второго элемента, кратного 5, равен ', (s.Skip(1).Take(1)).First[1]+1) end; // 4 begin var s:=a.Select((v,i)->(v,i)).Where(t->t[0]=0); if s.Count<3 then Writeln('4. Нет трех нулевых элементов') else begin s:=s.Skip(1).Take(2); Writeln('4. Количество положительных элементов между ', 'вторым и третьим нулевыми элементами равно ', a[s.First[1]+1:s.Last[1]].Where(t->t>0).Count) end end; // 5 begin var s:=a.IndexesOf(t->t>0).Take(4).Select(t->t+1); if s.Count<4 then Writeln('5. Нет четырех положительных элементов') else begin Write('5. Номера первых четырех положительных элементов: '); s.Println end end; // 6 begin var s:=a.IndexesOf(t->t<0); if s.Count=0 then Writeln('6. Нет отрицательных элементов') else Writeln('6. Номера первого и последнего отрицательных элементов: ', s.First+1,' ',s.Last+1) end; // 7 begin var s:=a.IndexesOf(t->t>0); if s.Count=0 then Writeln('7. Нет положительных элементов') else begin var i1:=s.First; s:=a.IndexesOf(t->t<0); if s.Count=0 then Writeln('7. Нет отрицательных элементов') else begin var i2:=s.Last; Writeln('7. Количество четных элементов между первым ', 'положительным и последним отрицательными элементами: ', a?[i1+1:i2].Where(t->t.IsEven).Count) end end end end.
// Внимание! Если программа не работает, обновите версию!
type
Human=class
public
Name:string;
Age:string;
Height:string;
end;
begin
var h:=new Human;
Write('Привет, как тебя зовут:'); Readln(h.Name);
Write('Здорово ' ,h.Name,', а скажи-ка сколько тебе лет:');
Readln(h.Age);
if (h.Age).ToInteger>18 then Writeln('Здорово ты уже совершеннолетний!')
else Writeln('Ой! Да ты ещё совсем мал.');
Write('Окей, а какой же твой рост (см) :'); Readln(h.Height);
Writeln('Вот результаты. Твоё имя - ',h.Name,', тебе ' ,h.Age,
' лет, а рост - ',h.Height ,'см')
end.
Я не совсем понял смысла вводить тут класс, потому что работа с ним ведется, как с обыкновенной записью. Замените начало кода программы нижеследующим и убедитесь, что ничего не изменится.
type
Human=record
Name:string;
Age:string;
Height:string;
end;
begin
var h:Human;
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-11,11); a.Println;
// 1
begin
var s:=a.Where(t->t<0);
if s.Count=0 then
Writeln('1. Нет отрицательных элементов')
else
Writeln('1. Первый отрицательный элемент номер ',
a.IndexOf(s.First)+1)
end;
// 2
begin
var s:=a.Select((v,i)->(v,i)).Where(t->(t[0]>0) and t[0].IsEven);
if s.Count=0 then
Writeln('2. Нет четных положительных элементов')
else begin
var r:=s.Last;
Writeln('2. Последний четный положительный элемент номер ',r[1]+1,
', значение ',r[0])
end
end;
// 3
begin
var s:=a.Select((v,i)->(v,i)).Where(t->t[0] mod 5=0);
if s.Count<2 then
Writeln('3. Нет двух элементов, кратных 5')
else
Writeln('3. Номер второго элемента, кратного 5, равен ',
(s.Skip(1).Take(1)).First[1]+1)
end;
// 4
begin
var s:=a.Select((v,i)->(v,i)).Where(t->t[0]=0);
if s.Count<3 then
Writeln('4. Нет трех нулевых элементов')
else begin
s:=s.Skip(1).Take(2);
Writeln('4. Количество положительных элементов между ',
'вторым и третьим нулевыми элементами равно ',
a[s.First[1]+1:s.Last[1]].Where(t->t>0).Count)
end
end;
// 5
begin
var s:=a.IndexesOf(t->t>0).Take(4).Select(t->t+1);
if s.Count<4 then
Writeln('5. Нет четырех положительных элементов')
else begin
Write('5. Номера первых четырех положительных элементов: ');
s.Println
end
end;
// 6
begin
var s:=a.IndexesOf(t->t<0);
if s.Count=0 then
Writeln('6. Нет отрицательных элементов')
else
Writeln('6. Номера первого и последнего отрицательных элементов: ',
s.First+1,' ',s.Last+1)
end;
// 7
begin
var s:=a.IndexesOf(t->t>0);
if s.Count=0 then
Writeln('7. Нет положительных элементов')
else begin
var i1:=s.First;
s:=a.IndexesOf(t->t<0);
if s.Count=0 then
Writeln('7. Нет отрицательных элементов')
else begin
var i2:=s.Last;
Writeln('7. Количество четных элементов между первым ',
'положительным и последним отрицательными элементами: ',
a?[i1+1:i2].Where(t->t.IsEven).Count)
end
end
end
end.