Вы находитесь на странице: 1из 13

Одномерные массивы

A. A[0], A[2], A[4], ...

#include <iostream>

using namespace std;

int main (){


int n;
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++) {
cin>> arr[i];
}
for (int i=0;i<n;i+=2){
cout << arr[i] <<" ";
}
delete [] arr;
return 0;
}

B. Вывести четные элементы

#include <iostream>

using namespace std;

int main (){


int n;
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++) {
cin>> arr[i];
}
for (int j=0;j<n;++j){
if(arr[j]%2==0){
cout<<arr[j]<<" ";
}
}
return 0;
}

C. Количество положительных элементов

#include <iostream>

using namespace std;

int main (){


int n,t=0;
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++) {
cin>> arr[i];
}
for (int j=0;j<n;++j){
if(arr[j]>0){
t++;
}
}
cout << t;
return 0;
}

D. Количество элементов, больших предыдущего

#include <iostream>

using namespace std;

int main (){


int n,t=0;
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++) {
cin>> arr[i];
}
for (int j=1;j<n;++j){
if(arr[j-1]<arr[j]){
t++;
}
}
cout << t;
return 0;
}

E. Есть ли два элемента с одинаковыми знаками

#include <iostream>

using namespace std;

int main (){


int n;
string t="NO";
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++) {
cin>> arr[i];
}
for (int j=1;j<n;++j){
if((arr[j-1]>0 and arr[j]>0)or(arr[j-1] <0 and arr[j]<0)) {
t="YES";
break;
}
}
cout << t;
return 0;
}

F. Количество элементов больших обоих соседей

#include <iostream>

using namespace std;

int main (){


int n,t=0;
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++) {
cin>> arr[i];
}
for (int j=1;j<n-1;++j){
if(arr[j-1]<arr[j] and arr[j+1]<arr[j]) {
t++;
}
}
cout << t;
return 0;
}

G. Переставить элементы в обратном порядке

#include <iostream>
using namespace std;

int main (){


int n,t=0;
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++) {
cin>> arr[i];
}
for (int j=0;j<n/2;++j){
t = arr[j];
arr[j]=arr[n-j-1];
arr[n-j-1]=t;
}
for (int i = 0; i < n; i++) {
cout << arr[i]<<" ";
}
return 0;

H. Переставить соседние элементы

#include <iostream>
using namespace std;

int main (){


int n,t=0;
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++) {
cin>> arr[i];
}
for (int j=0;j+1<n;j=j+2){
t = arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
for (int i = 0; i < n; i++) {
cout << arr[i]<<" ";
}
return 0;

I. Циклический сдвиг вправо

#include <iostream>
using namespace std;

int main (){


int n,t,c=0;
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++) {
cin>> arr[i];
}
t = arr[0];
for (int j=0;j<n;j=j+1){
c = arr[(j+1)%n];
arr[(j+1)%n]=t;
t = c;
}
for (int i = 0; i < n; i++) {
cout << arr[i]<<" ";
}
return 0;

J. Максимум в массиве

#include <iostream>
using namespace std;

int main (){


int n,t,c=0;
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++) {
cin>> arr[i];
}
t = arr[0];
for (int j=0;j<n;j=j+1){
if(arr[j]>=t){
t=arr[j];
}
}
cout<<t;
return 0;

K. Количество различных элементов в монотонном массиве

#include <iostream>
using namespace std;

int main (){


int n,t,c=0;
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++) {
cin>> arr[i];
}
t = arr[0];
for (int j=0;j<n;j=j+1){
if(arr[j]==t){
continue;
}else{
t=arr[j];
c++;
}
}
cout<<c+1;
return 0;

L. Шеренга

#include <iostream>
using namespace std;

int main (){


int n,t,c=0;
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++) {
cin>> arr[i];
}
cin>>t;
for (int j=0;j<n;j=j+1){
if(arr[j]>=t){
c++;
}
}
cout<<c+1;
return 0;

M. Двойной переворот

#include <iostream>
using namespace std;

int main (){


int n,a,b,c,d,t;
cin >> n >>a>>b>>c>>d;
int *arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i]=i+1;
}
for (int j=a;j<=(b+a)/2;j++){
t = arr[j-1];
arr[j-1]=arr[a+b-j-1];
arr[a+b-j-1]=t;
}
for (int j=c;j<=(d+c)/2;j++){
t = arr[j-1];
arr[j-1]=arr[c+d-j-1];
arr[c+d-j-1]=t;
}

for (int i = 0; i < n; i++) {


cout << arr[i]<<" ";
}
delete[] arr;
return 0;

N. Суперсдвиг

#include <iostream>
using namespace std;

void povernuti(int arr[],int a,int b){


int t;
for (int j=a;j<=(b+a)/2;j++){
t = arr[j-1];
arr[j-1]=arr[a+b-j-1];
arr[a+b-j-1]=t;
}
}

int main (){


int n,k;
cin >> n;
int *arrb = new int[n];
for (int i = 0; i < n; i++) {
cin>> arrb[i];
}
cin >> k;
if(k<0){
k = k%(-n);
}
k = (n+k%n);
povernuti(arrb,1,n);
povernuti(arrb,1,k);
povernuti(arrb,k+1,n);
for (int i = 0; i < n; i++) {
cout << arrb[i]<<" ";
}
return 0;

O. Потерянная карточка

Двумерные и многомерные массивы

A. Побочная диагональ

#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int** arr =new int*[n];
for (int i=0;i<n;i++){
arr[i]=new int[n];
}
for (int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i+j==n-1){
arr[i][j] = 1;
}else if(i+j>n-1){
arr[i][j]=2;
}else{
arr[i][j]=0;
}
}
}
for (int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout << arr[i][j]<<" ";
}
cout << endl;
}
for(int i=0;i<n;i++){
delete [] arr[i];
}
delete [] arr;
return 0;
}

B. Симметричная ли матрица?

#include <iostream>
using namespace std;

int main()
{
int n,c=1;
cin >> n;
int** arr =new int*[n];
for (int i=0;i<n;i++){
arr[i]=new int[n];
}
for (int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin >> arr[i][j];
}
}
for (int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(arr[i][j]!=arr[j][i]){
c = 0;
break;
}
}
}
if(c!=0){
cout << "yes";
}else{
cout<< "no";
}

for(int i=0;i<n;i++){
delete [] arr[i];
}
delete [] arr;
return 0;
}

C. Состязания - 1

#include <iostream>
using namespace std;

int main()
{
int n,m,t=0,m_sum=0,sum_in=0;
cin >> n>>m;
int** arr =new int*[n];
for (int i=0;i<n;i++){
arr[i]=new int[m];
}

for (int i=0;i<n;i++){


for(int j=0;j<m;j++){
cin >> arr[i][j];
t+=arr[i][j];
}
if(t>m_sum){
m_sum = t;
sum_in = i;
}
t = 0;
}

cout<<m_sum<<endl<< sum_in;
for(int i=0;i<n;i++){
delete [] arr[i];
}
delete [] arr;
}

D. Состязания - 2

#include <iostream>
using namespace std;

int main()
{
int n,m,m_sum=0,sum_in=0,pop=0;
cin >> n>>m;
int** arr =new int*[n];
for (int i=0;i<n;i++){
arr[i]=new int[m];
}

for (int i=0;i<n;i++){


for(int j=0;j<m;j++){
cin >> arr[i][j];
if(arr[i][j]>m_sum){
m_sum = arr[i][j];
sum_in = i;
pop = j;
}
}
}
cout<<m_sum<<endl<< sum_in <<" " << pop;
for(int i=0;i<n;i++){
delete [] arr[i];
}
delete [] arr;
}

E. Состязания - 3

#include <iostream>
using namespace std;
int sumarry(int arr[],int g){
int sum=0;
for(int i=0;i<g;i++){
sum+=arr[i];
}
return sum;
}
int main()
{
int n,m,m_sum=0,sum_in=0,t=0,k=0;
cin >> n>>m;
int** arr =new int*[n];
for (int i=0;i<n;i++){
arr[i]=new int[m];
}

for (int i=0;i<n;i++){


for(int j=0;j<m;j++){
cin >> arr[i][j];
if(arr[i][j]>m_sum){
m_sum = arr[i][j];
sum_in = i;
}
}
}

for (int i=0;i<n;i++){


for(int j=0;j<m;j++){
if(arr[i][j]==m_sum){
if(sumarry(arr[i],m)>sumarry(arr[sum_in],m)){
sum_in = i;
}else if(sumarry(arr[i],m)==sumarry(arr[sum_in],m)){
if(i<sum_in){
sum_in=i;
}
}
}
}
}
cout<< sum_in;
for(int i=0;i<n;i++){
delete [] arr[i];
}
delete [] arr;
}

F. Состязания - 4

#include <iostream>
using namespace std;
int main()
{
int n,m,m_sum=0,sum_in=0,k=0;
cin >> n>>m;
int** arr =new int*[n];
for (int i=0;i<n;i++){
arr[i]=new int[m];
}

for (int i=0;i<n;i++){


for(int j=0;j<m;j++){
cin >> arr[i][j];
if(arr[i][j]>m_sum){
m_sum = arr[i][j];
sum_in = i;
}
}
}

for (int i=0;i<n;i++){


for(int j=0;j<m;j++){
if(arr[i][j]==m_sum){
k++;
break;
}
}
}
cout<< k;
for(int i=0;i<n;i++){
delete [] arr[i];
}
delete [] arr;
return 0;
}

G. Состязания - 5

#include <iostream>
using namespace std;
int main()
{
int n,m,m_sum=0,sum_in=0,k=0;
cin >> n>>m;
int** arr =new int*[n];
for (int i=0;i<n;i++){
arr[i]=new int[m];
}

for (int i=0;i<n;i++){


for(int j=0;j<m;j++){
cin >> arr[i][j];
if(arr[i][j]>m_sum){
m_sum = arr[i][j];
sum_in = i;
}
}
}

for (int i=0;i<n;i++){


for(int j=0;j<m;j++){
if(arr[i][j]==m_sum){
k++;
break;
}
}
}
cout<< k<<endl;
for (int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(arr[i][j]==m_sum){
cout << i<<" ";
}
}
}
for(int i=0;i<n;i++){
delete [] arr[i];
}
delete [] arr;
}

H. Таблица умножения

#include <iostream>
using namespace std;
int main()
{
int n,m,k=0;
cin >> n>>m;
int** arr =new int*[n];
for (int i=0;i<n;i++){
arr[i]=new int[m];
}

for (int i=0;i<m*n;i++){


if(i%m==0 and i!=0){
k++;
}
arr[k%n][i%m] = i%m*k;
}

for (int i=0;i<n;i++){


for(int j=0;j<m;j++){
cout << arr[i][j]<<" ";
}
cout << endl;
}

for(int i=0;i<n;i++){
delete [] arr[i];
}
delete [] arr;
}

I. Треугольник Паскаля

#include <iostream>
using namespace std;
int main()
{
int n,m,k=0;
cin >> n>>m;
int** arr =new int*[n];
for (int i=0;i<n;i++){
arr[i]=new int[m];
}

for (int i=0;i<n;i++){


for(int j=0;j<m;j++){
if(i==0 or j==0){
arr[i][j]=1;
}else{
arr[i][j]=arr[i-1][j]+arr[i][j-1];
}
}
}

for (int i=0;i<n;i++){


for(int j=0;j<m;j++){
cout << arr[i][j]<<" ";
}
cout << endl;
}

for(int i=0;i<n;i++){
delete [] arr[i];
}
delete [] arr;
}

J. Заполнение спиралью
K. Заполнение змейкой

#include <iostream>
using namespace std;
int main()
{
int n,m,k=0;
cin >> n>>m;
int** arr =new int*[n];
for (int i=0;i<n;i++){
arr[i]=new int[m];
}

for (int i=0;i<n;i++){


if(i%2==0){
for(int j=0;j<m;j++){
arr[i][j]= k;
k++;
}
}else{
for(int j=0;j<m;j++){
arr[i][m-1-j]= k;
k++;
}
}
}

for (int i=0;i<n;i++){


for(int j=0;j<m;j++){
cout << arr[i][j]<<" ";
}
cout << endl;
}

for(int i=0;i<n;i++){
delete [] arr[i];
}
delete [] arr;
}

L. Заполнение диагоналями
M. Сапер
N. Переворот
O. Спираль

Вам также может понравиться