博文

函数--用卡丹公式解一元三次方程(2007-10-31 13:05:00)

摘要:#include <iostream.h>
#include <stdio.h>
#include <math.h> //////////////////函数--用卡丹公式解一元三次方程/////////////////
void fun(double a,double b,double c,double d,
   double *real_y1,double *real_y2,double *real_y3,
   double *imag_y1,double *imag_y2,double *imag_y3)
{
 double p,q,r,u,v,g,h,fai;
 p=(3.0*a*c-b*b)/(3*a*a);
 q=(2.0*pow(b,3.0)-9*a*b*c+27.0*a*a*d)/(27.0*pow(a,3.0));
 r=b/(3.0*a);
 h=pow(q/2.0,2.0)+pow(p/3.0,3.0);
 g=sqrt(h);
 if(h>=0)
 {
  if(-q/2.0+g<0)
  u=-pow(fabs(-q/2.0+g),1.0/3.0);
  else
  u=pow((-q/2.0+g),1.0/3.0);
  if(-q/2.0-g<0)
  v=-pow(fabs(-q/2.0-g),1.0/3.0);
  else
  v=-pow((-q/2.0-g),1.0/3.0);
  if(h==0)
  {
   *real_y1=u+v-r;            *imag_y1=0;
      *real_y2=......

阅读全文(7299) | 评论:1

五子棋(人机对战)(2007-10-23 22:53:00)

摘要:/***************************************************************************************\
          modify at  2006.3.28
\***************************************************************************************/
#include <graphics.h>
#include <stdio.h>
#include <malloc.h>
#include <time.h>
#include <math.h>
#include <stdlib.h> #include <mousea1.h> #define  MAX  15
#define  OFFSET  8      /* 14*14=196<2^8-1=255 偏移8位足够,而优先级最大也是16 */
#define  PAN_X 125      /*棋盘初始位置,左上角坐标(125,75) */
#define  PAN_Y 75 #define  COMPUTER  1    /*计算机棋子 */
#define  PLAYER    2    /*玩家棋子   */
int qp[MAX][MAX];       /*定义棋盘   */
int iswin;        &nb......

阅读全文(2943) | 评论:0

Visual C++ 5.0中的多线程编程技术(2007-10-03 13:53:00)

摘要:Visual C++ 5.0中的多线程编程技术

  一、引言

  Windows系统平台经历了从16位到32位的转变后,系统运行方式和任务管理方式有了很大的变化,在Windows 95和Windows NT中,每个Win32程序在独立的进程空间上运行,32位地址空间使我们从16位段式结构的64K段限制中摆脱出来,逻辑上达到了4G的线性地址空间。这样,我们在设计程序时就不再需要考虑编译的段模式,同时还提高了大程序的运行效率。独立进程空间的另一个更大的优越性是大大提高了系统的稳定性,一个应用程序的异常错误不会影响其它的应用程序,这对于现在的桌面环境尤为重要。

  在Windows的一个进程内,包含一个或多个线程。线程是指进程的一条执行路径,它包含独立的堆栈和CPU寄存器状态,每个线程共享所有的进程资源,包括打开的文件、信号标识及动态分配的内存等等。一个进程内的所有线程使用同一个32位地址空间,而这些线程的执行由系统调度程序控制,调度程序决定哪个线程可执行以及什么时候执行线程。线程有优先级别,优先权较低的线程必须等到优先权较高的线程执行完任务后再执行。在多处理器的机器上,调度程序可将多个线程放到不同的处理器上去运行,这样就可使处理器的任务平衡,也提高了系统的运行效率。

  32位Windows环境下的Win32 API提供了多线程应用程序开发所需要的接口函数,但Win16和Win32对多线程应用并不支持,利用Visual C++ 5.0中提供的标准C库也可以开发多线程应用程序,而相应的MFC4.21类库则封装了多线程编程的类,因而用户在开发时可根据应用程序的需要和特点选择相应的工具。

  如果用户的应用程序需要有多个任务同时进行相应的处理,则使用多线程是较理想的选择。例如,就网络文件服务功能的应用程序而言,若采用单线程编程方法,则需要循环检查网络的连接、磁盘驱动器的状况,并在适当的时候显示这些数据,必须等到一遍查询后才能刷新数据的显示。对使用者来说,延迟可能很长。而在应用多线程的情况下可将这些任务分给多个线程,一个线程负责检查网络,另一个线程管理磁盘驱动器,还有一个线程负责显示数据,三个线程结合起来共同完成文件服务,使用者也可以及时看到网络的变化。多线程应用范围很广,尤其是在目前的桌面平台上,......

阅读全文(3016) | 评论:0

五子棋(人机对下)(2007-10-02 21:22:00)

摘要:/***************************************************************************************\ modify at 2006.3.28 编译器:MYTC \***************************************************************************************/ #include #include #include #include #include #include #include #define MAX 15 #define OFFSET 8 /* 14*14=196>OFFSET; int id; struct LIST *newlist=malloc(sizeof(*newlist)); if(!newlist) return 1; while(tmp) { id=(tmp->id)>>OFFSET; if(idatemp) { temp=&(tmp->next); tmp=tmp->next; } } newlist->id=add; newlist->next=tmp; *temp=newlist; return 0; } /*函数获得指定链中最大优先级的值 */ static int GetMax(struct LIST *List) { if(List) return (List->id>>OFFSET); return 0; } static int GetLast(struct LIST **List) /*函数获得指定链中的链首数据 */ { if(*List) { int ret; struct LIST *temp; ret=((*List)->id& 0xff); /* 取低字节棋盘位置数据 , 0xff与OFFSET位数一致 */ temp=*List; /* 记住需要销毁的结点,使用的结点销毁......

阅读全文(3757) | 评论:0

利用FFT变换检测噪音的程序(2007-09-09 11:31:00)

摘要:%上面是一段利用FFT变换检测噪音的程序,x是随机加噪的 t=0:0.001:1;    %采样频率1000Hz
x=sin(2*pi*100*t)+sin(2*pi*200*t)+rand(size(t));%x长度1000 
subplot(2,1,1)
plot(x(1:50));
axis on;
xlabel('Variable t');       % 加X轴说明
ylabel('Variable x(t)');
y=fft(x,512);   %程序中只是选取前面512个点做FFT,其实点数可以任意选取,一般不小于数据长度,
% 甚至FFT长度可以不选取2的幂次。如果选取2的幂次意味着可以使用碟型展开计算FFT,容易硬件实现。仿真时可不拘泥于2的幂次。 f=1000*(0:256)/512; %采样频率1000Hz,数据窗长度512,频率分辨率1000/512,所以横坐标为:(0:256)×1000/512。 subplot(2,1,2)
plot(f,y(1:257));
axis on;
xlabel('Variable f');       % 加X轴说明
ylabel('Variable A(f)'); ......

阅读全文(3411) | 评论:0

C语言基础(数组空间分配)(2007-08-17 23:00:00)

摘要:/* 运行环境 Dev—C++4.9.9.2,英文原版,官网下的。*/
#include <stdio.h>
#include <stdlib.h> int count,total1,total2,total;
int array1[]={1,1,1,1,1},array2[]={3,3,3,3,3,7}; int main(void)
{
    for(count=0;count<7;count++)
        {
         total1+=array1[count];
         total2+=array2[count];
         }
    printf("%d",total1+total2);
    system("PAUSE");
    return 0;
}
int array1[]={1,1,1,1,1},array2[]={3,3,3,3,3,7};
等价:
int array1[5]={1,1,1,1,1},array2[6]={3,3,3,3,3,7};
但这样定义的两个数组是挨着存放的
当array1第六次被计算的时候用的是array2的第一个元素值,原因在于他们存在data段中,array1在array2前面,他们挨着存放的,也就是 1 1 1 1 1 3
                       &nbs......

阅读全文(3485) | 评论:0

查找指定文件夹下的文件(2007-08-01 11:46:00)

摘要:/* 功能:查找指定文件夹下的文件 2007.8.1 */ #include<iostream>
#include<io.h>
using namespace std; /**********************
_finddata_t结构体:
struct _finddata_t {
 unsigned  attrib ;
 time_t  time_create ;
 time_t  time_access ;
 time_t  time_write ;
 _fsize_t  size ;
 char name [260] ;
}
**********************/ void main()
{
    _finddata_t file;
    long lf;
    if((lf = _findfirst("C:\\WINDOWS\\*.INI",&file))==-1l)//_findfirst返回的是long型;long __cdecl _findfirst(const char *, struct _finddata_t *)
        cout<<"文件没有找到!\n";
    else
    {
        cout<<"\n文件列表:\n";
  do {
            cout<<file.name;
      &n......

阅读全文(5818) | 评论:2

VHDL 语言实现inout类型的使用(2007-06-19 00:31:00)

摘要:-- 三态要有一个控制信号来控制,初始应为高阻。VHDL与Verilog应差不多吧,如下VHDL可参考一下: VHDL: Bidirectional Bus
download from: http://www.fpga.com.cn bidir.vhd (Tri-state bus implementation) LIBRARY ieee;
USE ieee.std_logic_1164.ALL; ENTITY bidir IS
    PORT(
        bidir   : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);
        oe, clk : IN STD_LOGIC;
        inp     : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
        outp    : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));
END bidir; ARCHITECTURE cpld OF bidir IS
SIGNAL  a  : STD_LOGIC_VECTOR (7 DOWNTO 0);  -- DFF that stores
                                     ......

阅读全文(6887) | 评论:0

for generate 语句用法示例(2007-05-31 00:25:00)

摘要:--
-- 对 megafunction wizard 生成的文件lpm_dff1.vhd改装为  dff1.vhd , 增加了 位定义的灵活性 -- ============================================================
-- File Name: dff1.vhd
LIBRARY ieee;
USE ieee.std_logic_1164.all; LIBRARY lpm;
USE lpm.all; ENTITY dff1 IS
 GENERIC (lpm_width  : NATURAL := 8 );
 PORT
 (
  clock  : IN STD_LOGIC ;
  data  : IN STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0);
  q  : OUT STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0)
 );
END dff1;
ARCHITECTURE SYN OF dff1 IS  SIGNAL sub_wire0 : STD_LOGIC_VECTOR (lpm_width-1 DOWNTO 0);    COMPONENT lpm_ff
 GENERIC (
  lpm_fftype  : STRING;
  lpm_type  : STRING;
  lpm_width  : NATURAL
 );
 PORT (
   clock : IN STD_LOGIC ;
   q : OUT STD_LOGIC_VECTOR (......

阅读全文(4664) | 评论:0

FFT 算法(2007-04-03 15:27:00)

摘要:/*****************fft programe*********************/
#include "typedef.h"
#include "math.h" struct compx EE(struct compx b1,struct compx b2)
{
    struct compx b3 ;
    b3.real=b1.real*b2.real-b1.imag*b2.imag ;
    b3.imag=b1.real*b2.imag+b1.imag*b2.real ;
    return(b3);
} void FFT(struct compx*xin,int N)
{
    int f,m,nv2,nm1,i,k,j=1,l ;
    /*int f,m,nv2,nm1,i,k,j=N/2,l;*/
    struct compx v,w,t ;
    nv2=N/2 ;
    f=N ;
    for(m=1;(f=f/2)!=1;m++)
    {
        ;
    }
    nm1=N-1 ;
   
    /*变址运算*/
    for(i=1;i<=nm1;i++)
    {
        if(i<j)
     &nbs......

阅读全文(5230) | 评论:1