打印

郁闷还是没有解决帮帮忙啊!!!!!

[复制链接]
1992|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
真白菜|  楼主 | 2008-8-20 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*****************************************************************************************/
//功能    更改 数组[57]-[64]各个元素数值,数组[57]-[64]每个元素取值范围是1-23。
//且8个元素值不能重复。
// menu_data_Value_tempkey//从主函数传递过来的值,然后在 与[57]-[64]各个元素数值比较    。
// break_Value返回处理好的值
/******************************************************************************************/
//第一次比较 从数组[57]-[64] 比较
/******************************************************************************************/
unsigned int taxis(unsigned int menu_data_Value_tempkey)
{
unsigned int temp8=0;      //8次循环变量
unsigned int temp2_8=0;    //8次循环变量
unsigned int temp3_8=0;    //8次循环变量
unsigned int temp2_Flag=0; //第二次比较标志位
unsigned int temp3_Flag=0; //第三次比较标志位
unsigned int *C_P02;       //数组指针
unsigned int differ_x;       //数组临时变量
unsigned int break_Value;  //返回的变量

if (menu_data_Value_tempkey!=0)
{
C_P02=&menu_data[57];      //取地址
differ_x=*C_P02;           //从地址中取出要比较的数据
while (temp8<8)               //循环判断是否有相同的数据
{
    differ_x=*C_P02;
    if (menu_data_Value_tempkey==differ_x)//当设置参数和数组某位相同时
    {
        menu_data_Value_tempkey++;          //参数值++
        if (menu_data_Value_tempkey>23)      //当参数超过23时
        {
             menu_data_Value_tempkey=23;   //强制为23 等待进入第三次比较时处理
            temp3_Flag=1;         //第三次比较标志位开
        }
        else
        {
             temp2_Flag=1;         //第二次比较标志位开
        }
        
    }
    temp8++;
    C_P02++;                 //数组地址偏移
}

/***********************************************/
//第二次比较   重新从数组[57]-[64] 比较
/***********************************************/
if (temp2_Flag==1)
{
    temp2_Flag=0;         //第二次比较标志位关
    C_P02=&menu_data[57];//取地址
    differ_x=*C_P02;     //从地址中取出要比较的数据
    while (temp2_8<8)    //循环判断是否有相同的数据
    {
        if (menu_data_Value_tempkey==differ_x)//当设置的元素值和数组某位相同时
        {
            menu_data_Value_tempkey++;          //元素值++
            if (menu_data_Value_tempkey>23)   //元素值超过23时
            {
                menu_data_Value_tempkey=23;      //强制为23 
                temp3_Flag=1;                  //第三次比较标志位开
            }
        }
        temp2_8++;
        C_P02++;       //数组地址++
    }
}

/*************************************************/
//第三次比较 当参数超过23时从数组[64]-[57] 反向比较
/*************************************************/
if (temp3_Flag==1)         
{
    temp3_Flag=0;             //第三次比较标志位关
    C_P02=&menu_data[64];    //取地址
    differ_x=*C_P02;         //从地址中取出要比较的数据
    while (temp3_8<8)         //循环判断是否有相同的数据
    {
        differ_x=*C_P02;
        if (menu_data_Value_tempkey==differ_x)//当设置参数值和数组某位相同时
        {
            menu_data_Value_tempkey--;        // 元素值减一
        }
        temp3_8++;
        C_P02--;    //数组地址偏移
    }
}

/***********************************************/
/***********************************************/
temp3_8=0;
temp2_8=0;
temp8=0;
break_Value=menu_data_Value_tempkey;
return break_Value;//返回处理好的值
}
return 0;
}

/******************************************************************************************/

相关帖子

沙发
真白菜|  楼主 | 2008-8-20 10:48 | 只看该作者

使用特权

评论回复
板凳
xwj| | 2008-8-20 10:48 | 只看该作者

按排列逐个比较即可

一共要比较45次

使用特权

评论回复
地板
真白菜|  楼主 | 2008-8-20 10:49 | 只看该作者

不知道怎么排除跟自己比较1

使用特权

评论回复
5
xwj| | 2008-8-20 11:10 | 只看该作者

你的程序是什么意思?跟你的描叙不对应。

使用特权

评论回复
6
真白菜|  楼主 | 2008-8-20 16:06 | 只看该作者

8

我要存8个参数到十个RAM空间里。。。。。
8个参数的的取值范围是1-23。。。。。。。。。
  要求在8个RAM空间里不能有重复的值。。。。。

请教要用数据结构中那种算法

使用特权

评论回复
7
真白菜|  楼主 | 2008-8-20 16:06 | 只看该作者

ze怎么要45次啊

使用特权

评论回复
8
mohanwei| | 2008-8-20 16:09 | 只看该作者

排序。还能有什么……

使用特权

评论回复
9
真白菜|  楼主 | 2008-8-20 16:09 | 只看该作者
zz

使用特权

评论回复
10
真白菜|  楼主 | 2008-8-21 15:36 | 只看该作者

郁闷还是没有解决帮帮忙啊!!!!!

使用特权

评论回复
11
icmap| | 2008-8-21 21:53 | 只看该作者

楼主对要求的描述不详

看了你的程序后,发现你对要求的描述与程序不符合。我不想为一个要求不明确的问题耗费时间。

使用特权

评论回复
12
太阳之母| | 2008-8-21 22:27 | 只看该作者

嘿嘿

确确实实真白菜!
问题描述与代码不一回事。请问是不是这样:

A-----
1、新的数据与已有的数据(可能已经够8个了?也可能还不够8个?甚至1个也没有?)做比较;
2、根据比较的结果丢弃(超出1~23范围或与已有数据相同)或保存数据(在指定范围内且不与已有的数据相同);
3、如果满足保存条件,数据是否需要排序?

或者
B-----
是从8个数据中找出重复的数据,然后删除它s?

或者
C-----
其它情况

请LZ萝卜一下吧!

使用特权

评论回复
13
真白菜|  楼主 | 2008-8-22 11:49 | 只看该作者

主循环里的

                case 7:                        //up    向下键按下
                              /*******************************************************************/
  如果是[57]--[64]//开启排他性检查        if (menu_data_Value>=57)//判断是否调用
>>>>>------------------------->>    {
                        if (menu_data_Value<=64)//判断是否调用
                        {
                            P02XX_Flag=1;//开启排他性检查
                        }
                    }
                              /******************************************************/
                    if (menu_data_Value_temp<menu_data_max[menu_Value])//约束参数范围的值
                    {
                    menu_data_Value_temp=*menu_data_p;//取参数
                    menu_data_Value_temp++;              //把取到的参数加1
                              /*******************************************************/
                    if (P02XX_Flag==1)
    看这里//进行排他性检查            {
>>>>>------------------------->>        menu_data_Value_temp=taxis(menu_data_Value_temp);//进行排他性检查                
                    P02XX_Flag=0;  //关闭排他性检查
                    }
                              /*****************************************************/
                    *menu_data_p=menu_data_Value_temp;//回送到RAM存储区域
                    }
                    else
                    {
                     menu_data_Value_temp=menu_data_max[menu_data_max_temp];
                    }
                    Update_Flag=2;
                    break;
                             /*******************************************************/

使用特权

评论回复
14
真白菜|  楼主 | 2008-8-22 12:02 | 只看该作者

就是判断最大值的的时候不好解决

假如
[57]--[64]初始值
             |
             /
2  3  4  5  6  21  22  23 ----->> 初始值
当按下UP 13  次
改变 [57](2)为(20)    当[57]的值增加  到20的时候在加的话就会变成24 经过强制赋值为23 后进入第三次比较 则23--  减 到20 

接着在按UP 则会变为19

问题是怎么 解决 减一次就结束

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

81

帖子

0

粉丝