| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 670 人关注过本帖
标题:寻找鞍点程序出错
只看楼主 加入收藏
a874695162
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2014-7-21
结帖率:100%
收藏
已结贴  问题点数:8 回复次数:5 
寻找鞍点程序出错
程序代码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
const int n=3;
int a[n][n],i,k,g;
cout<<"请输入数据:"<<endl;
  for(i=0;i<n;i++)
      for(k=0;k<n;k++)
          {cout<<"a["<<i<<"]["<<k<<"]=";
           cin>>a[i][k];
          }

 cout<<"您输入的数组为:"<<endl;

 for(i=0;i<n;i++)
      {for(k=0;k<n;k++)
      cout<<setw(5)<<a[i][k];
      cout<<endl;}

 bool t=true;
   for(i=0;i<n;i++)
       for(k=0;k<n;k++)
          { for(g=0;g<n;g++)
               if(a[i][k]<a[i][g])t=false;//第i行最大
            for(g=0;g<n;g++)
               if(a[i][k]>a[g][k])t=false;//第k列最小
            if(t==true)cout<<"该数组的鞍点为a["<<i<<"]["<<k<<"]("<<a[i][k]<<")";
           }
       if(t==false)cout<<"该数组没有鞍点!"<<endl;}
       return 0;
}

输入预先设计好的数组50 42 66
                    49 97 106
                    47 32 28
应该输出“该数组的鞍点为a[2][0](47)"
可是却输出“该数组没有鞍点”
想了半天,不知道哪里出错,求解!
搜索更多相关主题的帖子: color 
2014-08-23 20:36
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:3 
太麻了..

我说  你只有  t =false  没有 t = true ?
我看你for 语句里面都执行 n 次 t = false 了.

你的 t 已经永久为 false  不可能 有true出现了

hl928452957@gmail点com

2014-08-24 08:24
a874695162
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2014-7-21
收藏
得分:0 
回复 2 楼 stop1204
t的初值是true啊!
我的思路是对a中的元素逐一考察,只要某一元素在该行不是最大或在该列不是最小,就将它排除,剩下的就是鞍点

[ 本帖最后由 a874695162 于 2014-8-24 15:15 编辑 ]

加油,再加油!编程,再编程!
2014-08-24 15:09
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
没有修改你的算法,只是改正你的逻辑

程序代码:
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    const size_t m=3, n=3;
    int a[m][n] = { {  50,  42,  66 }
                  , {  49,  97, 106 }
                  , {  47,  32,  28 } };

    bool bfound = false;
    for( size_t r=0; r!=m; ++r )
    {
        for( size_t c=0; c!=n; ++c )
        {
            bool t = true;
            for( size_t i=0; t && i!=n; ++i )
                if( a[r][c] < a[r][i] )
                    t = false;
            for( size_t i=0; t && i!=m; ++i )
                if( a[r][c] > a[i][c] )
                    t = false;
            if( t )
            {
                cout << "saddle point: a[" << r << "][" << c << "](" << a[r][c] << ")\n";
                bfound = true;
            }
        }
    }
    if( !bfound )
        cout << "saddle point have not been found.\n";

    return 0;
}

2014-08-25 08:39
a874695162
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2014-7-21
收藏
得分:0 
回复 4 楼 rjsp
多谢指点!

加油,再加油!编程,再编程!
2014-08-25 22:18
a874695162
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2014-7-21
收藏
得分:0 
回复 4 楼 rjsp
多谢指点!

加油,再加油!编程,再编程!
2014-08-25 22:18
快速回复:寻找鞍点程序出错
数据加载中...
 
   



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

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