Computer Programming Çıkmış Sorular – 1 (Trapez)

Mustafa Çakır hocanın çıkmış sorularından, diğerlerine göre geometri kısmı daha basit olanı. En azından sinüs kosinüs yok ama bunun geometri kısmı da bayağı zorladı. 🙂 Soru şöyle:



Asıl istenen fonksiyon şöyle bir şey:

double alan(trapez t1, double inp)
{
       double ucgen1, ucgen2, dortgen, alan;
       
       ucgen1 = t1.a * t1.e / 2;
       ucgen2 = t1.c * t1.e / 2;
       dortgen = t1.b * inp;
       
       ucgen1 = ucgen1 - ucgen1 * ((t1.e - inp) / t1.e) * ((t1.e - inp) / t1.e);
       ucgen2 = ucgen2 - ucgen2 * ((t1.e - inp) / t1.e) * ((t1.e - inp) / t1.e);
       
       alan = ucgen1 + ucgen2 + dortgen;
       
       return alan;
}

Fonksiyona gelen trapez tipindeki değişkeni t1 adıyla, double tipindeki değişkeni de inp adıyla karşılıyoruz.

ucgen1 dediğim değişken bir kenarı “A”, diğer kenarı “E” olan soldaki büyük dik üçgenin alanı.

ucgen2 de aynı şekilde “C” ve “E” kenarlı sağdaki büyük üçgenin alanı.

dortgen değişkeninde bir kenarı “B”, diğer kenarı “Inp” olan taralı şeklin dörtgen kısmının alanını tutuyorum.

Büyük üçgenlerden, üst tarafta kalan, üçgenin taralı olmayan kısmını çıkartırsak, işimize yarayan sağ ve solda kalan taralı yamuk alanlarını buluruz. Küçük üçgenlerin alanı, büyük üçgenin alanının, tabanların karelerinin oranı ile çarpımıyla hesaplanıyormuş. Uğraştıran kısmı da bu hesabın nasıl yapıldığını öğrenmek oldu zaten. 🙂 Onu da iki satırla hesapladık.

Son olarak alan, bu üç taralı bölgenin toplamıyla bulunuyor.

Fonksiyon geriye alan değişkenini gönderiyor.

Uzunluk değerleri için soruda verilenleri girdiğimizde alan olarak 11,59… gibi bir sayı döndürüyor.

Tabii bu fonksiyonu kullanmak için kodun tam halini de verelim:

#include 
#include 


struct trapez{
       double a;
       double b;
       double c;
       double d;
       double e;
       };
      
typedef struct trapez trapez;

double alan(trapez, double); //fonksiyon prototipi

int main()
{
    trapez tr;
    double inp = 0;
    
    printf("A : ");
    scanf("%lf", &tr.a);
    
    printf("B : ");
    scanf("%lf", &tr.b);
    
    printf("C : ");
    scanf("%lf", &tr.c);
    
    printf("D : ");
    scanf("%lf", &tr.d);
    
    printf("E : ");
    scanf("%lf", &tr.e);
    
    printf("Inp : ");
    scanf("%lf", &inp);
    
    printf("Alan = %lf", alan(tr, inp));
    
    getch();
    return 0;
    }

double alan(trapez t1, double inp)
{
       double ucgen1, ucgen2, dortgen, alan;
       
       ucgen1 = t1.a * t1.e / 2;
       ucgen2 = t1.c * t1.e / 2;
       dortgen = t1.b * inp;
       
       ucgen1 = ucgen1 - ucgen1 * ((t1.e - inp) / t1.e) * ((t1.e - inp) / t1.e);
       ucgen2 = ucgen2 - ucgen2 * ((t1.e - inp) / t1.e) * ((t1.e - inp) / t1.e);
       
       alan = ucgen1 + ucgen2 + dortgen;
       
       return alan;
}

Not : İşin geometri kısmında yardımcı olan İlker ve Melis’e teşekkürü borç bilirim. 🙂 Özellikle üçgenin alanını hesaplarkenki yanlışımı düzelten İlker’e 🙂 Bundan sonra bölü iki’yi unutmayacağım. Evet ben mühendislik okuyorum… 🙂

Share

Yorum Yap


Not - Bunları KullanabilirsinizHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>