PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018 Внимание! Если программа не работает, обновите версию!
procedure FillStack(st:Stack<integer>; sq:sequence of integer); begin foreach var t in sq do st.Push(t); end;
procedure PrintStack(st:Stack<integer>; s:string); begin Write(s); st.Println end;
procedure ToStack(sta,stb:Stack<integer>; Even:boolean); begin if Even then while sta.Count>0 do begin var v:=sta.Pop; if v.IsEven then begin stb.Push(v); exit end end else while sta.Count>0 do begin var v:=sta.Pop; if v.IsOdd then begin stb.Push(v); exit end end end;
begin var st1:=new Stack<integer>; FillStack(st1,Seq(2,13,20,18,1)); PrintStack(st1,'Стек1: '); var st2:=new Stack<integer>; FillStack(st2,Seq(9,11,10,8,4)); PrintStack(st2,'Стек2: '); var st3:=new Stack<integer>; while st1.Count+st2.Count>0 do begin ToStack(st1,st3,True); ToStack(st2,st3,False); end; PrintStack(st3,'Стек3: ') end.
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
const int n = 3;
const int m = 4;
int a[n][m];
int s=0;
cout << "Исходный массив" <<endl;
srand(time(0));
for (int i = 0; i < n; i++){
for (int j = 0; j < m; j++){
a[i][j]=10+(51.0 / RAND_MAX) * rand();
cout << fixed << setw (7) << a[i][j];
}
cout <<endl;
}
for (int j = 0; j < m; j++)
s = s+a[0][j]+a[n-1][j];
for (int i = 1; i < n-1; i++)
s = s+a[i][0]+a[i][m-1];
cout << "s = " << s << endl;
}
Пример:
Исходный массив
55 33 24 41
50 60 41 11
17 33 45 50
s = 359