Модераторы: PILOT
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Menu C++, Пользовательский интерфейс 
:(
    Опции темы
Вася1
Дата 5.5.2012, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.5.2012

Репутация: нет
Всего: нет



Все доброго дня!!
Перейду стразу к делу: Есть рабочая программа с 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;
}
}; 

PM MAIL   Вверх
mes
Дата 5.5.2012, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: нет
Всего: 250



Вася1, лови под напильник :
Код

#include <iostream>

std::string menu_content[] = 
{ 
   "1. do some 1",
   "2. do some 2",
   "0. exit"
};
const size_t menu_content_size = sizeof(menu_content) / sizeof(*menu_content);

void show_menu () {

   std::cout << "menu:" << std::endl;

   for (size_t i =0; i < menu_content_size; ++ i)
   {
      std::cout << "  " << menu_content[i] << std::endl;
   }

   std::cout << std::endl;   
}


void action_1 ()
{
   std::cout << "*do some 1*" << std::endl;
}

void action_2 ()
{
   std::cout << "*do some 2*" << std::endl;
}


typedef void(*action)();

action action_list[] = 
{
   action_1,  // id = 0
   action_2   // id = 1 
};
const size_t action_list_size = sizeof(action_list) / sizeof(*action_list);

bool handle_command ()
{
   size_t command;    
   
   std::cin >> command;  
    
   if (command > 0 && command <= action_list_size ) 
   {
      size_t id = command -1;

      action_list[id]();
  
      return true;
   }
   
   return false;
  
}

int main ()
{
   do show_menu (); while ( handle_command () );
}


   


Это сообщение отредактировал(а) mes - 5.5.2012, 14:01


--------------------
PM MAIL WWW   Вверх
Вася1
Дата 5.5.2012, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.5.2012

Репутация: нет
Всего: нет



А можно с коментариями, а то я чето не пойму что тут(((
PM MAIL   Вверх
mes
Дата 5.5.2012, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: нет
Всего: 250



Цитата(Вася1 @  5.5.2012,  12:52 Найти цитируемый пост)
А можно с коментариями, а то я чето не пойму что тут((( 


а что не понятно ? show_menu - показывает меню,  handle_command () - обрабатывает команды пользователя..
но разве из названия не видно ?!  если что конкретное не понятно - задавайте вопрос..


--------------------
PM MAIL WWW   Вверх
Вася1
Дата 5.5.2012, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.5.2012

Репутация: нет
Всего: нет



Дело в том что я в 1-е работаю пользовательским интерфесом, и мне надо в Matrix.cpp дописать этот интерфейс
---
То что ты скинул уже можно српазу вписать Matrix.cpp и запускать или дописывать надо?
PM MAIL   Вверх
mes
Дата 5.5.2012, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: нет
Всего: 250



Цитата(Вася1 @  5.5.2012,  13:07 Найти цитируемый пост)
То что ты скинул уже можно српазу вписать Matrix.cpp и запускать или дописывать надо? 


Цитата(mes @  5.5.2012,  12:38 Найти цитируемый пост)
 лови под напильник :

 smile 


--------------------
PM MAIL WWW   Вверх
Вася1
Дата 6.5.2012, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.5.2012

Репутация: нет
Всего: нет



А не могли бы вы это все реализовать, все действия!!
Оплата гарантируется, но не очень велика)) 
PM MAIL   Вверх
mes
Дата 6.5.2012, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: нет
Всего: 250



Вася1, тогда Вам в Центр помощи.. этот раздел для тех, кто сам пытается разобраться smile


Это сообщение отредактировал(а) mes - 6.5.2012, 15:32


--------------------
PM MAIL WWW   Вверх
borisbn
Дата 6.5.2012, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



Вася1, если получится купить услуги mes - обязательно отпишись.
Цитата(Вася1 @  6.5.2012,  14:45 Найти цитируемый пост)
Оплата гарантируется




--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
mes
Дата 6.5.2012, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: нет
Всего: 250



Цитата(borisbn @  6.5.2012,  16:42 Найти цитируемый пост)
если получится купить услуги mes - обязательно отпишись.

ммм... а с чего такой интерес к моей скромной персоне ?!  smile 



--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Объявления о найме специалистов"
BearBeer
  • Придерживайтесь правил форума.

  • Если вы предлагаете НЕ удалённую работу, то

    название города и фирмы обязательно указывать уже в названии темы(!)

  • Одна вакансия - одна тема.

    Вам будет удобней следить за ответами, ищущим работу - выбирать.


  • В случае, если у нас возникнут обоснованные подозрения

    о неблагонадежности Вашего электронного адреса, ваш аккаунт будет удалён, а доступ к форуму запрещён!


  • Хотите быстрее найти специалиста? Разместите тогда ваше объявление вверху всех страниц сайта! Тогда его будут ежедневно видеть более 4000 программистов! Обратите внимание на верхний левый угол сайта - там вы найдете дополнительные инструкции при клике на линк.

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


Полный спискок правил. С уважением, BearBeer.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Объявления о найме специалистов | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.