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

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 2208|回复: 43

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

[复制链接]
发表于 2003-2-10 18: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 16: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 16: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 17:02 | 显示全部楼层
你的比我想的要简单一些。
再请教一下。
如果可以得话,如何不计重复的数字? 缩短数组?
谢谢
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 17: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 17:16 | 显示全部楼层
guck mal, ob es richtig ist, ich weiss selber auch nicht genau...
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 17: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 17:21 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 17:24 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-2-12 17: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+1, 2025-2-7 10:59 , Processed in 0.072890 second(s), 18 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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