помогите скомпилить прогу под MSVS2008
От: AntiMozg  
Дата: 05.05.08 19:49
Оценка:
Помогите скомпилить пожалуйста. а то найти нашел-и не компилится
какаято 1 ошибка
код должен быть валидный по сути 100%
Пытался скомпилировать под MSVS2008TE
#include"stack.cpp"
#include<fstream.h>
#include<conio.h>

int insertVagonsFromKeyboard(CStack<char>& in) {
    char ch;
    do {
        ch=getche();
        if (!in.push(ch)) return 0;
    } while (ch=='1' || ch=='2');
    if (in.empty()) return 0;
    ch = in.pop();
    return 1;
}

int insertVagonsFromDisk(CStack<char>& in,char *path) {
    fstream f;char ch;
    f.open(path,ios::in);
    if (f) {
        while (!f.eof()) {
            f.get(ch);
            if (ch=='1' || ch =='2') in.push(ch);
        }
        f.close();
        return 1;
    }
    return 0;
}

void menu() {
    clrscr();
    cout << "1. Читать с диска\n";
    cout << "2. Читать с клавиатуры\n";
}

char choice() {
    char ch;
    while (ch!='1' && ch!='2' && ch!=0x1b) {
        ch=getch();
    };
    return ch;
}

void TSort(CStack<char>& in,CStack<char>& s1,CStack<char>& s2) {
    while (!in.empty()) {
        if (in.pop()=='1') s1.push('1');
        else s2.push('2');
    }
}

void out(CStack<char>& s1,CStack<char>& s2) {
    char ch;
    cout << endl;
    while (!s1.empty()) {
        ch=s1.pop();
        cout << ch;
    }
  cout << endl;
    while (!s2.empty()) {
        ch=s2.pop();
        cout << ch;
    }
}

int main() {
    CStack<char> s1,s2,in;
    while (1) {
        menu();
        switch (choice()) {
            case '1'  : if (insertVagonsFromDisk(in,"data.dat"))
                                    TSort(in,s1,s2);
                                    out(s1,s2);
                                    getch();
            break;
            case '2'  : if (insertVagonsFromKeyboard(in))
                                    TSort(in,s1,s2);
                                    out(s1,s2);
                                    getch();
            break;
            case 0x1b : return 0;
        }
    }
}


/*
     КЛАСС CStack
   стандартные процедуры работы со стеком 
*/

#ifndef __CStack_CPP__

#define __CStack_CPP__
#define boolean char
#define true 1
#define false 0

template <class stack_type>
class CStack {
         struct stack_element {
             stack_type info;
       stack_element *next;
         } *stack;
     public :
         CStack();
         boolean push(stack_type);
         stack_type pop();
         stack_type stacktop();
         boolean empty();
         ~CStack();
};

/* в начальном состоянии стек пуст */
template <class stack_type>
CStack<stack_type>::CStack() {
    stack=0;
}

/* метод добавления в стек */
template <class stack_type>
boolean CStack<stack_type>::push(stack_type s) {
    stack_element *first = new stack_element;
    if (!first) return false;
    first->info = s;
    first->next = stack;
    stack = first;
    return true;
}

/* метод извлечения из стека */
template <class stack_type>
stack_type CStack<stack_type>::pop() {
    if (stack!=0) {
        stack_element *first = stack -> next;
        stack_type ret = stack -> info;
        delete stack;
        stack = first;
        return ret;
    }
    return 0;
}

/* метод проверки пустоты стека */
template <class stack_type>
boolean CStack<stack_type>::empty() {
    return stack==0 ? true : false;
}

/* метод получения вершины стека без извлечения*/
template <class stack_type>
stack_type CStack<stack_type>::stacktop() {
    return stack==0 ? 0 : stack->info;
}

/* деструктор стека */
template <class stack_type>
CStack<stack_type>::~CStack() {
    stack_element *curr = stack;
    while (stack!=0) {
        stack = stack -> next;
        delete curr;
        curr = stack;
    }
}

#undef boolean
#undef true
#undef false
#endif
Re: помогите скомпилить прогу под MSVS2008
От: Bell Россия  
Дата: 05.05.08 19:56
Оценка: +1
Здравствуйте, AntiMozg, Вы писали:

AM>Помогите скомпилить пожалуйста. а то найти нашел-и не компилится

AM>какаято 1 ошибка
Обычно бывает полезно привести диагностику компилятора.

AM>код должен быть валидный по сути 100%

Валидный на 100% код, как правило, компилится без ошибок.

Начни вот с этого:

AM>
AM>#include<fstream>//без .h

...

AM>int insertVagonsFromDisk(CStack<char>& in,char *path) {
AM>    std::fstream f;char ch;

...

AM>void menu() {
AM>    clrscr();
AM>    std::cout << "1. Читать с диска\n";
AM>    std::cout << "2. Читать с клавиатуры\n";
AM>}
AM>
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.