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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2012, 19:33   #1
sullen
 
Регистрация: 08.06.2012
Сообщений: 5
Восклицание Незавершенная программа (стеки и массивы)

Добрый вечер!

Помогите пожалуйста завершить программу! Столько времени провозился с кодом и до сих пор не разобрался где и какая ошибка.

Задание было такое: Создать стек записи Спортсмен на основе статического массива типа запись.
Реализовать методы : Добавить элемент, удалить элемент, вершина стека.

Код:
#include <iostream>
#include <string>

using namespace std;
 
template<typename T>
class MyStack
{
  public:
    MyStack();
    void push(T);
    void pop();
    T top();
    int mySize() const;
  private:
    int size; 
    T* stack;                    
};
 
template<typename T>
MyStack<T>::MyStack()
  :size(0)
{       
}                                           
 
template<typename T>
void MyStack<T>::push( T elem )
{ 
  if(size == 0)
  {     
    stack = new T[size];
    stack[size++] = elem;
  }
  else
  { 
   T tempMass[size];  
   
   for( int i = 0; i < size; ++i)
   {
     tempMass[i] = stack[i];  
   }     
     
   delete [] stack;
   stack = new T[++size];
   
   for( int i = 0; i < size; ++i)
   {
     stack[i] = tempMass[i];  
   } 
   
   stack[size-1] = elem;
  }                      
}
 
template<typename T>
void MyStack<T>::pop()
{
  if( size > 0 )
  { 
    --size;    
    T tempMass[size];  
    for( int i = 0; i < size; ++i )
    {
      tempMass[i] = stack[i];
    }
    delete [] stack;
    stack = new T[size];
    
    for( int i = 0; i < size; ++i )
      stack[i] = tempMass[i];
  }
  else 
  cout << "Stek pust." << endl;       
}   
 
template<typename T>
T MyStack<T>::top()
{
  if( size > 0 )                 
  return stack[size-1];    
  else if( size == 0 )
  cout << "Stek pust." << endl;
}                               
 
template<typename T>
int MyStack<T>::mySize() const
{
  return size;  
}

struct sport
{
 string fio;
 string vid;
 string fak;
 string spc;
 int lvl;
};

void word(sport * obj, int n)
{
     for (int i=0; i < n; i++)
     {
        std::cout << std::endl;
        std::cout << "Введите данные Ф.И.О.: ";
        getline(std::cin, obj[i].fio);
        std::cout << "Введите данные о спорте: ";
        getline(std::cin, obj[i].vid);
        std::cout << "Введите данные о факультете: ";
        getline(std::cin, obj[i].fak);
        std::cout << "Введите данные о специальности: ";
        getline(std::cin, obj[i].spc);
        std::cout << "Введите данные о возрасте: ";
        std::cin >> obj[i].lvl;
        std::cout << std::endl;
     } 
}
  
int main ()
{
    system("chcp 1251");
    setlocale(0, "rus");
    
    int i,n = 1;
    sport *p_sport = new sport[n];
    word(p_sport,n);
    
    MyStack.push(p_sport);
    
    MyStack.pop(&p_sport);
    
    delete p_sport;

    system("pause");
    return 0;   
}

Последний раз редактировалось sullen; 14.11.2012 в 19:36.
sullen вне форума Ответить с цитированием
Старый 15.11.2012, 07:23   #2
sullen
 
Регистрация: 08.06.2012
Сообщений: 5
По умолчанию

Помогите пожалуйста.
sullen вне форума Ответить с цитированием
Старый 15.11.2012, 16:06   #3
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Так вы и не написали в чем ошибка. Т.е вы ждете, что кто-то будет разбираться и искать ошибку.
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 15.11.2012, 16:51   #4
sullen
 
Регистрация: 08.06.2012
Сообщений: 5
По умолчанию

Вот:
Код:
128 C:\Users\SulleN\Desktop\stek.cpp missing template arguments before '.' token 
130 C:\Users\SulleN\Desktop\stek.cpp missing template arguments before '.' token
sullen вне форума Ответить с цитированием
Старый 15.11.2012, 17:22   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

У вас методы в классе не статические, их надо вызывать через объект, а не имя класса.
p51x вне форума Ответить с цитированием
Старый 15.11.2012, 18:15   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Это во-первых и при создании объекта желательно указать параметр шаблона, это во-вторых.
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа с++ Двумерные массивы Andruxa-94 Общие вопросы C/C++ 1 26.03.2012 16:51
Программа (массивы) densektor Помощь студентам 3 24.11.2011 17:18
Программа на массивы Trixik Помощь студентам 4 09.03.2010 00:11
Массивы.Программа в Delphi Mary1357 Помощь студентам 4 09.02.2010 21:51
Программа на одномерные массивы Ekatharina Помощь студентам 8 30.06.2009 21:20