萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 2014|回复: 43

很奇怪的错误,我怎么都看不出来,高手指点一把,不胜感激!!!

[复制链接]
发表于 2003-2-10 19:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
呵呵,改好了。。。。

//输入10个数字,冒泡排序。
#include<iostream.h>

void main()
{
        int temp=0;
        int n=0,m=0;
        int a[10],b[10];
                cout<<"bitte geben Sie 10 Zahlen!:"<<endl;
        for(int i=0;i<10;i++)
        {
                cin>>a;
               
        }

        for(int j=0;j<10;j++)
        {
                for(int i=0;i<9-j;i++)
                {
                        if(a>a[i+1])
                        {
                                temp=a;
                                a=a[i+1];
                                a[i+1]=temp;
                        }
                }
        }
       
        for(i=0;i<j-n;i++)
        {
                if(a!=a[i+1])
                {
                        b[m]=a;
                        m++;
                }
        }
        cout<<"sortiert: "<<endl;
        for(i=0;i<m;i++)
        {       
                cout<<i<<": ";
                cout<<b<<endl;
        }

/*
  for(i=0;i<10;i++)
  {
          if(a==a[i+1])
                  ;
          else
          {
                cout<<i<<"= ";
                cout<<a<<endl;
          }
  }
*/

}
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 17:54 | 显示全部楼层
#include <stdio.h>
void main ()
{
        int a[10],i;
        printf("Geben Sie 10 Zahle ein\n");
    for (i=0;i<10;i++)
                scanf("%d",&a);
        int j,t;
    for (i=0;i<10-1;i++)
        {for (j=i+1;j<10;j++)
        {if (a[j]<a)
        {t=a;
     a=a[j];
     a[j]=t;
        }
        }
        }
        printf("die 10 Zahle in aufsteigender Reihefolge\n");
        for (i=0;i<10;i++)
                printf("%d\n",a);
}
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 17:55 | 显示全部楼层

oder

#include <stdio.h>
void sort(int a[],int n)
{
        int i,j,t;
    for (i=0;i<n-1;i++)
        {for (j=i+1;j<n;j++)
        {if (a[j]<a)
        {t=a;
     a=a[j];
     a[j]=t;
        }
        }
        }
}
void main ()
{
        int a[10],i;
        printf("Geben Sie 10 Zahle ein\n");
    for (i=0;i<10;i++)
                scanf("%d",&a);
    sort (a,10);
        printf("die 10 Zahle in aufsteigender Reihefolge\n");
        for (i=0;i<10;i++)
                printf("%d\n",a);
}
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-2-12 18:02 | 显示全部楼层
你的比我想的要简单一些。
再请教一下。
如果可以得话,如何不计重复的数字? 缩短数组?
谢谢
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 18:15 | 显示全部楼层
#include <stdio.h>
void main ()
{
int a[10],i;
printf("Geben Sie 10 Zahle ein\n");
for (i=0;i<10;i++)
scanf("%d",&a);

---------------------------

int j,t;
int x=0;
for (i=0;i<10-1;i++)
{
loop: for (j=i+1;j<10;j++)
{if (a[j]==a)
   {
    j+=j;
    goto loop;
   }
if (a[j]<a)
{t=a;
a=a[j];
a[j]=t;
x++;
}
}
}
printf("die 10 Zahle in aufsteigender Reihefolge\n");
for (i=0;i<x+1;i++)
printf("%d\n",a);
}
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 18:16 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 18:20 | 显示全部楼层
loop: for (j=i+1;j<10;j++)
{if (a[j]==a)
{
j+=j;               xxxxxxxxxxxxxxxxx
goto loop;
}


hier i+=1;  oder?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-2-12 18:21 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 18:24 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-2-12 18:32 | 显示全部楼层
偶的想法是这样的。
数组元素  a1,a2......a9.
如果a1=a2,那么a3的值赋给a2,依次类推,a9赋给a8,然后打印数组a1到a8。

实现的是出现了一个问题,没有办法解决,如果10个数字都相同,那么到最后一部,a1还是等于a2,,只打印1个a1,就容易错了。

请指教。


void main()
{
        int temp=0;
        int n=0;
        int a[10];
        for(int i=0;i<10;i++)
        {
                cin>>a;
        }

        for(int j=0;j<10;j++)
        {
                for(int i=0;i<9-j;i++)
                {
                        if(a>a[i+1])
                        {
                                temp=a;
                                a=a[i+1];
                                a[i+1]=temp;
                        }
                }
        }

        for(j=0;j<10;j++)       
        for(i=0;i<j-n;i++)
        {
                if(a==a[i+1])
                {
                        int m=i;
                        cout<<"J: "<<j<<" i=";
                        cout<<i<<" ";
                        for(i=m;i<8-m;i++)
                        {
                                a[i+1]=a[i+2];
                        }
                        n++;
                        cout<<"J: "<<j<<" i=";
                        cout<<i<<" ";
                        cout<<"n: "<<n<<endl;
                }
        }
        cout<<endl;

//这里没有办法,我只是打印出不重复的数字,而不是改变数组。
  for(i=0;i<10;i++)
  {
          if(a==a[i+1])
                  ;
          else
          {
                cout<<i<<"= ";
                cout<<a<<endl;
          }
  }

}
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网 |网站地图

GMT+2, 2024-6-15 05:18 , Processed in 0.062661 second(s), 18 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表