Помогите скомпилить пожалуйста. а то найти нашел-и не компилится
какаято 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
Здравствуйте, 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>