Arama butonu
Bu konudaki kullanıcılar: 1 misafir
11
Cevap
1099
Tıklama
0
Öne Çıkarma
Arkadaşlar C de bir yerde takıldım ve devamını getiremiyorum. Help pls
M
11 yıl (27 mesaj)
Onbaşı
Konu Sahibi

Öncelikle 5 sayi giriyorsunuz ve amacım en küçük 2. sayıyı ekrana basmak.Ama en küçük ikinci sayiya nasıl ulaşacağımı yazamıyorum.Yardım ederseniz çok sevinirim.

#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 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.

Üye Ol Şimdi Değil



C
11 yıl (79 mesaj)
Çavuş

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.



B
11 yıl (47 mesaj)
Çavuş

Kullanicidan veriyi dogru alamiyorsun. Soyle olmasi gerekirdi: "scanf ("%d", &numbers );"



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
P
11 yıl (1585 mesaj)
Binbaşı

Basit bir dizi sıralama örneği: (Büyük dizilerde çok yavaş çalışır)

  long c, d, t; 

for (c = 0 ; c < ( n - 1 ); c++) //buradaki n değeri dizideki eleman sayısı
{
for (d = 0 ; d < n - c - 1; d++)
{
if (dizi[d] > dizi[d+1])
{
/* Yer değiştir */

t = dizi[d];
dizi[d] = dizi[d+1];
dizi[d+1] = t;
}
}
}


Artık elinde sıralı bir dizi var. dizi[1] ise istediğin değeri tutuyor olacak.


Bu mesaja 2 cevap geldi.
M
11 yıl (27 mesaj)
Onbaşı
Konu Sahibi

Ö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...


Bu mesaja 1 cevap geldi.
C
11 yıl (79 mesaj)
Çavuş

ö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 :)





< Bu mesaj bu kişi tarafından değiştirildi counters -- 20 Aralık 2015; 16:49:50 >
Bu mesaja 2 cevap geldi.
M
11 yıl (27 mesaj)
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: counters

ö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 :))


Bu mesaja 1 cevap geldi.
M
11 yıl (27 mesaj)
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: PcCopat

Basit bir dizi sıralama örneği: (Büyük dizilerde çok yavaş çalışır)

  long c, d, t; 

for (c = 0 ; c < ( n - 1 ); c++) //buradaki n değeri dizideki eleman sayısı
{
for (d = 0 ; d < n - c - 1; d++)
{
if (dizi[d] > dizi[d+1])
{
/* Yer değiştir */

t = dizi[d];
dizi[d] = dizi[d+1];
dizi[d+1] = t;
}
}
}


Artık elinde sıralı bir dizi var. dizi[1] ise istediğin değeri tutuyor olacak.

Hocam benim için emek harcadığınız için çok teşekkür ederim :)) Emeğinize değdi çözdüm olayı :)))



C
11 yıl (79 mesaj)
Çavuş

Rica ederim, iyi çalışmalar :)


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @m3rtcan
P
11 yıl (1585 mesaj)
Binbaşı

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ı.



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @counters
M
11 yıl (27 mesaj)
Onbaşı
Konu Sahibi

quote:

Orijinalden alıntı: counters

Rica ederim, iyi çalışmalar :)

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];
}





< Bu mesaj bu kişi tarafından değiştirildi m3rtcan -- 23 Aralık 2015; 19:33:23 >
Bu mesaja 1 cevap geldi.
M
11 yıl (27 mesaj)
Onbaşı
Konu Sahibi

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];
}



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.