Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2015, 20:32   #1
AngryProj
Пользователь
 
Регистрация: 27.11.2014
Сообщений: 11
По умолчанию C++ - Обнуление столбцов матрицы

Дана матрица (любой размерности), нужно последовательно сравнивать столбцы друг с другом. И если есть совпадающие элементы, то полностью обнулять один из столбцов (тот который сравнивают или тот С которым сравнивают).

Проблема в том, что в программа срабатывает только в некоторых случаях, либо же не срабатывает вовсе.
P.s. ввод/вывод организован в main, потому что особо с этим не заморачивался, важна лишь сама функция, так что просьба - камнями не кидаться, пока только учусь

Код:
// Если найдено значение, которое имеется в обоих столбцах, то эта функция обнуляет один из столбцов
// (во всех строках этого столбца значения строк становятся равными 0)
int** null(int** mat, int m, int j)
{
    for(int i=0; i<m; i++)
        mat[i][j]=0;
    return mat;
}
 
int** nullSt(int** mat, int m, int n)
{
    for (int j=0; j < n-1; j++)
        for(int f=j+1; f<n; f++)
        {
            for(int i=0;i<m-1;i++)
                for(int k=0;i<m;k++)
                {
                    if (mat[i][j] == mat[k][f])
                    {
                        mat=null(mat,m,j);
                        break;
                    }
                    break;
                }
                break;
        }
                    return mat;
}
main:
Код:
void main ()
{
    int m, n;
    cin>>m>>n;
    int** mat;
    mat = new int *[m];
    for  (int i = 0; i<m; i++)
        mat[i] = new int [n];
 
    cout<<endl<<endl;
 
//  ввод данных
    for(int i =0; i<m;i++)
        for (int j=0; j<n;j++)
            cin>>mat[i][j];
 
    cout<< endl<<endl<< "MATRIX:"<<endl;
 
//  вывод исходного массива
    for(int i =0; i<m;i++)
    {
        for (int j=0; j<n;j++)
            cout<<mat[i][j];
        cout<<endl;
    }
 
    mat = nullSt(mat,m,n);
 
    cout<< endl<<endl<< "MATRIX:"<<endl;
 
//  вывод преобразованного массива
    for(int i =0; i<m;i++)
    {
        for (int j=0; j<n;j++)
            cout<<mat[i][j];
        cout<<endl;
    }
 
getch();
}
AngryProj вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ср. арифметическое строк и столбцов матрицы (С++) Satansoft Помощь студентам 0 14.03.2013 02:20
Сортировка столбцов матрицы(C++) CRazY-LeMoN Помощь студентам 0 04.03.2013 06:28
обнуление отрицательных столбцов prelest' Паскаль, Turbo Pascal, PascalABC.NET 19 01.06.2011 02:41
вывод номеров столбцов матрицы и подсчитать количество этих столбцов Vitalina69 Помощь студентам 2 15.02.2011 21:52
Матрицы:функция изменения порядка столбцов матрицы Fajyz Помощь студентам 0 13.01.2010 09:40