| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 638 人关注过本帖
标题:建模中遇到的问题,求解决!!!
只看楼主 加入收藏
ahsthz123
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2013-4-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
建模中遇到的问题,求解决!!!
#include<stdio.h>
void main(){
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
int a[110][10];
int i,index,j,t;
for(i=0;i<110;i++){
    for(j=0;j<5;j++)
        scanf("%d",&a[i][j]);
    getchar();
}
index=0;
for(i=0;i<110;i++){
    for(j=1;j<5;j++)
    if(a[i][index]>a[i][j])
      index=j;
    a[i][index]=t;
    t=a[i][j];
    a[i][j]=a[i][index];
}
for(i=0;i<110;i++){
    for(j=0;j<5;j++){
        a[i][5]+=a[i][j];
    printf("%d\n",a[i][j]);
    }
}

}
搜索更多相关主题的帖子: index 建模 
2013-04-04 14:48
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:10 
能不能说说是什么问题啊

人生是一场错过 愿你别蹉跎
2013-04-04 17:08
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:0 
index=0;
for(i=0;i<110;i++){
    for(j=1;j<5;j++)
    if(a[i][index]>a[i][j])
      index=j;
    a[i][index]=t;
    t=a[i][j];
    a[i][j]=a[i][index];
}

你是要排序呢 还是仅仅把每一行的最小值移到后面就行了 如果是后面这个要求的话
你这了错了两个地方
1. index=0 行循环里面去 在每一行处理前清零
2. 后面的交换的三句话写错了 自己分析分析看 正确顺序应该怎么写

人生是一场错过 愿你别蹉跎
2013-04-04 17:20
ahsthz123
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2013-4-4
收藏
得分:0 
回复 3楼 fanpengpeng
有一百多组数据,一组5个,要求这5个数据从大到小排列,并且去掉最大和最小值.求其它3个的和
程序改了之后还不对:
#include<stdio.h>

int main() {
    int a[110][10]={0};
    int i, index, j, t;
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
   
    for(i = 0; i < 110; i++) {
        for(j = 0; j < 5; j++) scanf("%d", &a[i][j]);
        getchar();

    }
    index=0;
 for(i=0;i<110;i++){
     for(j=1;j<5;j++)
     if(a[i][index]>a[i][j])
       index=j;
     a[i][index]=t;
     t=a[i][j];
     a[i][j]=a[i][index];
 }
        for(i = 0; i < 110; i++) {
            for(j = 0; j < 5; j++)
        printf("%d  ", a[i][j]);
            printf("\n");

        }
   
    return 0;
}
2013-04-04 21:45
梅可伟梅可伟
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:180
注 册:2013-3-11
收藏
得分:10 
#include<stdio.h>
 void main(){
     freopen("in.txt","r",stdin);
     freopen("out.txt","w",stdout);
 int a[110][10];
 int i,index,j,t;
 for(i=0;i<110;i++){
     for(j=0;j<5;j++)
         scanf("%d",&a[i][j]);
     getchar();
 }
 for(i=0;i<110;i++){
      index=0;//index=0必须移到这里(使第次开始始时从A[I][0]开始)
     for(j=1;j<5;j++)
     {
         if(a[i][index]>a[i][j])   index=j;
     }
     //交换这里也有错,在这里index=j,即是执行自身的交换,不过你的也没达到交换的目的;
     t=a[i][j];
     a[i][j]=a[i][index];
     a[i][index]=t;//这样改能够达到把a[0]和最大的值进行交换
 }
 for(i=0;i<110;i++){
     for(j=0;j<5;j++){
         a[i][5]+=a[i][j];
     printf("%d\n",a[i][j]);
     }
 }
 
}
2013-04-04 22:17
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:0 
你这个就不是排序程序的代码啊 也没有求3个和的代码啊
这段程序跟你说的功能完全对不上路
还有 你修改后的程序 哪儿是改了的啊

人生是一场错过 愿你别蹉跎
2013-04-04 22:21
梅可伟梅可伟
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:180
注 册:2013-3-11
收藏
得分:0 
#include <stdio.h>
#define M 2
#define N 5
void main()
{
    int a[M][N],i,j,k,t,index;
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
            a[i][j]=i+j;
    }
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
            printf("%3d",a[i][j]);
        printf("\n");
    }
    for(i=0;i<M;i++)
    {
        for(j=0;j<N-1;j++)//从这里开始排序
        {
            for(k=j+1;k<N;k++)
            {
                if(a[i][j]<a[i][k]) {t=a[i][j];a[i][j]=a[i][k];a[i][k]=t;}
            }
        }
    }
    for(i=0;i<M;i++)
    {
        for(j=0;j<N;j++)
            printf("%3d",a[i][j]);
        printf("\n");
    }
    for(i=0;i<M;i++)//去掉最大值
    {
        for(j=0;j<N-1;j++)
            a[i][j]=a[i][j+1];
    }
    for(i=0;i<M;i++)//不输出最后一个值(最小值)
    {
        for(j=0;j<N-2;j++)
            printf("%3d",a[i][j]);
        printf("\n");
    }

}
            

2013-04-04 22:36
ahsthz123
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2013-4-4
收藏
得分:0 
回复 6楼 fanpengpeng
你看下我这个程序
#include<stdio.h>

int main() {
    int a[110][10]={0};
    int i, index, j, t,k;
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
   
    for(i = 0; i < 110; i++) {
        for(j = 0; j < 5; j++) scanf("%d", &a[i][j]);
        getchar();

    }

 for(i=0;i<110;i++){
     for(k=0;k<4;k++){
         index=k;
     for(j=k+1;j<5;j++)
     if(a[i][index]>a[i][j])
       index=j;
     t=a[i][index];
     a[i][index]=a[i][j];  
     a[i][j]=t;
 }
 }
        for(i = 0; i < 110; i++) {
            for(j = 0; j < 5; j++)
        printf("%d  ", a[i][j]);
            printf("\n");

        }
   
    return 0;
}
2013-04-04 22:55
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:0 
   for(k=0;k<4;k++){
         index=k;
     for(j=k+1;j<5;j++)
     if(a[i][index]>a[i][j])
       index=j;
     t=a[i][index];
     a[i][index]=a[i][j];  
     a[i][j]=t;
}

这样写就对了 把交换语句要放到for循环下去 最后一个for丢了{}
还有 选择排序的话 要分析每一趟排序 选择的结果是放到头还是放到尾 大小判断与循环变量的递增方式要配合好
改成下面的试试看
程序代码:
for(k=0;k<4;k++){  //每一次把选择的最大值放到左边 即k处
    index=k;
    for(j=k+1;j<5;j++){
        if(a[i][index]<a[i][j])  //如果他比index处的值大 他就变为新的index 保证index是剩下的最大的
            index=j;
        t=a[i][index];  //与k处交换 不是与j处交换 j每次都是4
        a[i][index]=a[i][k];  
        a[i][k]=t;
    }
}

人生是一场错过 愿你别蹉跎
2013-04-04 23:22
快速回复:建模中遇到的问题,求解决!!!
数据加载中...
 
   



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

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