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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> классы, матрица с помощью класса 
:(
    Опции темы
Aleksandra24
Дата 18.4.2013, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет классным программистам!!
Помогите мне пожалуйста переделать программу в классы...
Пожалуйста написала программу на массив..не могу переделать ее так чтобы эта программа состояла из отдельных классов..
Мне в программе давался массив нужно найти и удалить 2 минимальных элемента.
Я все нашла, можете помочь мне ее разбить на классы, чтоб был класс для хранения памяти,класс на ввод массива, на вычисления минимальных элементов,класс на удаление минимальных элементов, класс на вывод данных.
Можете пожалуйста помочь и объяснить как правильно написать эту программу...
Ребят помогите пожалуйста буду очень благодарна!!!Спасибо )))  
Код
#include <iostream>
#include <conio.h>
using namespace std;

void FindMin(int*,int);

void FindMinTwo(int*,int);

int main()
{
    int n;
  cout<<"\n Vvedite razmer massiva: ";
  cin >> n;
    if(n<=0){
  cout<<"Error"<<"\n";
  system("pause");
    return n;}
    
    int* array = new int[n];
    
    cout<<"\nVvedite elementi massiva:";
    for(int i = 0 ;i < n; i++){
        cin >> array[i];
         }
        FindMin(array, n);
        FindMinTwo(array, n);

        cout<<"Array after changes:";
        cout<<"\n";
        for(int i = 0; i<n-2;i++)
        cout<<array[i]<<endl;
        cout<<"\n";
  system("pause");
  return 0;
 }
 void FindMin(int* array,int n)
    {
        int imin;
        int minel;
        minel = array[0];
        imin = 0;
        for( int i=0;i<n;i++)
        if (minel>array[i])
        {
        minel=array[i];
        imin = i;
        }
       
        for (int i = imin; i<n-1; i++) array[i]=array[i+1];
        n--;
        }

 void FindMinTwo(int* array,int n)
    {
        int imin;
        int minel;
        minel = array[0];
        imin = 0;
        for( int i=0;i<n;i++)
        if (minel>array[i])
        {minel=array[i];
        imin = i;
        }
    
        for (int i = imin; i<n-1; i++) array[i]=array[i+1];
        n--;
        }


Модератор: не забываем пользоваться кнопочкой "Код"
PM MAIL   Вверх
kolesnle
Дата 21.4.2013, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Упертый сишник
*


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

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



Код

#include "stdafx.h"
#include <iostream>

class overflow{};

template <typename T>
  void qSort(T* A, size_t low, size_t high) 
  {
      int i = low;                
      int j = high;
      T x = A[(low+high)/2];  // x - опорный элемент посредине между low и high
      do {
          while(A[i] < x) ++i;  // поиск элемента для переноса в старшую часть
          while(A[j] > x) --j;  // поиск элемента для переноса в младшую часть
          if(i <= j){           
              // обмен элементов местами:
              T temp = A[i];
              A[i] = A[j];
              A[j] = temp;
              // переход к следующим элементам:
              i++; 
              j--;
          }
      } while(i < j);
      if(low < j) qSort<T>(A, low, j);
      if(i < high) qSort<T>(A, i, high);
  }



template <typename T> 
class Vector
{
public:
    Vector(size_t _size=0)
    {
        this->arry = new T[_size];
        this->size = _size-1;
    }
        Vector(Vecror<T>& cpy)
        {
        delete this->arry;    
        this->arry = new T[cpy.getSize()-1];
        for (int i = 0; i< cpy.getSize(); i++)
            arry[i] = cpy[i];
        this->size = cpy.getSize()-1;    
        }
    T& operator [](size_t n)
    {
        if (n > (this->size))
            throw overflow();
        return this->arry[n];
    }
    size_t getSize()
    {
        return this->size+1;
    }
    void operator =(Vector<T>& cpy)
    {
        delete this->arry;    
        this->arry = new T[cpy.getSize()-1];
        for (int i = 0; i< cpy.getSize(); i++)
            arry[i] = cpy[i];
        this->size = cpy.getSize()-1;    
    }

    T& at(size_t n)
    {
        return arry[n];
    }
    void push_back(T addel)
    {
        T* arrcopy = new T[this->size];
        for (int i = 0; i<this->size; i++)
            arrcopy[i] = this->arry[i];
        delete[] this->arry;
        arry = new T[this->size+1];
        for (int i = 0; i<(this->size); i++)
            this->arry[i] = arrcopy[i];
        delete arrcopy;
        ++size;
    }
    void pop(size_t n)
    {
        std::cerr << this->size;
        T* arrnew = new T[this->size-1]; //first alloc

        
        for (int i = 0; i<(this->size); i++){
            if (i==n) 
                i++;
            arrnew[i] = arry[i];
        }
        delete arry;
        arry = new T[this->size-1]; //second alloc
        for (int i = 0; i<(this->size); i++){
            arry[i] = arrnew[i];
        }
    }
    size_t find (T el)
    {
        size_t pos=0;
        while (arry[pos] != el)
            pos++;
        return pos;
    }
    void pop_back()
    {
        T* arrnew = new T[this->size-1];
        for (int i = 0; i<(this->size-1); i++)
            arrnew[i] = this->arry[i];
        delete[] arry;
        this->arry = new T[this->size]
        for (int i = 0; i<(size-1); i++)
            arry[i] = arrnew[i];
        --i;
    }
    void sort()
    {
        qSort<T>(arry, 0, this->size);
    }
    ~Vector()
    {
        delete[] arry;
    }
private:
    T* arry;
    size_t size;
};


На сколько я понял, тебе надо именно это. Иначе из тебя вырастит явист.  smile 
Цитата(Aleksandra24 @  18.4.2013,  22:26 Найти цитируемый пост)
Я все нашла, можете помочь мне ее разбить на классы, чтоб был класс для хранения памяти,класс на ввод массива, на вычисления минимальных элементов,класс на удаление минимальных элементов, класс на вывод данных.

Не возможно это! Класс на ввод массива - это вектор(я тебе его написал), в нем есть функция сортировки (функция быстрой сортировки объявлена вне класса, но в классе есть обертка над ней, если хочешь перемести ее, как статическую функцию в класс). Так вот вводишь вектор, копируешь, сортируешь копию, минимальные элементы будут 2 с конца ищешь их в исходном и удаляешь их в исходном. РАБОТА ЗАКОНЧЕНА!
PM MAIL   Вверх
kolesnle
Дата 21.4.2013, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Упертый сишник
*


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

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



А вообще STL рулез
Код

#include <iostream>
#include <list>
#include <vector>
#include <locale.h>
#include <iterator>

 int main()
 {
     setlocale(LC_ALL, "rus");
     std::list<int> list;
     size_t n;
     std::cout << "Размер списка: "; 
     std::cin >> n;
     std::cout << "Введите элементы списка:"<<std::endl;
     for (int i=0;i<n; i++){
         int tmp;
         std:: cout << i << ": ";
         std::cin >> tmp;
         list.push_back(tmp);
     }
     --n;
     std::list<int> listcpy = list;
     listcpy.sort();
     std::list<int>::iterator min_it[1];
     min_it[0] = listcpy.end();
     min_it[1] = listcpy.begin();
     std::advance(min_it[1], (n-1) );
     //int min[] = {*min_it[0], *min_it[1]};
     list.remove(*min_it[0]);
     list.remove(*min_it[1]);
     for (auto it = list.begin(); it != list.end(); it++){
         std::cout << " " << *it;
     }
     system("pause");
    return 0;
 }

PM MAIL   Вверх
NoviceF
Дата 30.4.2013, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



случайно наткнулся на эту тему

Код

std::list<int>::iterator min_it[1];
min_it[1] = listcpy.begin();


выход за пределы массива.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


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

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


 




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


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

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