Mi nem jó ebben a C-s kódban?
nem azt csinálja amire szántam:):) :
#include<stdio.h>
main()
{
int a,b,c,d;
int e[4];
for (a=0;a<=3;a++)
{ /* bekéri a a tömb elemeit*/
scanf("%d",&e[a]);
}
for (a=0;a<=3;a++) /* itt az első a tömb minden elemére megfogj csinálni:*/
{
for (c=1;c<=4;c++) /* ez minden elemmel eljátsza 4szer :*/
{
if (e[a]>e[c]) /* ez megvizsgálja hogy a tömb elemeiközül melyik a nagyobb és
ha van valami akkor kicseréli az elemeket*/
{
b=e[a];
d=e[c];
b=e[c];
d=e[a];
}
}
}
for (a=0;a<=3;a++)
{ /* ez meg kiírja az elemeket amik már átvannak "írva"*/
printf("%d",e[a]);
}
scanf("%d",&d);
}
nos az lenne hogy bekér 4 számot és növekvő sorrendbe rakja őket és ezt úgy csináltam meg hogy minden elemmel eljátsza azt hogy azt az elemet hasonlítja a többi elemhez és ha az egyik kisebb mint ő akkor kicseréli őket
de nemcseréli őket miért??
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
Most csak így ránézésre ez szúrt szemet:
for (c=1;c<=4;c++)
A 4 elemű tömbnek 0-tól 3-ig terjed az indexelése, tehát itt ki kéne venni az egyenlőségjelet. Itt egy jó rendező algoritmus:
for(int i=0;i<3;i++)
for(int j=i+1;j<4;j++)
if(x[i]>x[j])
{
int tmp=x[i];
x[i]=x[j];
x[j]=tmp;
}
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Az a baj hogy összevissza hasonlítgatod az elemeket, néha az elöttelévővel is.
12. sortól írd át:
for (c=a;c<=4;c++) {
a=e[a];
e[a]=e[c];
e[c]=a;
}
A C-t nem ismerem teljesen, de remélem így jobb lesz.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
így lenne jó amit írtál (az első is jót írt, majdnem ugyanezt)
for (a=0; a<=3; a++) /* itt az első a tömb minden elemére megfogj csinálni:*/
{
for (c=a+1; c<=3; c++) /* ez minden elemmel eljátsza 4szer :*/
{
if (e[a]>e[c]) /* ez megvizsgálja hogy a tömb elemeiközül melyik a nagyobb és
ha van valami akkor kicseréli az elemeket*/
{
b=e[a];
d=e[c];
e[c] = b;
e[a] = d;
}
}
}
köszi mindenkinek
utolsó az van hogy átnéztem mit írtál és rájöttem hogy én is ezt akartam de úgy gondoltam hogyha a=0 akkor a+1 =1 de arra nem gondoltam hogy a változik!
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!