Öncelikle programın çalışma mantığını kavrayalım.
- Kullanıcı kaç sayı gireceğini söyler.
- Kullanıcının girdiği sayılar bir diziye atanır.
- Dizinin 0. ve 1. elemanından kontrole başlanır.
- Eğer indisi büyük olan sayı diğerinden küçükse iki sayının yeri değiştirilir.
- Bu işlem n elemanlı bir dizi için n kere tekrarlanır.
#include
int main() {
int dizi[100]= { };
int n;//Kullanıcının gireceği sayı miktarı
printf("Kac sayi gireceksiniz?");
scanf("%d", &n);
return 0;
}
(Kullanıcının max. 100 sayi gireceğini varsaydık.)Kullanıcıdan kaç sayı gireceğini öğrendik. Şimdi sayıları alıp diziye atayalım.
#include
int main() {
int dizi[100]= { };
int n;//Kullanıcının gireceği sayı miktarı
printf("Kac sayi gireceksiniz?");
scanf("%d", &n);
int i;
for (i=0;i<n;i++) {
printf("%d. sayiyi giriniz.",i+1);
scanf("%d", &dizi[i]);
}
return 0;
}
Artık dizimizde kullanıcının girdiği sayılar var. Bunları sıralamak için yukarıdaki mantığa göre bir fonksiyon yazalım.
void sirala(int d[], int n) {
int t;//Yer değiştirmek için kullanacağımız değişken.
int i,j;
for (i=1;i<n;i++) {
/*n-1 e kadar geldik çünkü (n+1). elemanı kontrol
ederken dizi dışına çıkardı.*/
for (j=0;j<n-1;j++) {
if (d[j]>d[j+1]) {
t=d[j];
d[j]=d[j+1];
d[j+1]=t;
}
}
}
}Sadece diziyi göderdik ve geriye bir şey döndürmedik farkettiyseniz. Çünkü diziyi fonksiyona gönderdiğinizde değişkenlerden farklı olarak dizi içinde yaptığınız değişikler kaybolmaz.
Prototipi de ekleyerek programın tamamlanmış hali:
#include <stdio.h>
void sirala(int d[], int n);
int main() {
int dizi[100]= { };
int n;//Kullanıcının gireceği sayı miktarı
printf("Kac sayi gireceksiniz?");
scanf("%d", &n);
int i;
for (i=0;i<n;i++) {
printf("%d. sayiyi giriniz.",i+1);
scanf("%d", &dizi[i]);
}
sirala(dizi,n);
for (i=0;i<n;i++) {
printf("%d ",dizi[i]);
}
return 0;
}
void sirala(int d[], int n) {
int t;//Yer değiştirmek için kullanacağımız değişken.
int i,j;
for (i=1;i<n;i++) {
/*n-1 e kadar geldik çünkü (n+1). elemanı kontrol
ederken dizi dışına çıkardı.*/
for (j=0;j<n-1;j++) {
if (d[j]>d[j+1]) {
t=d[j];
d[j]=d[j+1];
d[j+1]=t;
}
}
}
}
https://drive.google.com/folderview?id=0BxSQqX34gVqJR25MZEJ2TWxLb00&usp=sharing
Hiç yorum yok:
Yorum Gönder