Hata Nerde

Kapalı Hesap (153535)
28-10-2010, 02:11   |  #1  
OP Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

#include<stdio.h>
int main()
{
 int i,max,min;
    int sira1;
    int sira2; 
 int a[5]={2,4,6,7,8};
 for(i=0;i<5;i++)
 {
  max=a[0];
  if(a>max)
  {
   max=a;
      sira1=i;
  }
 }
 for(i=0;i<5;i++)
 {
  
  min=a[0];
  if(a<min)
  {
   min=a;
   sira2=i;
  }
 }
 printf("The maximum element is %d sira1 %d\n",max,sira1);
 printf("The minimum element is %d sira2 %d\n",min,sira2);
 return 0;
}
Arkadaşlar bu kodu yazıp derlediğimde sorunsuz çalışıyor fakat minimum elemanın sırasını 8 olarak yazdırıyor.Yardımcı olursanız sevinirim.

muh34
28-10-2010, 14:54   |  #2  
Yıllanmış Üye
Teşekkür Sayısı: 0
215 mesaj
Kayıt Tarihi:Kayıt: Eki 2010

Yukarıdaki koda gore sira1 ve sira2 degiskenlerine(variables) ilk deger atamalari yapmalisiniz.Cunku min degiskenine ilk deger olarak dizinin ilk elemanı atanmıştır.
min=a[0]; -> dolayısıyla a dizisinin en kucuk elemanı olan 2 degerini -> if(a < min) kosul icerisinde hicbir zaman işlemeyecektir.Cunku tesadufi olarak en kucuk eleman dizinin ilk elemanıdır ve if() kosuluna girmeksizin sira1 degiskeni deger alamayacaktır.Dolayısıyla sira1 degiskenine 0 degerini atayınız.Ayrıca max ve min degiskenlerine ilk deger atamalarını dongu icerisinde degil,işletim donguye girmeden yapmalısınız.

Nihayi Kod Asagıdaki gibi olabilir.

#include<stdio.h>
int main() {
 int i,sira1=0,sira2=0; 
 int a[5]={2,4,6,7,8};
 int max=a[0];
 for(i=0;i<5;i++) {
  if(a>max) {
   max=a;
   sira1=i;
  }
 }
 int min=a[0];
 for(i=0;i<5;i++) {
  if(a<min) {
   min=a;
   sira2=i;
  }
 }
 printf("The maximum element is %d sira1 %d\n",max,sira1);
 printf("The minimum element is %d sira2 %d\n",min,sira2);
 getchar();
 return 0;
}
Başarılar

Kapalı Hesap (153535)
28-10-2010, 15:11   |  #3  
OP Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009
Alıntı: muh34  
Yukarıdaki koda gore sira1 ve sira2 degiskenlerine(variables) ilk deger atamalari yapmalisiniz.Cunku min degiskenine ilk deger olarak dizinin ilk elemanı atanmıştır.
min=a[0]; -> dolayısıyla a dizisinin en kucuk elemanı olan 2 degerini -> if(a < min) kosul icerisinde hicbir zaman işlemeyecektir.Cunku tesadufi olarak en kucuk eleman dizinin ilk elemanıdır ve if() kosuluna girmeksizin sira1 degiskeni deger alamayacaktır.Dolayısıyla sira1 degiskenine 0 degerini atayınız.Ayrıca max ve min degiskenlerine ilk deger atamalarını dongu icerisinde degil,işletim donguye girmeden yapmalısınız.

Nihayi Kod Asagıdaki gibi olabilir.

#include
int main() {
 int i,sira1=0,sira2=0; 
 int a[5]={2,4,6,7,8};
 int max=a[0];
 for(i=0;i<5;i++) {
  if(a>max) {
   max=a;
   sira1=i;
  }
 }
 int min=a[0];
 for(i=0;i<5;i++) {
  if(a   min=a;
   sira2=i;
  }
 }
 printf("The maximum element is %d sira1 %d\n",max,sira1);
 printf("The minimum element is %d sira2 %d\n",min,sira2);
 getchar();
 return 0;
}
Başarı


Teşekkürler açıklama için kod şimdi sorunsuz çalışıyor.Size de başarılar.