Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Kamero
12 / 10 / 7
Регистрация: 08.02.2013
Сообщений: 254
#1

Удалить первый столбец матрицы в котором количество нулей равно заданному числу

02.02.2018, 13:59. Просмотров 250. Ответов 5
Метки нет (Все метки)

Помогите решить
Дан двумерный массив. Удалить из него первый из столбцов, количество нулей в котором равно некоторому заданному числу

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2018, 13:59
Ответы с готовыми решениями:

Удалить столбец матрицы, в котором находится первый четный отрицательный элемент
1. Дан двумерный массив размером 5*8, заполненный случайным образом. Удалить...

Вывести индексы элементов матрицы, значение которых равно заданному пользователем числу
1. Задать матрицу, найти необходимое число. #include <iostream> #include...

Из заданой марицы A(N,N)удалить строку и столбец, в которых находяться первый элемент, равно нулю.
Из заданой марицы A(N,N)удалить строку и столбец, в которых находяться первый...

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

Удалить столбец матрицы, в котором находится минимальный элемент.
Удалить столбец, в котором находится минимальный элемент.

5
nexan_pro
7 / 7 / 7
Регистрация: 24.03.2017
Сообщений: 33
Завершенные тесты: 2
02.02.2018, 22:11 #2
Kamero,
Удаление столбца сделал с помощью нового массива.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <time.h>
 
using namespace std;
 
int main() {
    srand(time(0));
#define m 5
#define n 5
    int arr[m][n], n1(0), p(0), _arr[100][100];
    cout << "Vvedite chislo: ";
    cin >> n1;
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            arr[i][j] = rand() % 10; //заполняем элементы массива
    cout << "Ishodnaya matrix : " << endl;
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++)
            cout << " " << arr[i][j];
        cout << endl;
    } cout << endl;
    for (int i = 0; i < m; i++) {
        int count(0), z(0);
        for (int j = 0; j < n; j++) {
            if (arr[j][i] == 0)
                count++;
        }
            if (n1 == count) { // сравниваем наше число и количество 0
                p = i + 1;
                cout << "v stolbce - " << p << '\n';
                                //заполняем новый массив
                for (int i = 0; i < n; i++)
                    for (int j = 0; j < p - 1; j++)
                        _arr[i][j] = arr[i][j];
                for (int i = 0; i < n; i++)
                    for (int j = p - 1; j < m - 1; j++)
                        _arr[i][j] = arr[i][j + 1];
                cout << endl;
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < m - 1; j++)
                        cout << _arr[i][j] << " ";
                    cout << endl;
                }
                system("pause");
                exit(1);
            }
        }
        system("pause");
        return 0;
}
0
Yetty
463 / 465 / 422
Регистрация: 18.12.2017
Сообщений: 1,906
02.02.2018, 22:36 #3
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
using namespace std;
 
int main()
{
    srand(time(0)); // генерация случайных чисел
    int n, m, b, j1=0, c=0;
    
    cout <<"n="; cin >>n;   
    cout <<"m="; cin >>m;
    cout <<"b="; cin >>b;
    
// объявляем двумерный динамический массив 
 
    double **a = new double* [n]; 
    for (int i = 0; i < n; i++)
        a[i] = new double [m];      
    
// заполняем массив случайными числами от 0 до 9 и выводим на экран
 
    for (int i = 0; i < n; i++)
    {              
        for (int j = 0; j < m; j++)
        {
            a[i][j] = rand() %10;
            cout << a[i][j] << " ";            
        }        
            cout << endl;            
    }
       cout << endl; 
       
// определяем номер столбца с заданным количеством нулей
 
    for (int j = 0; j < m; j++)
    {
        int k=0;        
        for (int i = 0; i < n; i++)      
        if (a[i][j]==0) k++;        
        if (k==b)
        {
        c=1;
        j1=j;
        break;
        }                    
    }        
        
// при необходимости сдвигаем столбцы двумерного массива и изменяем его размер
 
    if (c!=0)
    {
    for (int i = 0; i < n; i++)              
        for (int j = j1; j < m-1; j++)         
        a[i][j]=a[i][j+1]; 
        
    m=m-1; 
    }
    
// выводим новый массив на экран
 
      for (int i = 0; i < n; i++)
        {
        for (int j = 0; j < m; j++)                  
            cout << a[i][j] << " ";        
            cout << endl;     
        }
        
// освобождаем память отведённую под массив:
 
    for (int i = 0; i < n; i++)
    delete [] a[i];
    delete [] a;     
system("pause");
return 0;
}
0
Hitoku
Модератор
1695 / 1294 / 1399
Регистрация: 28.10.2016
Сообщений: 4,240
Завершенные тесты: 4
02.02.2018, 22:42 #4
Цитата Сообщение от nexan_pro Посмотреть сообщение
Удаление столбца сделал с помощью нового массива.
Удалить из исходного и переписать в новый совсем не одно и то же.

Вот как вариант
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>
#include <vector>
#include <iterator>
#include <random>
#include <algorithm>
 
int main()
{
    std::default_random_engine gen{ std::random_device()() };
    std::uniform_int_distribution<> dist(0, 1);
    int n, m, x; std::cout << "N, M = "; std::cin >> n >> m;
    std::vector<std::vector<int>> a(n, std::vector<int>(m));
    std::cout << "Matrix:\n";
    for (auto& r : a) {
        std::generate(r.begin(), r.end(), [&dist, &gen] {return dist(gen); });
        std::copy(r.begin(), r.end(), std::ostream_iterator<int>(std::cout, "\t"));
        std::cout << "\n";
    }
    std::cout << "X = "; std::cin >> x;
    std::size_t jfordel = 0;
    for (std::size_t j = 0; j < m; j++) {
        int count = 0;
        for (std::size_t i = 0; i < n; i++)
            if (a[i][j] == 0) count++;
        if (count == x) { jfordel = j; break; }
    }
    std::cout << "New matrix:\n";
    for (auto& r : a) {
        r.erase(r.begin() + jfordel);
        std::copy(r.begin(), r.end(), std::ostream_iterator<int>(std::cout, "\t"));
        std::cout << "\n";
    }
    system("pause");
}
1
pirat2k
9 / 9 / 8
Регистрация: 18.09.2012
Сообщений: 386
Завершенные тесты: 1
08.02.2018, 10:29 #5
Цитата Сообщение от Hitoku Посмотреть сообщение
Удалить из исходного и переписать в новый совсем не одно и то же.
Вот как вариант
Извиняюсь что не по теме, а можете ли этот код перевести на c#? Столкнулся с таким же заданием просто. Извиняюсь за беспокойство.
0
Hitoku
Модератор
1695 / 1294 / 1399
Регистрация: 28.10.2016
Сообщений: 4,240
Завершенные тесты: 4
08.02.2018, 11:40 #6
pirat2k, т.к. на C++ использовался вектор векторов, на C# пусть будет массив массивов
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
35
36
37
38
39
40
41
42
43
44
45
46
using System;
using System.Linq;
 
namespace post12101911
{
    class Program
    {
        static void PrintMatrix(int[][] a)
        {
            Console.WriteLine(String.Join(Environment.NewLine, a.Select(row => String.Join("\t", row))));
        }
 
        static int FindCol(int[][] a, int x)
        {
            int rowsize = a.Take(1).Select(r => r.Length).First();
            for (int j = 0; j < rowsize; j++)
            {
                int count = 0;
                for (int i = 0; i < a.Length; i++)
                {
                    if (a[i][j] == 0) count++;
                    if (i == a.Length - 1)
                        if (count == x) return j;
                }
            }
            return -1;
        }
 
        static void Main()
        {
            Random r = new Random();
            Console.Write("N = "); int n = int.Parse(Console.ReadLine());
            Console.Write("M = "); int m = int.Parse(Console.ReadLine());
            int[][] a = Enumerable.Range(0, n).Select(row => Enumerable.Range(0, m).Select(v => r.Next(0, 2)).ToArray()).ToArray();
            PrintMatrix(a);
            Console.Write("X = "); int j_for_del = FindCol(a, int.Parse(Console.ReadLine()));
            if (j_for_del >= 0)
            {
                a = a.Select(row => row.Take(j_for_del).Concat(row.Skip(j_for_del+1)).ToArray()).ToArray();
                PrintMatrix(a);
            }
            else Console.WriteLine("Нет столбцов, удовлетворяющих условию");
            Console.ReadKey();
        }
    }
}
1
08.02.2018, 11:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2018, 11:40

Найти количество элементов матрицы, равных заданному числу
Написать программу, которая в матрице чисел A(N,M) находит все элементы, равные...

Из матрицы удалить строку и столбец, в которых находится первый элемент, равный нулю
Из заданой матрицы A(N,N) удалить строку и столбецб в которых находится первый...

Найти количество элементов, кратных заданному числу, расположенных выше главной диагонали матрицы
написать программу, определяющую количество элементов, кратных задаваемому...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru