ايران ويج

نسخه‌ی کامل: برنامه هافمن به زبان c++
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
اگه برنامه کد بندی هافمن را دارید لطف کند برایم ارسال کنید (حیاتیه )
با تشکر Sad ستایش
(۰۶-دى-۱۳۸۵, ۲۰:۵۱:۵۹)setayesh20 نوشته است: [ -> ]سلام
اگه برنامه کد بندی هافمن را دارید لطف کند برایم ارسال کنید (حیاتیه )
با تشکرSad ستایش

اینم کد هافمن. فقط باید قبل از اجرای برنامه یه فایل متنی حاوی رشته مورد نظرتون رو ایجاد کرده و در هنگام درخواست برنامه مسیر اون رو به برنامه بدید.Tongue
کد:
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <stdlib.h>

struct treenode{
int data;
int num;
treenode *next;
treenode *right;
treenode *left;
}*start=NULL,*end=NULL,*p;

struct code{
char bcode[12];
int ch;
}coding[256];

struct tree{
int data;
int num;
}atree[512];

int o=0;

int search(int i);
void insert(int i);
void insertm(struct treenode *l);
void sort();
void create();
void binary(struct treenode *n,char byte[],int i);
void tree(struct treenode *n,int i);
int numnode=0;
int numchar=0;
char filename[25];

void main()
{
clrscr();
FILE *fp1;

cout<<"\n Enter The Location And Name Of The Source File To Compress : ";
cin>>filename;
fp1=fopen(filename,"r+b");
if (fp1==NULL)
{
cout<<"\n Error In Open File...";
getch();
exit(1);
}
int i=getc(fp1);
while (i!=-1)
{
numchar++;
if (search(i)==-1)
insert(i);
i=getc(fp1);
}
fclose(fp1);
sort();
create();
char byte[20]={0};
binary(start,byte,0);
tree(start,1);
getch();
}

//*************************search******************************
int search(int i)
{
struct treenode *h;
h=start;
while(h)
{
if (h->data==i)
{
h->num=h->num+1;
return 0;
}
h=h->next;
}
return -1;
}
//**************************insert******************************
void insert(int i)
{
p=new treenode;
p->data=i;
p->num=1;
p->right=p->left=p->next=NULL;
if (start==NULL)
{
start=p;
end=p;
}
else
{
end->next=p;
end=p;
} }
//******************************Sort*******************
void sort()
{
struct treenode *h1,*h2,*n2,*right,*left;
int d,n;
n2=start;
while(n2)
{ h1=start;
h2=start->next;
while(h2)
{
if (h1->num > h2->num)
{
d=h1->data;
n=h1->num;
right=h1->right;
left=h1->left;
h1->data=h2->data;
h1->num=h2->num;
h1->right=h2->right;
h1->left=h2->left;
h2->data=d;
h2->num=n;
h2->right=right;
h2->left=left;
}
h1=h2;
h2=h2->next;
}
n2=n2->next;
} }
//****************Create*******************************
void create()
{
struct treenode *h;
while (start->next)
{
p=new treenode;
p->left=start;
p->right=start->next;
p->num=start->num+start->next->num;
p->data=-1;
p->next=NULL;
h=start;
start=start->next->next;
h->next->next=NULL;
h->next=NULL;
insertm(p);
sort();
}}
//********************Insertm****************************
void insertm(struct treenode *l)
{
if (start==NULL)
{
start=l;
end=l;
}
else
{
end->next=l;
end=l;
} }
//********************Binary****************************
void binary(struct treenode *n,char byte[],int i)
{
if (n->data==-1)
{
char b1[20]={0},b2[20]={0};
strcpy(b1,byte);
strcpy(b2,byte);
b1[i]='1';
binary(n->right,b1,i+1);
b2[i]='0';
binary(n->left,b2,i+1);
}
else
{
cout<<"Char :"<<(char)n->data<<" Byte : "<<byte<<"\n";
strcpy(coding[o].bcode,byte);
coding[o++].ch=n->data;
}
}
//*********************************************************
void tree(struct treenode *n,int i)
{
atree[i].data=n->data;
atree[i].num=n->num;
numnode=i;
if (n->left!=NULL)
tree(n->left,2*i);
if (n->right!=NULL)
tree(n->right,2*i+1);
}
Ye Donya Mamnooooooooooooooooooooooooooooooooon
HappyHappyHappyHappyHappyHappyHappy
آقایون ازتون خواهش میکنم کمکم کنید،من فردا تحویل پروژه دارم نمیدونم چیکار کنم
کسی هست بتونه پروژه زیرو به هر زبانی که شده واسم بنویسه؟ تورو خدا کمکم کنید

برنامه ای بنویسید که عناصر استک آ با سایز 10 از ورودی دریافت کند سپس با استفاده ار حداقل ساختمان داده اضافی

عناصر استک آ را وارد استک خالی بی کند
به نحوی که ترتیب عناصر در بی همان ترتیب در آ باشد

در دو حالت
الف:
جهت پیاده سازی ساخمان داده های مورد نیاز از آرایه استفاده کنید
ب:
از لیست های پیوندی

اگه کسی تونست واسم میل کنه یا خبرم بده اینم ایمیلم
leila_falah@yahoo.com