Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[C++]Сравнить элементы массива между собой

10K
19 марта 2008 года
m0zg
41 / / 11.10.2006
Суть задачи такая. Дана непрямоугольная матрица, заполнить её элементами. В первом элементе каждой строки я сохраняю кол-во элементов в этой строке. И мне, исходя из полученной матрицы, нужно сформировать другую, в которой будут выводиться только повторяющиеся более 2-х раз эелементы в строке. Потом переходм на следующую строку и там опять сравниваем все элементы между собой. Вот алгоритм то я понимаю, но программно что-то не могу реализовать, торможу =)

Код:
#include <iostream>

using namespace std;
const int M = 100, N = 100;

void input(int (*p)[M], int mn, int nn);
void source(int &m, int (*p)[M]);
void result(int &m, int (*p)[M]);

int main(){
    int arr[M][N], m;
    input(arr, M, N);
    return 0;
}

void input(int (*p)[M], int mn, int nn){
    int m, n;
    const char* msg = "";
    do{
        cout << msg << endl;
        cout << "Enter quantity of a rows (not more then " << mn << "): ";
        cin >> m;
        //checking input...
        if(cin.fail())
        {
            cin.clear();
            cin.ignore();
        }
        msg = "Input error";
    } while(m < 1 || m > mn);
   
    for(int i=0;i<m;i++){
        msg = "";
        do{
            cout << msg << endl;
            cout << "Enter quantity of elements for a rows " << i + 1 << "(from 1 to " << (nn - 1) << "): ";
            cin >> n;
            //checking input...
            if(cin.fail()){
                cin.clear();
                cin.ignore();
            }
            msg = "Input error";
        } while(n < 1 || n > (nn - 1));
        p[0] = n; //saving quantity of elements in the first element of a row
        cout << "Enter values of a row: " << endl;
        for(int j=1;j<(n + 1);j++){
            cin >> p[j];
        }
    }
    //output
    source(m, p);
    result(m, p);
}

//source matrix
void source(int &m, int (*p)[M]){
    cout << endl << "Source matrix:" << endl;
    for(int i=0;i<m;i++){
        for(int j=1;j<p[0]+1;j++){
            cout << ((j != 1) ? ", " : "") << p[j];
        }
        cout << endl;
    }
}

/*функция, в которой хочу сравнить элементы в каждой строке между собой и сформировать новую матрицу,
если совпадений не найдено, то вставляем пустую строку или ничего не делаем*/
void result(int &m, int (*p)[M]){
    int tmp, r[M][N], count;
    cout << endl << "Result matrix:" << endl;
    for(int i=0;i<m;i++){
        for(int j=1;j<p[0]+1;j++){
            tmp = p[j]; //сохраняю элемент, котороый буду сравнивать с другими
            // тут, собственно начинаю что-то делать, только не знаю как дальше
            if(tmp == p[j]){
               
                cout << tmp << ", " << p[j];
            }
        }
        cout << endl;
    }
}


Вроде как чуть-чуть осталось, но не получается ))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог