Hogyan tudnám ezt megvalósítani C-ben?
Sziasztok! Van egy 5 elemű tömböm, amely számokból áll. A számok nagysága folyamatosan csökken pl.:{15,12,9,7,5}. Be szeretnék tölteni egy tetszőleges számot, például a 13-ast, úgy, hogy az nagyságrendileg oda kerüljön, ahová való (jelen esetben a 15 és a 12 közé), és valahogy így folytatódjon a tömb : {15,13,12,9,7}->mindegyik szám a 13-tól odébbtolódjon eggyel.
A programom így néz ki:
int main()
{
int a[5]={15,12,9,7,6};
int size=5;
int szam=13;
int idx,i,tmp=0;
for(idx=0;idx<size &&idx<10;idx++)
{
if (a[idx]>szam && a[idx+1]<szam)
{
for (i=idx+2;i<size &&i<10;i++)
{
a[i]=a[i-1]; // Csak a 12-es számot másolja mindenhová a 13-as után. Valami ötlet a megvalósításhoz?
}
a[idx+2]=a[idx+1];
a[idx+1]=szam;
}
printf("%d ",a[idx]);
}
}
Előre is köszi a válaszokat!
Insertion sort.
----------------
#include<stdio.h>
int main(){
int i,j,s,temp,a[20];
printf("Enter total elements: ");
scanf("%d",&s);
printf("Enter %d elements: ",s);
for(i=0;i<s;i++)
scanf("%d",&a[i]);
for(i=1;i<s;i++){
temp=a[i];
j=i-1;
while((temp<a[j])&&(j>=0)){
a[j+1]=a[j];
j=j-1;
}
a[j+1]=temp;
}
printf("After sorting: ");
for(i=0;i<s;i++)
printf(" %d",a[i]);
return 0;
}
Output:
Enter total elements: 5
Enter 5 elements: 3 7 9 0 2
After sorting: 0 2 3 7 9
Bocs.
----
int main()
{
int a[3],i,j,temp;
printf("Enter 5 Array Element:\n");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<5;i++)
{
temp=a[i+1];
j=i;
while(temp=0)
{
a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
printf("Sorted Array id: ");
for(i=0;i<3;i++)
{
printf("%d",a[i]);
}
return 0;
}
Ugye itt arról van szó hogy sorba nézed az elemeket és ha elérsz egy olyan elemet ami már kisebb mint a bekért szám akkor oda kell beszúrni az új elemet.
Amit te csinálsz az az hogy felülírod az elemet, majd átmásolod mindig a következő helyre az előzőt. Nem felülírni kell hanem cserélni.
szam1 és szam2 értékét így cseréled ki:
int tmp = szam1; //megjegyzed szam1-et
szam1 = szam2; //felülírod szam1-et szam2-vel
szam2 = tmp; //a megjegyzett szam1 érteket beírod szam2-be
Na itt is valami ilyesmit kell csak növekvő indexekkel:
{15, 12*, 9, 7, 6} //a 13-at cseréljük 12-vel
{15, 13, 9*, 7, 6} //a 12-t cseréljük 9-cel
{15, 13, 12, 7*, 6} //a 9-et cseréljük 7-tel
{15, 13, 12, 9, 6*} //a 7-et cseréljük 6-tal
{15, 13, 12, 9, 7}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!