Решение модуля 1.8 Введение в программирование C++

Модуль 1.8 (Двумерные массивы)  в данном модуле будет изучен двумерные массивы иногда их также называют «матрицами».

Ниже представлены примеры задач с решением на C++ на тему Двумерные массивы.

Найдите индексы первого вхождения максимального элемента.

#include <iostream>
#include <cmath>
#include <vector>
using namespace std;

int main() {
    int n, m, x = 0, y = 0, a, am;
    cin >> n >> m;
    n *= m;
    cin >> am;
    for (int i = 1; i < n; i++) {
        cin >> a;
        if (am < a) {
            am = a;
            x = i / m;
            y = i % m;
        }
    }
    cout << x << " " << y;
}

Дано нечетное число n, не превосходящее 15. Создайте двумерный массив из n×n элементов, заполнив его символами «.» (каждый элемент массива является строкой из одного символа). Затем заполните символами «*» среднюю строку массива, средний столбец массива, главную диагональ и побочную диагональ. В результате «*» в массиве должны образовывать изображение звездочки. Выведите полученный массив на экран, разделяя элементы массива пробелами.

#include <iostream>
using namespace std;

int main() {
  int a[15][15];
    int N;
    cin >> N;
    for(int y=0; y<N; y++)
    {
        for(int x=0; x<N; x++)
        {
            if(x==y || x==N/2 || y==N/2 || x==N-y-1)
            {
                cout << "* ";
            }
            else
            {
                cout <<". ";
            } 
        }
        cout << endl;
    } 
    return 0;
}

Дано число n, не превышающее 100. Создайте массив размером n×n и заполните его по следующему правилу. На главной диагонали должны быть записаны числа 0. На двух диагоналях, прилегающих к главной, числа 1. На следующих двух диагоналях числа 2, и т.д. Выведите полученный массив на экран, разделяя элементы массива пробелами.

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    for (int i = 0; i < n * n; i++) {
        if (!(i % n)) 
            cout << endl;
        cout << abs(i / n - i % n) << " ";
    }
}

Дан двумерный массив и два числа: i и j. Поменяйте в массиве столбцы с номерами i и j

#include <iostream>
using namespace std;

int main()
{
  int n, m, first, second;
  cin >> n >> m;
  int **arr = new int*[n];
  for (int i = 0; i < n; arr[i] = new int[m], i++);
      for (int i = 0; i < n; i++)for (int j = 0; j < m; cin >> arr[i][j], j++);
          cin >> first >> second;
              for (int i = 0; i < n; swap(arr[i][first], arr[i][second]), i++);
                  for (int i = 0; i < n; cout << endl, i++)for (int j = 0; j < m; cout << arr[i][j]<<" ", j++);
  return 0;
}

Дано число n, не превосходящее 10, и массив размером n × n. Проверьте, является ли этот массив симметричным относительно главной диагонали. Выведите слово “YES”, если массив симметричный, и слово “NO” в противном случае.

#include <iostream>
#include <cmath>

using namespace std;

int main() 
{
	int n;
	bool symmetric;

	cin >> n;
	int a[10][10];

	for (int i = 0; i < n; i++) 
	{
		for (int j = 0; j < n; j++) 
		{
			cin >> a[i][j];
		}
	}

	symmetric = true;

	for (int i = 0; i < n; i++) 
	{
		for (int j = 0; j < n; j++) 
		{
			if (a[i][j] != a[j][i]) 
				symmetric = false;
		}
	}

	if (symmetric)
		cout << "YES";
	else 
		cout << "NO";
	return 0; 
}

Дан квадратный двумерный массив размером n × n и число k. Выведите элементы k-й по счету диагонали ниже главной диагонали (т.е. если k = 1, то нужно вывести элементы первой диагонали, лежащей ниже главной, если k = 2, то второй диагонали и т.д.).

Значение k может быть отрицательным, например, если k = −1, то нужно вывести значение первой диагонали лежащей выше главной. Если k = 0, то нужно вывести элементы главной диагонали.

Программа получает на вход число n, не превосходящие 10, затем массив размером n × n, затем число k.

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int n, m, x, y, temp;
    cin >> n ; int a[n][n];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> a[i][j];
        } 
    }

    cin >> m;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if ((i-j)==m){
                cout << a[i][j]<< " ";
            }
        }
    }

    return 0; 
}

Дан двумерный массив размером n×m (n и m не превосходят 1000). Симметричный ему относительно главной диагонали массив называется транспонированным к данному. Он имеет размеры m×n: строки исходного массива становятся столбцами транспонированного, столбцы исходного массива становятся строками транспонированного.

Для данного массива постройте транспонированный массив и выведите его на экран.

#include <iostream>
using namespace std;

int main() {
  int n, m, temp;
    cin >> n >> m;
    if(m>n)
        temp = m;
    else
        temp = n;
    int a[temp][temp];
    for(int y=0; y<n; y++)
    {
        for(int x=0; x<m; x++)
        {
            cin >> a[y][x];
        }
    }
    if(m>n)
    {
        for(int y=0; y<n; y++)
        {
            for(int x=y; x<m; x++)
            {
                temp = a[x][y];
                a[x][y] = a[y][x];
                a[y][x] = temp;
            }
        }
    }
    else
    {
        for(int x=0; x<m; x++)
        {
            for(int y=x; y<n; y++)
            {
                temp = a[x][y];
                a[x][y] = a[y][x];
                a[y][x] = temp;
            }
        }
    }
    for(int y=0; y<m; y++)
    {
        for(int x=0; x<n; x++)
        {
            cout << a[y][x] << " ";
        }
        cout << endl;
    }
  return 0;
}

В кинотеатре n рядов по m мест в каждом (n и m не превосходят 20). В двумерном массиве хранится информация о проданных билетах, число 1 означает, что билет на данное место уже продан, число 0 означает, что место свободно. Поступил запрос на продажу k билетов на соседние места в одном ряду. Определите, можно ли выполнить такой запрос.

#include <iostream>

using namespace std;

int main() {
	const int size = 20;
	int n, m;
	int arr[size][size];
	cin >> n >> m;
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < m; ++j) {
			cin >> arr[i][j];
		}
	}
	int k;
	cin >> k;
	int cnt = 0;
	int row = 0;
	bool query = false;
	for (int i = 0; i < n && !query; ++i) {
		for (int j = 0; j < m && !query; ++j) {
			if (arr[i][j] == 0) {
				++cnt;
			}
			else {
				cnt = 0;
			}
			if (cnt == k) {
				query = true;
				row = i + 1;
			}
		}
		cnt = 0;
	}
	cout << row;
	return 0;
}

Дан прямоугольный массив размером n×m. Поверните его на 90 градусов по часовой стрелке, записав результат в новый массив размером m×n.

#include <iostream>
#include <cmath>
using namespace std;

int main() {
	int n, m, x, y, temp;

	cin >> n >> m; int a[n][m];
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cin >> a[i][j];
		} 
	}

	for (int j = 0; j < m; j++) {
		for (int i = n-1; i >= 0; i--) {
			cout << a[i][j] << " ";
		} 
		cout << endl; 
	}
	   
	return 0; 
}

По данным числам n и m заполните двумерный массив размером n×m числами от 1 до n×m “змейкой”, как показано в примере.

#include <iostream>
#include <cmath>
#include <vector>
#include <iomanip>
using namespace std;

int main() {
	int i, j, k, n, m, a[30][30];
	cin >> n >> m;
	k = 1;
	//for (i = 0; i != n; i++) {
	//	for (j = 0; j != m; j++) {
	//		cin >> a[i][j];
	//	}
	//}
	for (i = 0; i != n; i++) {
		if (i % 2 == 0) {
			for (j = 0; j != m; j++) {
				a[i][j] = k;
				k++;
			}
		}
		else {
			for (j = m - 1; j >= 0; j--) {
				a[i][j] = k;
				k++;
			}
		}
	}
	for (i = 0; i != n; i++) {
		for (j = 0; j != m; j++) {
			cout << setw(4) << a[i][j];
		}
		cout << endl;
	}
		return 0;
}

По данным числам n и m заполните двумерный массив размером n×m числами от 1 до n×m “диагоналями”, как показано в примере.

#include <iostream>
using namespace std;

int main()
{
    int n, m, l = 1;
    cin >> n >> m;
    int a[n][m];
    for(int x = 0; x < n + m; x++)
    {
        for(int y = 0; y < n; y++)
        {
            if(x-y>=0 && x-y<m)
            {
                a[y][x-y] = l;
                l++;
            }
        }
    }
   
    //вывод
    cout<<" ";
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
          std::cout.width(4); std::cout << a[i-1][j-1];}
    cout<<endl;}
   
  return 0;
} 

Даны числа n и m. Заполните массив размером n × m в шахматном порядке: клетки одного цвета заполнены нулями, а другого цвета — заполнены числами натурального ряда сверху вниз, слева направо. В левом верхнем углу записано число 1.

#include <iostream>
using namespace std;
int main() {
    int n, m, c = 1;
    cin >> n >> m;
    int a[n][m];
    for(int y=0; y<n; y++)
    {
        for(int x=0; x<m; x++)
        {
            if(x%2 == y%2)
            {
                a[y][x] = c;
                c++;
            }
            else
            {
                a[y][x] = 0;
            }
        }
    }
      //вывод
    cout<<" ";
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
          std::cout.width(4); std::cout << a[i-1][j-1];}
    cout<<endl;}
   
  return 0;
} 

По данным числам n и m заполните двумерный массив размером n×m числами от 1 до n×m по спирали, выходящей из левого верхнего угла и закрученной по часовой стрелке, как показано в примере.

#include <iostream>
using namespace std;

int main()
{
  int n, m;
  cin >> n >> m;
  int a[100][100] = {0};
  int c = 1, k = 0, x_s = 1, y_s = 0, x = 0, y = 0;
  for (int c = 1; c <= n*m; c++)
  {
    a[y][x] = c;
    x += x_s;
    y += y_s;
    if (x < 0 || y<0 || x>m-1 || y>n-1 || a[y][x] != 0)
    {
      x -= x_s;
      y -= y_s;
      k++;
      if (k == 4)
      {
        k = 0;
      }
      if (k == 0)
      {
        x_s = 1;
        y_s = 0;
      }
      if (k == 1)
      {
        x_s = 0;
        y_s = 1;
      }
      if (k == 2)
      {
        x_s = -1;
        y_s = 0;
      }
      if (k == 3)
      {
        x_s = 0;
        y_s = -1;
      }
      x += x_s;
      y += y_s;
    }
  }

    cout<<" ";
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= m; j++){
                std::cout.width(4); std::cout << a[i-1][j-1];
            }
            cout<<endl;
        }
    return 0;
}

Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы

Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

15 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Arp1t21
Arp1t21
6 месяцев назад

Опять же ответы не мои

Arp1t21
Arp1t21
6 месяцев назад

14.
#include<bits/stdc++.h>
using namespace std;
int main(){
  int n, k;
  cin >> n >> k;
  vector <string> xe(n);
  for (int i = 0; i < n; i++){
    xe[i] = «I»;
  }
  vector <int> x(k);
  vector <int> y(k);
  for( int j = 0; j < k; j++){
    cin >> x[j];
    cin >> y[j];
  }
  for(int i = 0; i < k; i++){
    for (int j = x[i] — 1; j <=y[i] — 1; j++)
      xe[j] = «.»;
    }
    for (int i = 0; i < n; i++) {
      cout << xe[i];
    }
}

Arp1t21
Arp1t21
6 месяцев назад

13.
#include <iostream>
using namespace std;
int main()
{
 int x[8], y[8], x1, y1;
  bool f = false;
  for (int i=0; i < 8; i++)
  {
    cin >> x1 >> y1;
    x[i] = x1; y[i] = y1;
  }
  for (int i = 0; i < 7; i++)
  {
    for (int j = i + 1; j < 8; j++)
    {
      if (x[i] == x[j] or y[i] == y[j] or abs(x[i] — x[j]) == abs(y[i] — y[j]))
      {
        f = true;
        break;
      }
    }
  }
  f ? cout << «YES»: cout << «NO»;
  
}

Arp1t21
Arp1t21
6 месяцев назад

12.
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
int main() {
  int n;
  cin >> n;
  vector<int> a(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  unordered_map<int, int> count;
  for (int i = 0; i < n; i++) {
    count[a[i]]++;
  }
  for (int i = 0; i < n; i++) {
    if (count[a[i]] == 1) {
      cout << a[i] << » «;
    }
  }
  cout << endl;
  return 0;
}

Arp1t21
Arp1t21
6 месяцев назад

11.
#include <iostream>
using namespace std;
int main() {
  int n,k = 0;
   cin >> n;
   int a[n];
   for (int i = 0; i < n; i++) {
      cin >> a[i];
   }
   for (int i = 0; i < n-1; i ++) {
      for (int j = i+1;j<n; j++) {
         if (a[i] == a[j]) {
            k++;
         }
      }
   }
   cout << k;
 return 0;
}

Arp1t21
Arp1t21
6 месяцев назад

10.
#include <iostream>
using namespace std;
int main() {
  int n,x;
  cin>>n;
  int a[n];
  for (int i=0;i<n;i++)
  {
    cin>>a[i];
  }
  x=a[n-1];
  for(int i=n-1;i>0;i—)
  {
    a[i]=a[i-1];
  }
  a[0]=x;
  for(int i=0;i<n;i++)
  {
    cout<<a[i]<<‘ ‘;
  }
 return 0;
}

Arp1t21
Arp1t21
6 месяцев назад

9.
#include<bits/stdc++.h>
#define s string
#define e endl
#define ch char
#define c cin
#define pr push_back
#define ll long long
#define ct cout
#define f.i insert
using namespace std;
int main()
 {
  ll v, rt;
  cin >> v;
  vector <ll> a;
  for (ll i = 0; i < v; i++){
    cin >> rt;
    a.push_back(rt);
  }
  for (ll i = 1; i < v; i = i + 2) {
    rt = a[i];
    a[i] = a[i-1];
    a[i-1] = rt;
  }
    for (ll i=0; i<a.size(); i++) {
    cout << a[i] << » «;
  }
}

Arp1t21
Arp1t21
6 месяцев назад

8.
#include <iostream>
#include <vector>
using namespace std;

int main() {
int n = 0, uniq = 0;
cin >> n;
vector<int> a(n);

for (int i = 0; i < n; i++)
cin >> a[i];

for (int i = 0; i < n; i++) {
//cout << a[i] << » » << a[i+1] << endl;
if (a[i] != a[i+1]) uniq++; // обращаемся к элементу вне массива (n)
}
cout << uniq << endl;

return 0;
}

Arp1t21
Arp1t21
6 месяцев назад

7.
#include <bits/stdc++.h>
using namespace std;
int main ()
{
int n, t = 0;
cin >> n;
vector <int> a(n);
long long min = 9223372036854775807;
  for (int i = 0; i < n; i++) {
  cin >> a[i];

  for (int i = 0; i < n; i++) {
  if (a[i] % 2 == 1 || a[i] % 2 == -1)
{
  t++;
  if (a[i] < min){
  min = a[i];
}}}
  if (t == 0)
 {
  cout << 0;
 }
  else
 {
   cout << min;
 }
  
return 0;
}

Arp1t21
Arp1t21
6 месяцев назад

6.
#include <iostream>
#include <vector>
#include <algorithm>

int main (){
  int n;
  std::cin >> n;
  int x;
  std::vector<int> arr;
  std::vector<int> arr2;

  for(int i = 0; i < n; ++i){
    std::cin >> x;
    arr.push_back(x);
  }
  for(int j = 0; j < n; ++j){
    if(arr[j] > 0){
      arr2.push_back(arr[j]);
    }
  }
  std::sort(arr2.begin(), arr2.end());
  std::cout << arr2[0];

  return 0;
}

Arp1t21
Arp1t21
6 месяцев назад

5.
#include <bits/stdc++.h>
using namespace std;
int main() {
  int a,b,cnt=0;
  cin>>a;
  vector<int> v(a);
  for (int i=0;i<a;i++) {
    cin>>v[i];
  }
  for(int i=1;i<a;i++) {
    if ((v[i] > 0) == (v[i-1] > 0)) {
      cout << min(v[i-1], v[i]) << » » << max(v[i — 1], v[i]);
      return 0;
    }
  }
}

Arp1t21
Arp1t21
6 месяцев назад

4.
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main() {
  int n;
  cin >> n;
  vector <int> a(n);
  for (int i=0; i<n; i++)
    cin>> a[i];
  for (int i=0; i<n; i++){
    if (a[i]>a[i-1] && i!=0){
      cout<< a[i] << » «;}
  }
 return 0;
}

Arp1t21
Arp1t21
6 месяцев назад

3.
#include <iostream>
using namespace std;
int main()
{
   int n,k = 0;
   cin >> n;
   int a[n];
   for(int i = 0;i < n;i++)
   {
     cin >> a[i];
     if (a[i] >0)
     {
       k++;
     }
   }
  cout << k;
  return 0;
}

Arp1t21
Arp1t21
6 месяцев назад

2.
#include <iostream>
using namespace std;
int main()
{
   int n;
   cin >> n;
   int a[n];
   for(int i = 0;i < n;i++)
   {
     cin >> a[i];
     if (a[i] % 2 == 0)
     {
       cout << a[i] <<‘ ‘;
     }
   }
 return 0;
}

Arp1t21
Arp1t21
6 месяцев назад

1.ОТВЕТ ЭТОГО САЙТА Я НЕ ЧЕКАЛ НО ЭТОТ ОТВЕТ ТОЧНО ПРАВИЛЬНЫЙ
#include <iostream>
using namespace std;
int main() {
  int n;
  cin >> n;
  int a[n];
  for (int i = 0; i < n ; i ++)
  {
    cin >> a[i];
    if (i % 2 == 0)
     
   
    {
    cout << a[i] <<‘ ‘;
    }
  }
 
  return 0;
}

15
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x