1. sayfa
|
aldığınız rakamları küçükten büyüğe doğru sıralayıp ikinci sıradaki elemanı ekrana basabilirsiniz. ya da iki tane değişken tanımlarsınız.Biri örneğinizde yaptığınız smallest gibi görevini yerine getirir.Daha sonra dizi üzerinde ikinci kez dönersiniz ve smallest'tan büyük olması koşulu ile en küçük elemanı bulursunuz.Böylece smallest en küçük değere sahipken, smallest2 ise en küçük ikinci değere sahip olmuş olur.Aklıma ilk etapta gelen bunlar. ilk değer olarak atamaya gelince ise INT_MAX atayabilirsiniz ya da dizinin ilk elemanını atayabilirsiniz. |
| Kullanicidan veriyi dogru alamiyorsun. Soyle olmasi gerekirdi: "scanf ("%d", &numbers );" |
Basit bir dizi sıralama örneği: (Büyük dizilerde çok yavaş çalışır) long c, d, t; Artık elinde sıralı bir dizi var. dizi[1] ise istediğin değeri tutuyor olacak. |
|
Öncelikle ilgiliniz için teşekkürler arkadaşlar ama dünden beri bi mantığını oturtamadım gitti. if (dizi[d] > dizi[d+1]) { /* Yer değiştir */ t = dizi[d]; dizi[d] = dizi[d+1]; dizi[d+1] = t; Hocam if den sonraki kısmın mantığını oturtamıyorum. Sizden ricam türkçe olarak açıklayabilir misiniz? Tekrar ilginiz için teşekkürler... |
|
örnekli olarak açıklayayım daha iyi anlarsın. dizi[d]=5 olsun, dizi[d+1]=3 olsun t=dizi[d] ile t değişkenine 5 atanır. dizi[d]=dizi[d+1] ile dizi[d]'ye 3 atanmış olur.Son durum dizi[d] ve dizi[d+1] 3'tür. Daha sonra dizi[d+1]'e t yani 5 atanır ve son durum: dizi[d]=3 dizi[d+1]=5 olmuş olur. Kodun sahibi yerine ben cevap verdiğim için kodun sahibinin affına sığınıyorum :) |
Hocam çok teşekkürler mantığını anladım şimdi. Yeniden kodları yazmaya çalışcam. Olay bitmiştir :))) Gerçekten ilginiz için teşekkürler :)) |
Hocam benim için emek harcadığınız için çok teşekkür ederim :)) Emeğinize değdi çözdüm olayı :))) |
| Rica ederim, iyi çalışmalar :) |
Ne demek, alt tarafı bir bubble sort. Giremedim foruma bugün o yüzden geç gördüm konu sahibinin sorusunu. Önemli olan onun anlaması. |
Hocam yaptığımı sanıyordum ama yapamamışım. En küçük 2. sayıyı bulamıyorum.Nerde hata yapıyorum yardım eder misiniz? Ya da hatamı düzeltir misiniz? Çok acil gerekiyor, düzeltemiyorum bir türlü :(( int main() { int my_array[20],input=0,length; //20 yazmam yeterli printf("Enter the numbers(0<numbers)"); do { scanf("%d",&input); my_array[length]=input; length++; }while(input != -1); second(my_array,length); printf("%d\n",second(my_array,1)); } int second(int array[],int length) { int temp,i,j; for (j=0;j<length;j++) { for(i=0;i<(length-1);i++) { if(array>array[(i+1)]) { temp=array; array=array[(i+1)]; array[(i+1)]=temp; } } } return array[1]; } |
|
Sorun çözülmüştür. Herkese tekrardan teşekkürler #include <stdio.h> #include <stdlib.h> int main() { int x,my_array[999],input,length=0; printf("Enter the numbers(0<numbers)"); do { scanf("%d",&input); my_array[length]=input; length++; }while(input != -1); x=second(my_array,length); printf("%d\n",x); } int second(int array[],int length) { int temp,i,j; for (j=0;j<length;j++) { for(i=0;i<(length-1);i++) { if(array>array[(i+1)]) { temp=array; array=array[(i+1)]; array[(i+1)]=temp; } } } return array[2]; } |
1. sayfa
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,numbers[5],smallest=1000000000;
for(i=0;i<5;i++)
{
printf("Enter the ten numbers"); scanf("%d",&numbers);
}
for(j=0;j<5;j++)
{
if(numbers[j]<smallest)
{
smallest=numbers[j];
}
}
printf("%d\n",smallest);
}
Aslında smallesta öyle bi değer ataması yapmak istemiyordum. O konuda da yardım ederseniz sevinirim.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.