| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 670 人关注过本帖
标题:萌新求思路
只看楼主 加入收藏
liu281469315
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-11-3
结帖率:0
收藏
已结贴  问题点数:10 回复次数:3 
萌新求思路
现在需要实现判断转轮的方向,正转或反转,通过三个IO口进行识别 1 2 3
正转 三个IO口 分别得到 123 231 312都为正转,321 132 213 为反转。
现在我的思路是 给三个IO口分别 赋值为
int i,sig;
const int abc[6][3]={{1,2,3},{2,3,1},{3,1,2},{3,2,1},{1,3,2},{2,1,3}};
if(Pa5 == 0)sig = 1;
if(pa6 == 0)sig = 2;
if(pa7 == 0)sig = 3;
if(pa7==0||pa6==0||pa5==0){
  for(i = 0;i < 4;i++){
    if(abc[0][i] != sig)return 0;
    }
    return 1;
.......
}

请各位大大看看有没有更好的思路还是算法,小弟拜谢
搜索更多相关主题的帖子: return 
2016-11-03 20:31
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
自己胡乱编了个,供参考
#include<stdio.h>
main()
{
    int i,IO;//IO就是三个IO口依次的数字
    int a[3]={123,231,312};//只判断正转就可以了
    scanf("%d",&IO);
    for(i=0;i<3;i++)
    {
       if(a[i]==IO)
        break;
    }
    if(i==3)
    printf("反转\n");
    else
    printf("正转\n");
  }  

[此贴子已经被作者于2016-11-3 21:27编辑过]

2016-11-03 21:23
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
#include<stdio.h>
#include<time.h>
short i,idx;
int Judge(short io[3])
{
    if(io[1]-io[0]==1||io[1]-io[0]==-2)
        return 0;//正转
    else
        return 1;//反转
}
int main()
{
    short io[3];
    io[2]=io[1]=io[0]=-1;
    printf("按任意键为三个IO口分配随机值。\n");
    getch();
    srand(time(0));
    for(i=0;i<3;i++)
    {
        do
            idx=((short)rand())%3;
        while(io[idx]!=-1);
        io[idx]=i+1;
    }
    for(i=0;i<3;i++)
        printf("第%d个IO口的值是%d\n",i+1,io[i]);
    if(Judge(io)) printf("反转\n");else printf("正转\n");
    return 0;
}
2016-11-03 21:52
liu281469315
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-11-3
收藏
得分:0 
回复 2楼 ehszt
int i,IO;//IO就是三个IO口依次的数字
    int a[3]={123,231,312};//只判断正转就可以了
    scanf("%d",&IO);
    for(i=0;i<3;i++)
    {
       if(a[i]==IO)
        break;
    }
    if(i==3)
    printf("反转\n");
    else
    printf("正转\n");
  }
//////////////////////////////////////////////////////////
第六行应该为  if(a[i]!=IO)break;    ???
2016-11-04 08:27
快速回复:萌新求思路
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051616 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved