С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 16.08.2018
Сообщений: 37
1

Заполнить указанную область матрицы единицами

26.09.2018, 09:59. Показов 4438. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Напишите программу, которая запрашивает координаты левого верхнего угла (x1,y1) и координаты правого нижнего угла (x2,y2) прямоугольника, и рисует его единицами на поле 30x10 состоящем из нулей.
Координаты прямоугольника (0<=x1,x2<=29; 0<=y1,y2<=9). Левый верхний угол поля имеет координату (0,0), правый нижний --(29,9).
Sample Input 1:

1 1 15 3
Sample Output 1:

000000000000000000000000000000
011111111111111100000000000000
011111111111111100000000000000
011111111111111100000000000000
000000000000000000000000000000
000000000000000000000000000000
000000000000000000000000000000
000000000000000000000000000000
000000000000000000000000000000
000000000000000000000000000000
Sample Input 2:

3 5 12 8
Sample Output 2:

000000000000000000000000000000
000000000000000000000000000000
000000000000000000000000000000
000000000000000000000000000000
000000000000000000000000000000
000111111111100000000000000000
000111111111100000000000000000
000111111111100000000000000000
000111111111100000000000000000
000000000000000000000000000000

вот мой код к примеру хз чо да как.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <cmath>
using namespace std;
int main() {
    int a[10][30],it, jt;
    for (int i=0; i<10; i++){
    for (int j=0; j<30; j++){
        cin>>a[i][j];
        if (a[i][j]==1){
            it=i; jt=j;
        }
    }
    }
    for (int i=0; i<10; i++){
    for (int j=0; j<30; j++){
        if (i==it || j==jt){
            a[i][j]=2;
        }
    }
    }
    a[it][jt]=1;
    for (int i=0; i<10; i++){
    for (int j=0; j<30; j++){
        cout<<a[i][j]<<" ";
    }
    cout<<endl;
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2018, 09:59
Ответы с готовыми решениями:

Заполнить заданную область квадратной матрицы единицами, а остальное - нулями
Данная действительно квадратная матрица размерности N. Заполнить матрицу в заштрихованной области...

Заполнить верхний треугольник нулевой матрицы единицами
Дано натуральное число N (N&lt;=15). Заполните и выведите на экран квадратный двумерный массив...

Заполнить первую половину матрицы размером n*n единицами, а вторую - нулями
2. Заполнить первую половину двумерного массива размерности n x n еденицами, а вторую 0 , выручите...

Заполнить элементы главной диагонали матрицы нулями остальные единицами
Дала целочисленная матрица nxn. Заполнить элементы: главной диагонали 0, остальные 1.

3
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
26.09.2018, 11:36 2
Лучший ответ Сообщение было отмечено qansta как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
 
int main()
{
    int x1, y1, x2, y2;
    const int n = 10, m = 30;
    int a[n][m];
    cin >>x1>>y1>>x2>>y2;
    
    for (int i = 0; i < n; i++)
    {
      for (int j = 0; j < m; j++)
      {   
      if( i>=y1 && i<=y2 && j>=x1 && j<=x2) a[i][j]=1;
      else a[i][j]=0;
      cout <<a[i][j]<<" ";
      }
    cout <<endl;
    } 
 
system("pause");
return 0;
}
0
0 / 0 / 0
Регистрация: 16.08.2018
Сообщений: 37
27.09.2018, 08:34  [ТС] 3
Напишите программу, которая запрашивает координаты левого верхнего угла (x1,y1) и координаты правого нижнего угла (x2,y2) первого прямоугольника, далее координаты левого верхнего угла (x3,y3) и координаты правого нижнего угла (x4,y4) второго прямоугольника , и рисует первый прямоугольник единицами, второй прямоугольник двойками, а область их пересечения (если она есть) тройками, на поле 30x10 состоящем из нулей.
Координаты прямоугольника (0<=x1,x2<=29; 0<=y1,y2<=9). Левый верхний угол поля имеет координату (0,0), правый нижний --(29,9).
Sample Input 1:

1 1 15 5
3 3 25 8
Sample Output 1:

000000000000000000000000000000
011111111111111100000000000000
011111111111111100000000000000
011333333333333322222222220000
011333333333333322222222220000
011333333333333322222222220000
000222222222222222222222220000
000222222222222222222222220000
000222222222222222222222220000
000000000000000000000000000000
Sample Input 2:

3 5 12 8
20 0 25 2
Sample Output 2:

000000000000000000002222220000
000000000000000000002222220000
000000000000000000002222220000
000000000000000000000000000000
000000000000000000000000000000
000111111111100000000000000000
000111111111100000000000000000
000111111111100000000000000000
000111111111100000000000000000
000000000000000000000000000000

вот мой код. уф. дошел до сюда и понял что этим методом далеко не уйдешь есть ли решение по короче?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
using namespace std;
int main() {
    int i,j,x,x1,y,y1,x2,y2,x3,y3,it,jt,a[100][100],f,g;
    cin>>x>>y>>x1>>y1>>x2>>y2>>x3>>y3;
    for (i=0; i<10; i++){
        for (j=0; j<30; j++){
            if (i>=y && i<=y1 && j>=x && j<=x1){
                a[i][j]=1;
            }
            else if (i>=y2 && i<=y3 && j>=x2 && j<=x3){
                a[i][j]=2;
            } 
            if(x2>=x && y2>=y && x3>=x1 && y3>=y1){
            if (i>=y2 && i<=y1 && j>=x2 && j<=x1){
                a[i][j]=3;
            }
    }
           if (x2>=x &&y>=y2 && x3>x1 && y3<=y1){
               if(i<=y3 && i>=y && j>=x2 && j<=x1){
                   a[i][j]=3;
               }
           }
            if ((x>=x2 || x2>=x) && y>=y2 && (x1>=x3 ||x1<=x3) && (y1>=y3 ||y1<=y3)){
                if ( i<=y3 && i>=y && j<=x3 && j>=x){
                    a[i][j]=3;
                }
            }
      cout<<a[i][j];
        }
        cout<<endl;
    }
                
}
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
27.09.2018, 11:30 4
Цитата Сообщение от qansta Посмотреть сообщение
a[100][100]

qansta
, нет смысла выделять памяти больше чем требуется a[10][30], обратите внимание на const int - это универсальный метод при объявлении массива
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
using namespace std;
 
int main()
{
    int x1, y1, x2, y2, x3, y3, x4, y4;
    const int n = 10, m = 30;
    int a[n][m];
    cin >>x1>>y1>>x2>>y2;
    cin >>x3>>y3>>x4>>y4;
    for (int i = 0; i < n; i++)
    {
      for (int j = 0; j < m; j++)
      {   
      if( i>=y1 && i<=y2 && j>=x1 && j<=x2) a[i][j]=1;
      else a[i][j]=0;
      if( i>=y3 && i<=y4 && j>=x3 && j<=x4&&a[i][j]==0) a[i][j]=2;
      else if( i>=y3 && i<=y4 && j>=x3 && j<=x4&&a[i][j]==1) a[i][j]=3;      
      cout <<a[i][j]<<" ";
      }
    cout <<endl;
    } 
 
system("pause");
return 0;
}
0
27.09.2018, 11:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2018, 11:30
Помогаю со студенческими работами здесь

Заполнить заштрихованную область матрицы нулями
Задали квадратную матрицу, все элементы которой равны единице. Написать фунцию void func (int**...

Заполнить заштрихованную область матрицы нулями
Написать функцию void func (int** arr, int n), которая заполняет заштрихованную область квадратной...

Заполнить нулями заданную область матрицы
Задана квадратная матрица, все элементы которой равны единице. Написать функцию void func (int **...

Заполнить заштрихованную область матрицы нулями
Дано квадратную матрицу, все элементы которой равны единице. Написать функцию void func (int **...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru