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

Ваш аккаунт

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

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

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

Классы С++ (массив с проверкой на пустоту)

71K
26 мая 2011 года
dj_lexa
1 / / 26.05.2011
добрый день! Прошу помощи. ТребуетсЯ создать массив, с определенным количеством элементов. Слева в массив входят элементы, справа выходят. Реализовать проверку на пустоту.

Элементы вводятся с клавиатуры. При попытке извлечения пустого элемента, вывести сообщение об ошибке, но продолжить выполнение программы.

Я знаю что элементы можно добавлять и извлекать. Так же знаю что нужно количество элементов.

Помогите реализовать.
316
26 мая 2011 года
Alm3n
889 / / 29.05.2009
Цитата:
Слева в массив входят элементы, справа выходят.


а где у массивов лево и параво?

Цитата:
Помогите реализовать.


что уже есть? с какими трудностями столкнулся?

316
27 мая 2011 года
Alm3n
889 / / 29.05.2009
Код:
class array
{
    char arr[100];
    int max, current;
    int is_empty();
    public:
    array(){max=100; current=0;}
    array(int size);
    ~array(){};
    int add(char sym);
    char get();
};

array::array(int size)
{
    if (size>100 || size<=0) max=100;
    else max=size;
    current=0;
}

int array::is_empty()
{
    if (current==0) return 1;
    else return 0;
}
int array::add(char sym)
{
    if (current==max)
    {
        cout<<"overflow"<<endl;
        return 1;
    }
    else
    {
        arr[current]=sym;
        current++;
        return 0;
    }
}

char array::get()
{
    if (is_empty())
    {
        cout<<"nothin to get"<<endl;
        return 1;
    }
    else
    {
        current--;
        return arr[current];
    }
}
277
27 мая 2011 года
arrjj
1.7K / / 26.01.2011
Массив типа "очередь" (FIFO)
Код:
#include <iostream>
using namespace std;

template <class T> class myqueue
{
private:
    struct record
    {
        record(T& element): val(element){next=NULL;};
        record(){next=NULL;};
        T val;
        record * next;
    };
    record * first;
    record * last;
public:
    myqueue()
    {
        first=NULL;
        last=NULL;
    };
    bool isEmpty()//проверка на пустоту
    {
        return !first;
    };
    void push(T element)//добавление в конец списка
    {
        record * newelement=new record(element);
        if(!last)
        {
            first=newelement;
            last=newelement;
        }
        else
        {
            last->next=newelement;
            last=newelement;
        }
    };
    T pop()//выборка из начала списка
    {
        T ret=T();
        if(first)
        {
            ret=first->val;
            record* newfirst=first->next;
            delete first;
            first=newfirst;
        }
        return ret;
    };
};
   
int main()
{
    myqueue<int> a;
    int b=5;
    a.push(b);
    a.push(24);
    a.push(36);
    cout<<a.pop()<<endl;//5
    cout<<a.pop()<<endl;//24
    cout<<a.pop()<<endl;//36
    cout<<a.pop()<<endl;//0 (елементы закончились, выводим новый елемент с конструктором по умолчанию)
    cout<<a.isEmpty()<<endl;//1 (1-пустой, 0-непустой)
    myqueue<char> c;
    char d='A';
    c.push(d);
    c.push('B');
    c.push('C');
    cout<<c.pop()<<endl;//A
    cout<<c.pop()<<endl;//B
    cout<<c.pop()<<endl;//C
    cout<<c.pop()<<endl;// (елементы закончились, выводим новый елемент с конструктором по умолчанию)
    cout<<c.isEmpty()<<endl;//1 (1-пустой, 0-непустой)
    return 0;
}
316
27 мая 2011 года
Alm3n
889 / / 29.05.2009
Цитата: arrjj
Массив типа "очередь" (FIFO)


а все на указателях построил. может, тогда очередь в массиве?

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