Форум программистов, компьютерный форум CyberForum.ru

Построение бинарного дерева из двумерного массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Построения графика на С http://www.cyberforum.ru/cpp-beginners/thread36316.html
Помогите очень нужно создать прогу yf C построения графика функции.Чтоб вводить любую ф-цию и строился ее график.Типа елементарние sin,cos,квадратична и т.п. Добавлено через 2 часа 49 минут 26 секунд ну врахувать крок, поч. и кон. значения....
C++ Люди помогите с Оборотной матрицей Вот написал , а не пашет. #include<stdio.h> #include<math.h> #include<conio.h> float a,x,e,c,d; int i,j,k,n,h; main() { m2: Printf("\n vvedit n \n"); scanf("\n %d",&n); http://www.cyberforum.ru/cpp-beginners/thread36315.html
Задача на файловые функции C++
Собственно задача вот в чем: Дан файл вещественных чисел с именем Name1. Создать два новых файла с именами Name2 и Name3, первый из которых будет содержатьэлементы исходного файла с четными номерами(0,2,4...), а второй - с нечетными (1,3,5...) Я написал приблизительно код, но где-то в алгоритме похоже ошибка, помогите пожалуйста.. #include <stdio.h> #include <stdlib.h> #include <conio.h>...
Dev C C++
как и где тут использовать "malloc" ??? #include <stdio.h> int main () { int n, a, i; scanf ("%d", &n);
C++ Структура в MVSC++ http://www.cyberforum.ru/cpp-beginners/thread36279.html
прога с помощью структуры . Надо создать программу которая выводит инфу на экран о жителях заданного дома на заданной улице. В проге должны быть имя , фамилия , отчество,( жильца) номер дома, номер квартиры и название улицы. Поиск осуществляется по номеру дома и названию улицы.если данные введены не верно то должно выводить сообщение о ошибке.
C++ Зачем нужен массив указателей на функцию и как его использовать? народ подскажите пожалуйста, зачем нужен массив указателей на функцию и как его использовать. подробнее

Показать сообщение отдельно
Олесенечек)
4 / 4 / 0
Регистрация: 28.05.2009
Сообщений: 14
30.05.2009, 19:45     Построение бинарного дерева из двумерного массива
а сколько это займет??мне бы до вт успеть(((а то отчислят(

#include <iostream>
#include <math.h>
#include "stack.h"
//------------------------------------------------------------------------------
typedef double(*pfun)(double);
struct Func{
char *name,shortname;
pfun fun; };
//------------------------------------------------------------------------------
double fnull(double x){return x;}
//------------------------------------------------------------------------------
const Func FTable[]={{"arcsin",'á',asin},
{"arccos",'â',acos},
{"arctg",'ã',atan},
{"sin",'ä',sin},
{"cos",'æ',cos},
{"tg",'ç',tan},
{"exp",'è',exp},
{"log",'ë',log},
{"abs",'ì',fabs},
{"",'ÿ',fnull}};
const int SizeFTable=sizeof(FTable)/sizeof(FTable[0]);
//------------------------------------------------------------------------------
class Node{
public:
virtual double calc()=0;
virtual void print()=0;
virtual ~Node(){}; };
//------------------------------------------------------------------------------
class NumNode: public Node{
const double num;
public:
NumNode(double NUM):num(NUM){};
double calc(){return num;}
void print(){std::cout<<num;} };
//------------------------------------------------------------------------------
class ParameterNode: public Node{
const char ch;
public:
ParameterNode(char CH):ch(CH){}
void print(){std::cout<<ch;}
double calc(){
std::cout<<ch<<"=";
double x; std::cin>>x; return x;} };
//------------------------------------------------------------------------------
class UnNode: public Node{
protected:
Node *child;
public:
UnNode(Node *CHILD):child(CHILD){}
~UnNode(){delete child;} };
//------------------------------------------------------------------------------
class UnMinusNode: public UnNode{
public:
UnMinusNode(Node *CHILD):UnNode(CHILD){}
double calc(){return -(child->calc());}
void print(){std::cout<<"-("; child->print(); std::cout<<")";}
};

Добавлено через 8 минут 18 секунд
//------------------------------------------------------------------------------
class UnFuncNode: public UnNode{
unsigned char fnum;
public:
UnFuncNode(char s,Node *CHILD):UnNode(CHILD){
int i=0; for(i=0; i<SizeFTable;++i){
fnum=i;
if(FTable[i].shortname==s){break;}
i=(i>=SizeFTable)?(SizeFTable-1):i;}}
double calc(){return (FTable[fnum].fun)(child->calc());}
void print(){std::cout<<FTable[fnum].name<<"("; child->print();
std::cout<<")";}
};
//------------------------------------------------------------------------------
class UnPlusNode: public UnNode{
public:
UnPlusNode(Node *CHILD):UnNode(CHILD){}
double calc(){return child->calc();}
void print(){child->print();}
};
//------------------------------------------------------------------------------
class BinNode: public Node{
protected:
Node *left,*right;
public:
BinNode(Node *LEFT,Node *RIGHT):left(LEFT),right(RIGHT){}
~BinNode(){delete left; delete right;} };
//------------------------------------------------------------------------------
class PlusNode: public BinNode{
public:
PlusNode(Node *LEFT,Node *RIGHT):BinNode(LEFT,RIGHT){}
double calc(){return left->calc()+right->calc();}
void print(){left->print(); std::cout<<"+("; right->print(); std::cout<<")";}
};
//------------------------------------------------------------------------------
class MinusNode: public BinNode{
public:
MinusNode(Node *LEFT,Node *RIGHT):BinNode(LEFT,RIGHT){}
double calc(){return left->calc()-right->calc();}
void print(){left->print(); std::cout<<"-("; right->print(); std::cout<<")";}
};
//------------------------------------------------------------------------------
class MultiplicationNode: public BinNode{
public:
MultiplicationNode(Node *LEFT,Node *RIGHT):BinNode(LEFT,RIGHT){}
double calc(){return left->calc()*right->calc();}
void print(){left->print(); std::cout<<"*("; right->print(); std::cout<<")";}
};




//------------------------------------------------------------------------------
class DivisionNode: public BinNode{
public:
DivisionNode(Node *LEFT,Node *RIGHT):BinNode(LEFT,RIGHT){}
double calc(){return left->calc()/right->calc();}
void print(){left->print(); std::cout<<"/("; right->print(); std::cout<<")";}
};
//------------------------------------------------------------------------------
class PowerNode: public BinNode{
public:
PowerNode(Node *LEFT,Node *RIGHT):BinNode(LEFT,RIGHT){}
double calc(){return pow(left->calc(),right->calc());}
void print(){left->print(); std::cout<<"^("; right->print(); std::cout<<")";}
};
//------------------------------------------------------------------------------
Node* postfixtree(const char *str){
Node *x1,*x2,*y;
int i=0;
stack <Node*> S;
while (str[i]!='\0'){
char ch=str[i];
switch(ch){
case '+': x2=S.pop(); x1=S.pop(); y=new PlusNode(x1,x2); break;
case '-': x2=S.pop(); x1=S.pop(); y=new MinusNode(x1,x2); break;
case '*': x2=S.pop(); x1=S.pop(); y=new MultiplicationNode(x1,x2); break;
case '/': x2=S.pop(); x1=S.pop(); y=new DivisionNode(x1,x2); break;
case '^': x2=S.pop(); x1=S.pop(); y=new PowerNode(x1,x2); break;
default : if((ch>=48)&&(ch<=57)){y=new NumNode(ch-48);}
else if(((ch>='a')&&(ch<='z'))||((ch>='A')&&(ch<='Z'))){y=new ParameterNode(ch);}
else{x1=S.pop(); y=new UnFuncNode(ch,x1);}}
S.push(y); ++i;} return S.pop();
}
//------------------------------------------------------------------------------
int main(int argc, char* argv[]){
Node *p1;
p1=postfixtree("AB+C*D-"); p1->print(); std::cout<<std::endl; double F=p1->calc();
std::cout<<"="<<F<<std::endl;
std::system("pause"); return 0;}

Добавлено через 36 секунд
// stack.h

#ifndef _STACK_
#define _STACK_

template <class T>
class stack{
T* datastore;
int first,maxsize;
public:
stack(unsigned int N=10):first(-1),maxsize(N){datastore=new T [N];}
~stack(){delete []datastore;}
T& top()const{return datastore[first];}
T pop(){return datastore[first--];}
void push(const T &X){
first++; if(first>=maxsize){int newsize=maxsize+1;
T* temp=new T[newsize];
for(int i=0;i<maxsize;++i){temp[i]=datastore[i];}
delete []datastore; datastore=temp;
maxsize=newsize;}
datastore[first]=X;}
};

#endif
 
Текущее время: 19:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru