başlangıç seviyesinde bir sorusu...

deoset89
27-04-2010, 08:34   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
6 mesaj
Kayıt Tarihi:Kayıt: Ağu 2009

c diline başlayalı az bir zaman oldu kaynaklardan bi yere kadar kafamdaki soruları yanıtlayak biri mutlaka olmalı şu soruma yardımcı olursanız sewinirim  matrisin elemetlerinin en büyük değerini bulma programını yazabiliyorum ama karışık bi soru çıktı karşıma ve baya zorlandım...Ağlıyorsoruda:
 
matrisin negatif elementlerini -2 ile çarp ve çıkan matrisdede en büyük elementi bul...
 
program bu şekilde olacak arkadaşlar eğer kodları tam şekilde yazarsanız çok sewinirim...borland c de çalışıyorum... şimdiden teşekkürler....

endazyar
02-05-2010, 10:15   |  #2  
Üye
Teşekkür Sayısı: 0
53 mesaj
Kayıt Tarihi:Kayıt: Oca 2010


alelacele yazdım, umarım anlaşılır olmuştur.anlamadığın bir yer varsa sorabilirsin.

#include <stdio.h>

void main(void)
{
        double arr[2][2];      /* 2x2 lik array tanımla */
        double biggest;        /* en büyük elemanın tutulacağı yer */
        int i, j;


 /* elemanları al */
        printf("2 x 2 lik matrisin elemanlarini girin>\n");
        for( i = 0; i < 2; i++)
                for(j = 0; j < 2; j++){
                        scanf("%lf", &arr[j]);
                }

        biggest = arr[0][0];                /* ilk elemanı en büyük eleman olarak seç    */
        for( i = 0; i < 2; i++)
     /* ilk elemanı diğer tüm elemanlarla kıyasla */
                for(j = 0; j < 2; j++){                       
                        if(arr[j] > biggest)                
                                biggest = arr[j];        /* eğer daha büyük eleman varsa biggest a o değeri ata */
                }

        /* -2 ile çarpamadan önceki en büyük elemanı yazdır */
        printf("\nEn buyuk eleman = %.2f\n\n", biggest);

         /* başlangıç değeri olarak ilk elemanın -2 ile çarpılmış halini seç */
        biggest = arr[0][0] * -2;

        for( i = 0; i < 2; i++)
                for(j = 0; j < 2; j++){
                        arr[j] = arr[j] * (-2);        /* tüm elemanları -2 ile çarp */
                        if(arr[j] > biggest)
                                biggest = arr[j];                /* en büyük elemanı belirle */
                }

        printf("-2 ile carptiktan sonra\n"                                                /* ekrana yazdır */
                 "                en buyuk eleman = %.f\n\n", biggest);
}

Son Düzenleme: endazyar ~ 02 Mayıs 2010 10:17
muh34
24-10-2010, 23:37   |  #3  
Yıllanmış Üye
Teşekkür Sayısı: 0
215 mesaj
Kayıt Tarihi:Kayıt: Eki 2010

Yukarıda yazilan koda gore program 2 boyutlu matrisin satirlarinin tanımlanmaması gerekcesiyle hatalı calisacaktir.Ayrıca bir matrisin negatif bir sayı ile carpılması durumunda,matrisin en kucuk elemani yeni durumda en buyuk eleman olacaktir.
O halde yukarıdaki kodun dogru yazim sekli asagidaki gibi olabilir
#include <stdio.h>
int main() {
   
        double arr[2][2]={0};    
        double biggest,kucuk;      
        int i, j;
        printf("2 x 2 lik matrisin elemanlarini girin>\n");
        for( i = 0; i < 2; i++)
        for(j = 0; j < 2; j++)
        scanf("%lf", &arr[j]);
        biggest = arr[0][0];  
        kucuk=arr[0][0];        
        for( i = 0; i < 2; i++)
        for(j = 0; j < 2; j++)  {                  
        if(arr[j] > biggest)               
        biggest = arr[j];  
        if(arr[j] < kucuk)
        kucuk=arr[j];    
        }
        printf("\nEn buyuk eleman = %0.0f\n\n", biggest);
        printf("\nCarpim isleminden sonra en buyuk eleman:%0.0lf",kucuk*-2);
return 0;
}
Başarılar
 

Kapalı Hesap (153535)
07-11-2010, 15:15   |  #4  
Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009
Alıntı: muh34  
Yukarıda yazilan koda gore program 2 boyutlu matrisin satirlarinin tanımlanmaması gerekcesiyle hatalı calisacaktir.Ayrıca bir matrisin negatif bir sayı ile carpılması durumunda,matrisin en kucuk elemani yeni durumda en buyuk eleman olacaktir.
O halde yukarıdaki kodun dogru yazim sekli asagidaki gibi olabilir
#include
int main() {
   
        double arr[2][2]={0};    
        double biggest,kucuk;      
        int i, j;
        printf("2 x 2 lik matrisin elemanlarini girin>\n");
        for( i = 0; i < 2; i++)
        for(j = 0; j < 2; j++)
        scanf("%lf", &arr[j]);
        biggest = arr[0][0];  
        kucuk=arr[0][0];        
        for( i = 0; i < 2; i++)
        for(j = 0; j < 2; j++)  {                  
        if(arr[j] > biggest)               
        biggest = arr[j];  
        if(arr[j] < kucuk)
        kucuk=arr[j];    
        }
        printf("\nEn buyuk eleman = %0.0f\n\n", biggest);
        printf("\nCarpim isleminden sonra en buyuk eleman:%0.0lf",kucuk*-2);
return 0;
}
Başarılar
 

Hangi satırda matrisin elemanları -2 ile çarpılıyor?Açıklamana göre hata çıkacağı için mi eklemedin?

Kapalı Hesap (153535)
07-11-2010, 15:40   |  #5  
Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

#include<stdio.h>
int main()
{

int arr[2][2];

int max,min;

int i,j;

printf("2x2 matrisini elemanlarini girin\n");

for(i=0;i<2;i++)

{

for(j=0;j<2;j++)

{

scanf("%d",arr[j]);

}

}

max=arr[0][0];

min=arr[0][0];

for(i=0;i<2;i++)

{

for(j=0;j<2;j++)

{

if(arr[j]>max)

{

max=arr[j];

}

if(arr[j]<min)

{

min=arr[j];

}

}

}

printf("Max element=%d\n",max);

printf("Min element=%d\n",min);

return 0;

}
Program bu haliyle hata veriyor çalışıyor ama sonra kapanıyor int arr[2][2]={0} yaptığımda da olmadı.

muh34
07-11-2010, 15:44   |  #6  
Yıllanmış Üye
Teşekkür Sayısı: 0
215 mesaj
Kayıt Tarihi:Kayıt: Eki 2010

Tanım:bir matrisin negatif bir sayı ile carpılması durumunda,matrisin en kucuk elemani yeni durumda en buyuk eleman olacaktir.
Yukarıdaki tanıma göre matrisin en kucuk elemanı bulunarak,printf() fonksiyonu icerisinde -2 ile cebirsel carpım yapılmaktadır.Nihayetinde en buyuk elemana ulasılmıs olunur.
Başarılar

Kapalı Hesap (153535)
07-11-2010, 15:47   |  #7  
Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

Benim modifiye ettiğim programda hata nerede acaba?

muh34
07-11-2010, 15:55   |  #8  
Yıllanmış Üye
Teşekkür Sayısı: 0
215 mesaj
Kayıt Tarihi:Kayıt: Eki 2010

scanf() fonksiyonu icerisinde,matrisin elemanlarini bellek yonetimine yerlestirmemenizden kaynaklanan bir sorun olmaktadır.İşaretciler(pointers) ve karakter dizileri(characters arrays) dışında,scanf() input işlemlerini & (ampersand) başvuru belirtecini kullanarak veri girişi gerceklestirmeniz gerekir.
Başarılar

Kapalı Hesap (153535)
07-11-2010, 16:00   |  #9  
Kapalı Hesap
Teşekkür Sayısı: 27
2,297 mesaj
Kayıt Tarihi:Kayıt: Eki 2009

Teşekkürler gözden kaçırmışım çok basit bir hata.