找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 2437|回复: 43

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

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

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

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

×
呵呵,改好了。。。。

//输入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.
发表于 2003-2-12 18:38 | 显示全部楼层

Cpp1.exe - 9 error(s), 3 warning(s)

--------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
d:\meine eigene dateien\temp\1\cpp1.cpp(8) : error C2065: 'cin' : undeclared identifier
d:\meine eigene dateien\temp\1\cpp1.cpp(8) : warning C4552: '>>' : operator has no effect; expected operator with side-effect
d:\meine eigene dateien\temp\1\cpp1.cpp(30) : error C2065: 'cout' : undeclared identifier
d:\meine eigene dateien\temp\1\cpp1.cpp(30) : error C2297: '<<' : illegal, right operand has type 'char [4]'
d:\meine eigene dateien\temp\1\cpp1.cpp(31) : error C2297: '<<' : illegal, right operand has type 'char [2]'
d:\meine eigene dateien\temp\1\cpp1.cpp(37) : error C2297: '<<' : illegal, right operand has type 'char [4]'
d:\meine eigene dateien\temp\1\cpp1.cpp(38) : error C2297: '<<' : illegal, right operand has type 'char [2]'
d:\meine eigene dateien\temp\1\cpp1.cpp(39) : error C2297: '<<' : illegal, right operand has type 'char [4]'
d:\meine eigene dateien\temp\1\cpp1.cpp(39) : error C2065: 'endl' : undeclared identifier
d:\meine eigene dateien\temp\1\cpp1.cpp(42) : warning C4552: '<<' : operator has no effect; expected operator with side-effect
d:\meine eigene dateien\temp\1\cpp1.cpp(51) : error C2297: '<<' : illegal, right operand has type 'char [3]'
d:\meine eigene dateien\temp\1\cpp1.cpp(52) : warning C4552: '<<' : operator has no effect; expected operator with side-effect
Error executing cl.exe.

Cpp1.exe - 9 error(s), 3 warning(s)
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 18:39 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-2-12 18:39 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 18:47 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 18:57 | 显示全部楼层
不过用C++我解决了,通过试验成功

#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 b[10];
b[0]=0;
int x=0;

for (j=1;j<10;j++)
{
if (a[j]<a[0])
{t=a[0];
a[0]=a[j];
a[j]=t;
}
}

b[0]=a[0];

for (i=1;i<10-1;i++)
{
for (j=i+1;j<10;j++)
{
if (a[j]<a)
{t=a;
a=a[j];
a[j]=t;
}
}

if (b[x]!=a)
{
        b[x+1]=a;
        x+=1;
}
}
printf("die Zahle in aufsteigender Reihefolge\n");
for (i=0;i<x+1;i++)
printf("%d\n",b);
}
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-2-12 18:59 | 显示全部楼层
有错。

Geben Sie 10 Zahle ein
1
1
1
2
2
2
3
3
3
4444
die Zahle in aufsteigende
1
2
3
Press any key to continue
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 19:00 | 显示全部楼层
先把第一轮下来的最小值a[0]给b[0]

然后每一轮得到的a和b[x],如果不同则b[x+1]=a;

到最后就输出b
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-2-12 19:03 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 19:04 | 显示全部楼层
唉呀,这个怪问题我也就不知道了,理论上来说该对的呀

我也请教一个问题
a=1
b=(++a)+(++a)+(++a)
b=?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 19:07 | 显示全部楼层
最大的数字总是丢失了。

因为我定义了b[10]的原因吧

但是我定义b[]在C++中不允许
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-2-12 19:19 | 显示全部楼层
b=(++a)+(++a)+(++a)=10


但是我定义b[]在C++中不允许

什么不允许?
i应该从0开始,不是从1。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 19:24 | 显示全部楼层
b=(++a)+(++a)+(++a)=10
warum??

但是我定义b[]在C++中不允许
什么不允许?
Keine Ahnung, immer Fehler

i应该从0开始,不是从1。
nein, a[0] wurde schon verglichen und hat schon den kleinste Wert gekriegt.
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 19:27 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-2-12 19:36 | 显示全部楼层
sorry,我也有些晕。
算出来是9
可是编译器里一试的确是10,让我想想
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 19:43 | 显示全部楼层
算出来是9
可是编译器里一试的确是10

对啊,我问了Professor,他也说不知道。。。

如果(++a)+(++a)编译得到答案与计算一样,但是三个以上就不对了。。。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 19:45 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-2-12 19:45 | 显示全部楼层
正在思索。


        #include<iostream.h>

        void main()
        {
                int i=1,a=0,b=0,c=0;
               
                a=++i;
                cout<<"a: "<<a<<endl;
                i=1;
                b=(++i)+(++i);  //这里是6,这是关键。。。
                i=1;
                cout<<"b: "<<b<<endl;
                i=1;
                c=(++i)+(++i)+(++i);
                cout<<"c: "<<c<<endl;
               
        }

a: 2
b: 6
c: 10
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 19:48 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-2-12 19:58 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-2-12 19:59 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

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

GMT+2, 2025-7-4 20:29 , Processed in 0.121566 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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