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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Матрицы. Вставка и удаление эллементов, Давайте доработаем и вставим в FAQ 
:(
    Опции темы
GIK
Дата 13.12.2006, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

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



Всем доброго времени суток smile 
Решил написать простенький алгоритм работы с матрицей. Вдохновил меня на это дело  пост. Програмка позволяет вводить данные которые заносятся в матрицу, после этого предлогается варианты, всталять или удалять, строку или столбец.
Вобщем, мое предложение, доработь, учесть недостатки и внести код в FAQ, и посылать всех туда у кого возникнут подобные вопросы smile  

Это консольный вариант:
Код

#pragma hdrstop
#include<iostream>
#include<vector>
using namespace std;
#pragma argsused;

class objektFor{
 public:
  int QtyLines;
  int QtyRow;

  vector<int> v1;
  vector<int>:: iterator it;

 void initiMatrix(){
   v1.resize(128);
   it=v1.begin();
   cout << "Vvedite dannie" << endl;
   for(int i=0; i<QtyLines; i++){
    for(int k=0; k<QtyRow; k++){
     cin >>v1[(i*QtyRow)+k];
     }
    }
   cout << "Vasha Matrica imeet vid" << endl;
   for(int i=0; i<QtyLines; i++){
    for(int k=0; k<QtyRow; k++){
     cout << v1[(i*QtyRow)+k] << "_";
     }
     cout << endl;
    }
   }
   void plusRow(int num);
   void minusRow(int num);
   void plusLine(int num);
   void minusLine(int num);
};

   void objektFor :: plusRow(int num) {
   int masivchik[128];   
   cout << "vvedite dannie" << endl;
   for(int i=0; i<QtyLines; i++){
    cin >> masivchik[i];
   }
   it=v1.begin();
   num-=1;
   int iter=-(QtyRow);
   int kundel=-1;
    for(int i=0; i<QtyLines; i++){
    iter=iter+QtyRow;
    kundel++;
    v1.insert(it+(num + iter + kundel), masivchik[i]);  
    it=v1.begin(); 
   }
 QtyRow++;
  cout << "Itog" <<endl;
  for(int i=0; i<QtyLines; i++){
    for(int k=0; k<QtyRow; k++){
     cout << v1[(i*QtyRow)+k] << "_";
     }
     cout << endl;
    }
 }


 void objektFor:: minusRow(int num){
   it=v1.begin();
   num-=1;
   int iter=-(QtyRow);
   int kundel=-1;

    for(int i=0; i<QtyLines; i++){
    iter+=QtyRow; 
    kundel++;
    v1.erase(it+num + iter - kundel);
   }
  QtyRow--;
  cout << "Itog" << endl;
  for(int i=0; i<QtyLines; i++){
    for(int k=0; k<QtyRow; k++){
     cout << v1[(i*QtyRow)+k] << "_";
     }
     cout << endl;
   }
};

 void objektFor:: plusLine(int num){
   int masivchik[128];   
   cout << "vvedite dannie" << endl;
   for(int i=0; i<QtyRow; i++){
    cin >> masivchik[i];  
   }
   it=v1.begin();
   num-=1;

   for(int i=0; i<QtyRow; i++){    
     v1.insert(it+(num*QtyRow)+i, masivchik[i]); 
  it=v1.begin();         
   }

  QtyLines++;
  cout << "Itog" <<endl;
  for(int i=0; i<QtyLines; i++){
    for(int k=0; k<QtyRow; k++){
     cout << v1[(i*QtyRow)+k] << "_";
     }
     cout << endl;
    }


};
 void objektFor :: minusLine(int num){
   it=v1.begin();
   num-=1; //Nuna uchest 4to rabota s indexami...
    v1.erase(it+(num * QtyRow), it+(num * QtyRow)+QtyRow);
   
  QtyLines--;
  cout << "Itog" <<endl;
  for(int i=0; i<QtyLines; i++){
    for(int k=0; k<QtyRow; k++){
     cout << v1[(i*QtyRow)+k] << "_";
     }
     cout << endl;
    }
};

void main(int argc, char* argv[])
{  int vot=0;
   int votDel=0;
   int num;
   objektFor obgVec; 

   cout << "Enter the data please"<<endl;
   cout << "Quantity of lines :";
   cin >> obgVec.QtyLines;
   cout << endl;
   cout << "Quantity of Rows :";
   cin >> obgVec.QtyRow;
   cout << endl;

  obgVec.initiMatrix();


  cout << "Chto budem delat?" << endl;
  cout << "Vvedite 0 dla udalenia" << endl;
  cout << "Vvedite 1 dla dobablenia" << endl;
  cin >> vot;

  cout << "colonca ili stroka?" << endl;
  cout << "vvedite 1 esli stroka :   " << endl;
  cout << "vvedite 0 esli kolonka : " << endl;
  cin >> votDel;

  cout << "vvedite nomer"<< endl;
  cin >> num;

  if(vot && votDel){
  obgVec.plusLine(num);
  }else if(!vot && votDel){
  obgVec.minusLine(num);
  }else if(!vot && !votDel){
  obgVec.minusRow(num);
  }else if(vot && !votDel){
  obgVec.plusRow(num);
  };


 cin >> num; //tr


}


ЗЫ: Логику алгоритма пока не привел, но если надо...... smile 
ЗЫЫЫЫ: Щас роботаю над локальной версией.
 

Это сообщение отредактировал(а) GIK - 13.12.2006, 18:38


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
zabivator
Дата 13.12.2006, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



GIK, сразу отвратило using namespace std; #pragma. Очень хромают имена и форматирование... строчки, вводимые на экран, надо объявлять в виде отдельных константных переменных, еще лучше - объявить их экстернами, и вынести определение в отдельный cppшник. Далее i++ - неоптимально, лучше ++i, старое значение все равно нигде не используется. InitMatrix - изврат какой! Нужно пользоваться конструктором. Далее. Не нужно в initMatrix ожидать  ввода пользователя, нужно сделать параметром конструктора итераторы... а для конструирования с клавиатуры передавать итераторы cin'а...
еще?
забивать 128 в код - опять плохо, вынести как константу - это как минимум. всякие plusrow - тоже ужос, зачем операторы в плюсах? Ну и мешанина транслита и английского.... Бр....
Основательная переделка нужна, да.

Это сообщение отредактировал(а) zabivator - 13.12.2006, 19:13
--------------------
#include <zabivator>int main( int, char * [] ){   while( Zabivator::жив() ) Zabivator::моск()++;   return 0;}
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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