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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2012, 13:21   #1
snacki
Пользователь
 
Регистрация: 23.06.2010
Сообщений: 22
По умолчанию Меню С++

Все доброго дня!!
Перейду стразу к делу: Есть рабочая программа с Matrix, и мне надо сделать к ней пользовательский интерфейс, типа когда нажимаешь 1: подсчитывало кол-во столбцов, а когда нажимаешь 2: подсчитывало кол-во строк. А как это сделать уме не приложу(((
--
Если кто знает помогите с этим интерфейсом!
Вот сама задача:
Класс Matrix:
Код:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include "Size.cpp"
 
using namespace std;
 
 
class Matrix {
    Size sz;
    int **values;
 
public:
 
    Matrix(Size s, int value) {
        sz = s;
        init_matrix(value);
    }
    ~Matrix() {
        delete [] values;
    }
 
    void init_matrix(int value = 0) {
        
        try {
            values = new int*[sz.get_row()];
        } catch(bad_alloc xa) {
            exit(1);
        }
 
        for(int i = 0; i < sz.get_row(); i++) {
            try {
            values[i] = new int[sz.get_column()];
            } catch(bad_alloc xa) {
                exit(1);
            }
        }
 
        for(i = 0; i < sz.get_row(); i++) {
            for(int j = 0; j < sz.get_column(); j++) {
                values[i][j] = value;
            }
        }
    }
 
 
    int get_rows() {
        return sz.get_row();
    }
    int get_columns() {
        return sz.get_column();
    }
    int get_value(int i, int j) {
        if(i < 0 || i >= sz.get_row()) return 0;
        if(j < 0 || j >= sz.get_column()) return 0;
        return values[i][j];
    }
    Matrix operator++() {
        for(int i = 0; i < sz.get_row(); i++) {
            for(int j = 0; j < sz.get_column(); j++) {
                values[i][j]++;
            }
        }
        return *this;
    }
 
    Matrix(const Matrix& copy) {
        sz = copy.sz;
        try {
            values = new int*[sz.get_row()];
        } catch(bad_alloc xa) {
            exit(1);
        }
 
        for(int i = 0; i < sz.get_row(); i++) {
            try {
                values[i] = new int[sz.get_column()];
            } catch(bad_alloc xa) {
                exit(1);
            }
 
            for(int j = 0; j < sz.get_column(); j++) {
                values[i][j] = copy. values[i][j] ;
            }
        }
    }
 
    Matrix& operator = (const Matrix& Copy){
        if (&Copy==this) return *this;
 
        for(int i = 0; i < sz.get_row(); i++) {
            delete[] values[i];
        }
 
        delete[] values;
        sz = Copy.sz;
            
        try {
            values = new int*[sz.get_row()];
        } catch(bad_alloc xa) {
            exit(1);
        }
 
        for(i = 0; i < sz.get_row(); i++) {
            try {
                values[i] = new int[sz.get_column()];
            } catch(bad_alloc xa) {
                exit(1);
            }
            for(int j = 0; j < sz.get_column(); j++) {
                values[i][j] = Copy. values[i][j] ;
            }
        }
        return *this;
    }
};
 
void main(int argc, char *argv[]) {
    cout << "Matrix\n";
    Size sz(2, 3);
    Matrix m(sz, 12);
 
    for(int i = 0; i < sz.get_row(); i++) {
        for(int j = 0; j < sz.get_column(); j++) {
            cout << m.get_value(i, j) << "\t";
        }
        cout << endl;
    }
 
    ++m;
 
    cout << "----------------------------------------\n";
    for(i = 0; i < sz.get_row(); i++) {
        for(int j = 0; j < sz.get_column(); j++) {
            cout << m.get_value(i, j) << "\t";
        }
        cout << endl;
    }
 
    system("pause");
}
Класс Size:
Код:
#include <iostream>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
 
class Size {
    int column;
    int row;
    
public:
    Size() {
        column = 1;
        row = 1;
    }
 
    Size(int i, int j) {
        column = i;
        row = j;
    }
 
    void set(int i, int j) {
        column = i;
        row = j;
    }
 
    int get_column() {
        return column;
    }
 
    int get_row() {
        return row;
   }
};

Последний раз редактировалось ACE Valery; 06.05.2012 в 20:01.
snacki вне форума Ответить с цитированием
Старый 05.05.2012, 13:41   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Код:
cout << "чтобы сделать тото нажмите 1\n";
cout << "чтобы сделать другое нажмите 2\n";
...

cin >> response

switch(responce)
{
case 1: делаем тото
case 2: делаем другое чтото
default: cout << "неверный ввод\n";
}
Все это в цикл загнать. могу ошибаться с cin но в целом алгоритм такой.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 05.05.2012, 13:47   #3
snacki
Пользователь
 
Регистрация: 23.06.2010
Сообщений: 22
По умолчанию

Ммммм.
Это получается так:

Цитата:
cout << "Перегрузка матрицы 1\n";
cin >> response
switch(responce)
{
case 1:
++m;
for(i = 0; i < sz.get_row(); i++)
{
for(int j = 0; j < sz.get_column(); j++)
{
cout << m.get_value(i, j) << "\t";
}
cout << endl;
}
}
Я правильно понял?или все таки нет?
snacki вне форума Ответить с цитированием
Старый 05.05.2012, 13:49   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Правильно. Только выделите блоки в отдельные функции чтоб удобнее было вызывать.
И в цикл все заключите. А выход по нажатию допусти 9.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 05.05.2012, 13:51   #5
snacki
Пользователь
 
Регистрация: 23.06.2010
Сообщений: 22
По умолчанию

Это получается в сase .. Мы вписываем то действие которое должно быть?
Тогда понятно!!
snacki вне форума Ответить с цитированием
Старый 05.05.2012, 13:53   #6
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от snacki Посмотреть сообщение
Это получается в сase .. Мы вписываем то действие которое должно быть?
Тогда понятно!!
Правильно. Case это таблица выбора.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 06.05.2012, 15:39   #7
snacki
Пользователь
 
Регистрация: 23.06.2010
Сообщений: 22
По умолчанию

А не могли бы вы это все реализовать, все действия!!
Оплата гарантируется, но не очень велика))
snacki вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Меню codrops (стильное меню), Как сделать чтобы текст не смещался в блоке? AlienNation HTML и CSS 2 28.09.2011 13:17
меню как на сайте p&g (меню ввиде таблицы) ilma55 WordPress и другие CMS 0 19.09.2010 19:09
И сново sendMessage =) Как нажать пункт верхнего меню и меню правой кнопки? TwiX Win Api 9 15.10.2009 01:57
Для доступа к пунктам главного меню клавиши ALT + подчеркнутая буква меню в офис 2007? Окоча Юра Microsoft Office Word 1 24.02.2009 12:29
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е) chandrasecar Мультимедиа в Delphi 7 14.01.2009 09:20