musicbug 发表于 2003-2-10 18:30

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

呵呵,改好了。。。。

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

void main()
{
        int temp=0;
        int n=0,m=0;
        int a,b;
                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)
                        {
                                temp=a;
                                a=a;
                                a=temp;
                        }
                }
        }
       
        for(i=0;i<j-n;i++)
        {
                if(a!=a)
                {
                        b=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)
                  ;
          else
          {
                cout<<i<<"= ";
                cout<<a<<endl;
          }
}
*/

}

Mephis 发表于 2003-2-12 16:54

#include <stdio.h>
void main ()
{
        int a,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<a)
        {t=a;
   a=a;
   a=t;
        }
        }
        }
        printf("die 10 Zahle in aufsteigender Reihefolge\n");
        for (i=0;i<10;i++)
                printf("%d\n",a);
}

Mephis 发表于 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<a)
        {t=a;
   a=a;
   a=t;
        }
        }
        }
}
void main ()
{
        int a,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);
}

musicbug 发表于 2003-2-12 17:02

你的比我想的要简单一些。
再请教一下。
如果可以得话,如何不计重复的数字? 缩短数组?
谢谢

Mephis 发表于 2003-2-12 17:15

#include <stdio.h>
void main ()
{
int a,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==a)
   {
    j+=j;
    goto loop;
   }
if (a<a)
{t=a;
a=a;
a=t;
x++;
}
}
}
printf("die 10 Zahle in aufsteigender Reihefolge\n");
for (i=0;i<x+1;i++)
printf("%d\n",a);
}

Mephis 发表于 2003-2-12 17:16

guck mal, ob es richtig ist, ich weiss selber auch nicht genau...

Mephis 发表于 2003-2-12 17:20

loop: for (j=i+1;j<10;j++)
{if (a==a)
{
j+=j;               xxxxxxxxxxxxxxxxx
goto loop;
}


hier i+=1;oder?

musicbug 发表于 2003-2-12 17:21

有问题。。。。

Mephis 发表于 2003-2-12 17:24

nein, immer noch falsch

musicbug 发表于 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;
        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)
                        {
                                temp=a;
                                a=a;
                                a=temp;
                        }
                }
        }

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

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

}
页: [1] 2 3 4 5
查看完整版本: 很奇怪的错误,我怎么都看不出来,高手指点一把,不胜感激!!!