Section 3 Programming Exercises

Bölüm 3 Sorular

*3.1 (Algebra: solve quadratic equations) The two roots of a quadratic equation ax2 + bx + c = 0 can be obtained using the following formula:

(Cebir: İkinci dereceden denklem çözümü) ax2 + bx + c = 0 denkleminin kökleri aşağıdaki formül kullanılarak bulunabilir.

b2 - 4ac is called the discriminant of the quadratic equation. If it is positive, the equation has two real roots. If it is zero, the equation has one root. If it is negative, the equation has no real roots.  Write a program that prompts the user to enter values for a, b, and c and displays the result based on the discriminant. If the discriminant is positive, display two roots. If the discriminant is 0, display one root. Otherwise, display “The equation has no real roots”.

b2 - 4ac ifadesine denklemin diskriminantı denir. Bu değer pozitifse, denklemin iki gerçek kökü vardır. Bu değer sıfırsa, denklemin bir kökü vardır. Bu değer negatifse, denklemin hiç gerçek kökü yoktur.  Kullanıcıdan a, b, c değerlerini alan ve diskriminantı hesaplayıp, denklemin sonucunu gösteren bir program yazınız. Eğer diskriminant pozitfse iki kökü gösteriniz. Eğer diskriminant 0 ise bir kökü gösteriniz. Aksi takdirde “Denklemin hiçbir gerçek kökü yoktur” mesajını gösteriniz.

Note that you can use Math.pow(x, 0.5) to compute . Here are some sample runs.

 ‘yı hesaplamak için Math.pow(a, 0.5) metodunu kullanabilirsiniz. Programın örnek akışını inceleyiniz:

               a, b ve c’yi giriniz: 1.0  3  1

               Denklemin iki koku vardir: -0.381966 ve -2.61803          

               a, b ve c’yi giriniz: 1  2.0  1

               Denklemin bir koku vardır: -1

               a, b ve c’yi giriniz: 1  2  3

               Denklemin hicbir gercek koku yoktur.

3.2 (Game: add three numbers) The program in Listing 3.1, AdditionQuiz.java, generates two integers and prompts the user to enter the sum of these two integers.

(Oyun: üç sayıyı toplama) Madde 3.1’deki, AdditionQuiz.java, iki adet tam sayı üretip, kullanıcıdan bu sayıların toplamını girmesini istiyordu.

Revise the program to generate three single-digit integers and prompt the user to enter the sum of these three integers.

Bu programı, üç tam sayı üretecek ve kullanıcıdan bu üç tam sayının toplamını alacak şekilde yeniden düzenleyiniz.

*3.3 (Algebra: solve 2 * 2 linear equations) A linear equation can be solved using Cramer’s rule given in Programming Exercise 1.13. Write a program that prompts the user to enter a, b, c, d, e, and f and displays the result. If ad - bc is 0, report that “The equation has no solution.”

(Cebir: 2 * 2 doğrusal denklem sistemi çözümü) 2*2 doğrusal denklem sisteminin çözümü için Programlama Soruları 1.13’te verilen Cramer kuralını kullanabilirsiniz. Kullanıcıdan a, b, c, d, e, f değerlerini alan ve sonucu gösteren bir program yazınız. Eğer, ad - bc 0 ise “Denklemin çözümü yoktur!” mesajını gösteriniz.

                  a, b, c, d, e ve f’yi giriniz:  9.0  4.0  3.0  -5.0  -6.0  -21.0

                    a, b, c, d, e ve f’yi giriniz:  1.0  2.0  2.0  4.0  4.0  5.0

                    Denklemin cozumu yoktur.

**3.4 (Random month) Write a program that randomly generates an integer between 1 and 12 and displays the English month name January, February, …, December for the number 1, 2, …, 12, accordingly.

(Rastgele ay) 1 ile 12 arasında rastgele bir sayı üreten ve 1 - Ocak, 2 - Şubat ...12 - Aralık olacak şekilde bu sayıya karşılık gelen ayı gösteren bir program yazınız.

*3.5 (Find future dates) Write a program that prompts the user to enter an integer for today’s day of the week (Sunday is 0, Monday is 1, …, and Saturday is 6). Also prompt the user to enter the number of days after today for a future day and display the future day of the week. Here is a sample run:

(Haftanın günü) Kullanıcıdan bugüne karşılık gelen bir tam sayı (Pazar - 0, Pazartesi - 1, …, ve Cumartesi - 6 olacak şekilde) alan bir program yazınız. Aynı zamanda kullanıcıdan, “bugünden kaç gün sonra” için de bir tam sayı değeri alarak,  ona karşılık gelen günü gösteriniz. Örnek akışı inceleyiniz:

                   Kacinci gun oldugunu yaziniz:  1

                   Bugunden kac gun sonrasinin bulunacagini yaziniz:  3

                   Bugun gunlerden Pazartesi ve gelecekteki gun de Perşembe

                   Kacinci gun oldugunu yaziniz::  0

                   Bugunden kac gun sonrasinin bulunacagini yaziniz:  31

                   Bugun gunlerden Pazar ve gelecekteki gun de Carsamba

*3.6 (Health application: BMI) Revise Listing 3.4, ComputeAndInterpretBMI.java, to let the user enter weight, feet, and inches. For example, if a person is 5 feet and 10 inches, you will enter 5 for feet and 10 for inches. Here is a sample run:

(Sağlık uygulaması: VKİ) Madde 3.4, ComputeAndInterpretBMI.java, dosyasını yeniden düzenleyerek kullanıcıdan ağırlığı feet ve inç olarak alınız. Örneğin; Kullanıcı 5 feet 10 inç girmek isterse, 5 feet olarak ve 10 u inç olarak alınız. Örnek akışı inceleyiniz:

                      Agirligi pound olarak yaziniz: 140

                      Kac feet:

                      Kac inch:

                      BMI degeri 20.087702275404553

                      Normal

3.7 (Financial application: monetary units) Modify Listing 2.10, ComputeChange .java, to display the nonzero denominations only, using singular words for single units such as 1 dollar and 1 penny, and plural words for more than one unit such as 2 dollars and 3 pennies.

(Finans uygulaması: para birimi) Madde 2.10 ComputeChange .java dosyasını sonuç 1 ise bunu tekil kelime yani 1 dollar ya da 1 penny, sonuç 1 den büyükse bunu çoğul kelime 2 dollars ya da 3 pennies gibi gösterecek ve eğer sonuç sıfır ise bunu göstermeyecek şekilde yeniden düzenleyiniz.

*3.8 (Sort three integers) Write a program that prompts the user to enter three integers and display the integers in non-decreasing order.

(Üç tamsayıyı sıralama) Kullanıcıdan üç tam sayı alan ve bu tam sayıları büyükten küçüğe doğru sıralayıp gösteren bir program yazınız.

**3.9 (Business: check ISBN-10) An ISBN-10 (International Standard Book Number) consists of 10 digits: d1d2d3d4d5d6d7d8d9d10. The last digit, d10, is a checksum, which is calculated from the other nine digits using the following formula:

(İş: ISBN-10 kontrolü) ISBN-10 (Uluslararası Standart Kitap Numarası) 10 basamaktan oluşur: d1d2d3d4d5d6d7d8d9d10. Son basamak d10 sağlama için kullanılır ve diğer basamaklar kullanılarak aşağıdaki formülle hesaplanır.

(d1 * 1 + d2 * 2 + d3 * 3 + d4 * 4 + d5 * 5 + d6  * 6 + d7 * 7 + d8 * 8 + d9 * 9) % 11

If the checksum is 10, the last digit is denoted as X according to the ISBN-10 convention. Write a program that prompts the user to enter the first 9 digits and displays the 10-digit ISBN (including leading zeros). Your program should read the input as an integer. Here are sample runs:

ISBN-10 standartlarına göre eğer sağlama değeri 10 elde edilirse, bu X olarak gösterilir. Kullanıcıdan ilk 9 basamağı alan ve 10 basamaklı ISBN numarasını gösteren bir program yazınız. (Baştaki sıfırları da gösteriniz.) Programınız girdiyi tam sayı olarak okumalıdır. Programın örnek akışını inceleyiniz:

                   ISBN’nin ilk 9 hanesini tam sayi olarak yaziniz:  013601267

                   10. hanesiyle ISBN 0136012671

                   ISBN’nin ilk 9 hanesini tam sayi olarak yaziniz:  013031997

                   10. hanesiyle ISBN 013031997X

3.10 (Game: addition quiz) Listing 3.3, SubtractionQuiz.java, randomly generates a subtraction question. Revise the program to randomly generate an addition question with two integers less than 100.

(Oyun: toplama sınavı) Madde 3.3, SubtractionQuiz.java, rasgele çıkarma işlemi soruları üretmektedir. Bu programı 100’den küçük rastgele iki tam sayı ile toplama soruları üretecek şekilde yeniden düzenleyiniz.

*3.11 (Find the number of days in a month) Write a program that prompts the user to enter the month and year and displays the number of days in the month. For example, if the user entered month 2 and year 2012, the program should display that February 2012 had 29 days. If the user entered month 3 and year 2015, the program should display that March 2015 had 31 days.

(Bir ayın gün sayısı) Kullanıcıdan ay ve yıl bilgisini alan ve yılın bu ayına ait gün sayısını gösteren bir program yazınız. Örneğin; kullanıcı ay için 2 ve yıl için 2012 girerse, program “Şubat 2012, 29 gündür” mesajını gösterecek. Eğer kullanıcı ay için 3 ve yıl için 2015 girerse, program “Mart 2015, 31 gündür” mesajını gösterecek.

3.12 (Palindrome number) Write a program that prompts the user to enter a three-digit integer and determines whether it is a palindrome number. A number is palindrome if it reads the same from right to left and from left to right. Here is a sample run of this program:

(Palindrom sayılar) Kullanıcıdan üç basamaklı bir tam sayı alan ve bu sayının palindrom olup olmadığını sınayan bir program yazınız. Eğer sayı sağdan-sola ve soldan-sağa aynı ise, bu sayı palindromdur. Programın örnek akışını inceleyiniz:

                   Uc basamakli bir tam sayi giriniz: 121

                   121 bir palindromdur.

                   Uc basamakli bir tam sayi giriniz: 123

                   123 bir palindrom degildir.

*3.13 (Financial application: compute taxes) Listing 3.5, ComputeTax.java, gives the source code to compute taxes for single filers. Complete Listing 3.5 to compute the taxes for all filing statuses.

(Finans uygulaması: vergi hesaplama) Madde 3.5, ComputeTax.java, tek yükümlü için vergiyi hesaplayan kaynak kodu verir. Madde 3.5’i her vergilendirme türü için tamamlayınız.

3.14 (Game: heads or tails) Write a program that lets the user guess whether the flip of a coin results in heads or tails. The program randomly generates an integer 0 or 1, which represents head or tail. The program prompts the user to enter a guess and reports whether the guess is correct or incorrect.

(Oyun: yazı tura) Kullanıcıyla yazı-tura tahmin oyunu oynayan bir program yazınız. Program rastgele 0 (tura) ya da 1 (yazı) değerlerini üretsin. Kullanıcıdan tahmini alınız ve doğru olup olmadığını gösteriniz.

 **3.15 (Game: lottery) Revise Listing 3.8, Lottery.java, to generate a lottery of a three digit number. The program prompts the user to enter a three-digit number and determines whether the user wins according to the following rules:

(Oyun: piyango) Madde 3.8 Lottery.java ‘yı yeniden düzenleyerek üç basamaklı sayılardan bir piyango oluşturun. Program kullanıcıdan üç basamaklı bir sayı alsın ve aşağıdaki kurallara göre kazancını göstersin:

1. If the user input matches the lottery number in the exact order, the award is $10,000.

2. If all digits in the user input match all digits in the lottery number, the award is $3,000.

3. If one digit in the user input matches a digit in the lottery number, the award is $1,000.

1. Eğer girilen sayı piyangoda kazanan sayı ile birebir aynısı ise; ödül 10 000 TL

2. Eğer girilen sayının tüm basamakları piyangoda kazanan sayı ile aynı ise; ödül 3 000 TL

3. Eğer girilen sayının bir basamağı piyangoda kazanan sayı ile aynı ise; ödül 1 000 TL

3.16 (Random point) Write a program that displays a random coordinate in a rectangle. The rectangle is centered at (0, 0) with width 100 and height 200.

(Rastgele nokta) Bir dikdörtgen içinde kalacak şekilde rastgele nokta üreten bir program yazınız. Bu dikdörtgenin merkezi (0, 0) noktası, uzunluğu 100 ve yüksekliği 200 olsun.

*3.17 (Game: scissor, rock, paper) Write a program that plays the popular scissor-rock-paper game. (A scissor can cut a paper, a rock can knock a scissor, and a paper can wrap a rock.) The program randomly generates a number 0, 1, or 2 representing scissor, rock, and paper. The program prompts the user to enter a number 0, 1, or 2 and displays a message indicating whether the user or the computer wins, loses, or draws.

(Oyun: makas, taş, kağıt) Makas, taş, kağıt oyununu oynatan bir program yazınız. (Makas kağıdı keser, taş makası kırar, ve kağıt taşı sarar.) Program rastgele makas, taş ve kağıdı temsilen 0, 1, 2  sayılarını üretsin. Program kullanıcıdan 0, 1, 2 sayılarından birini girmesini istesin ve bilgisayarın sonucuna göre “kazandınız”, “kaybettiniz” ya da “berabere kaldınız” mesajlarından uygun olanı göstersin.

Here are sample runs:

Örnek akışı inceleyiniz:

                      makas (0), tas (1), kagit (2):  1

                      Bilgisayar makas. Siz tassiniz. Siz kazandiniz.

                      makas (0), tas (1), kagit (2):  2

                      Bilgisayar kagit. Siz de kagitsiniz. Berabere kaldiniz.

*3.18 (Cost of shipping) A shipping company uses the following function to calculate the cost (in dollars) of shipping based on the weight of the package (in pounds).

(Kargo ücreti) Kargo firması kargo ücretini hesaplamak için aşağıdaki fonksiyonu kullanmaktadır. Fonksiyon, kargonun ağırlığına (w) karşılık gelen ücreti verir.

Write a program that prompts the user to enter the weight of the package and display the shipping cost. If the weight is greater than 50, display a message “the package cannot be shipped.”

Kullanıcıdan kargonun ağırlığını alan ve kargo ücretini gösteren bir program yazınız. Eğer ağırlık 50’den büyük girilirse “Bu paket kargolanamaz” mesajını gösteriniz.

**3.19 (Compute the perimeter of a triangle) Write a program that reads three edges for a triangle and computes the perimeter if the input is valid. Otherwise, display that the input is invalid. The input is valid if the sum of every pair of two edges is greater than the remaining edge.

(Üçgenin çevresi) Kullanıcıdan kenar uzunluklarını alan ve eğer kenar uzunlukları geçerli ise üçgenin çevresini hesaplayıp gösteren bir program yazınız. Kenar uzunlukları geçerli değilse, “Geçersiz uzunluk değeri” mesajını gösteriniz. Her iki kenarın uzunluğunun toplamı, diğer kenardan büyükse kenar uzunlukları geçerlidir.

*3.20 (Science: wind-chill temperature) Programming Exercise 2.17 gives a formula to compute the wind-chill temperature. The formula is valid for temperatures in the range between −58ºF and 41ºF and wind speed greater than or equal to 2.

Write a program that prompts the user to enter a temperature and a wind speed. The program displays the wind-chill temperature if the input is valid; otherwise, it displays a message indicating whether the temperature and/or wind speed is invalid.

(Bilim: Hissedilen sıcaklık) Programlama Soruları 2.17 ‘de hissedilen sıcaklığı hesaplamak için kullanılan formülü bulabilirsiniz. Bu formül sıcaklık değeri  −58ºF ve 41ºF arasında ve rüzgar hızı 2 ve bundan büyük olduğu durumlarda geçerlidir.

Kullanıcıdan sıcaklık ve rüzgar hızını alan bir program yazınız. Eğer girilen değerler geçerliyse program hissedilen sıcaklığı göstersin, değilse “Geçersiz sıcaklık ya da rüzgar hızı” mesajını göstersin.

**3.21 (Science: day of the week) Zeller’s congruence is an algorithm developed by Christian Zeller to calculate the day of the week. The formula is

(Bilim: haftanın günü) Christian Zeller tarafından geliştirilen Zeller algoritması ile verilen bir tarihin hangi gün olduğu hesaplanabilir. Bunun için geliştirilen formül:

where

h is the day of the week (0: Saturday, 1: Sunday, 2: Monday, 3: Tuesday, 4: Wednesday, 5: Thursday, 6: Friday).

q is the day of the month.

m is the month (3: March, 4: April, …, 12: December). January and February are counted as months 13 and 14 of the previous year.

j is the century (i.e., year / 100 ).

k is the year of the century (i.e., year % 100).

Note that the division in the formula performs an integer division. Write a program that prompts the user to enter a year, month, and day of the month, and displays the name of the day of the week.

olduğunda

h haftanın günü  (0: Cumartesi ,1: Pazar, 2: Pazartesi, 3: Salı, 4: Çarşamba, 5: Perşembe, 6: Cuma).

q ayın kaçı

m ay(3: Mart, 4: Nisan, …, 12: Aralık). Ocak ve Şubat aylarının değeri sırasıyla 13 ve 14’tür. Bu değerler bir sonraki yılı gösterir.

j yüzyıl (ör., yıl / 100 ).

k yüzyılın kaçıncı yılı (ör., yıl % 100).

Verilen formüldeki bölme işlemlerinin sonucu tam sayı olacaktır. Kullanıcıdan gün, ay, yıl bilgisini alan haftanın hangi günü olduğunu gösteren bir program yazınız.

Here are some sample runs:

Programın örnek akışını inceleyiniz:

                  Yili giriniz (ornegin 2012): 2015

                  Ayi giriniz (1-12 arası): 1

                  Ayin kaci oldugunu giriniz (1-31 arası): 25

                  Haftanin gunu Pazar

                  Yili giriniz (örnegin 2012): 2012

                  Ayi giriniz (1-12 arasi): 5

                  Ayin kaci oldugunu giriniz (1-31 arası): 12

                  Haftanin gunu Cumartesi

(Hint: January and February are counted as 13 and 14 in the formula, so you need to convert the user input 1 to 13 and 2 to 14 for the month and change the year to the previous year.)

(İpucu: Formülde Ocak ve Şubat ayları 13 ve 14 değerleri girilmesi gerekmektedir. Kullanıcı 1 girdiyse bunu 13 ve 2 girdiyse bunu 14 olarak değiştirip yılı da bir azaltmalısınız.

**3.22 (Geometry: point in a circle?) Write a program that prompts the user to enter a point (x, y) and checks whether the point is within the circle centered at (0, 0) with radius 10. For example, (4, 5) is inside the circle and (9, 9) is outside the circle, as shown in Figure 3.7a.

(Geometri: Nokta çemberin içinde mi?) Kullanıcıdan (x, y) şeklinde bir nokta alan ve bu noktanın merkezi (0, 0) ve yarıçapı 10 olan bir çemberin içinde olup olmadığını gösteren bir program yazınız. Örneğin, şekil 3.7a ‘da görüleceği gibi (4, 5) çemberin içinde (9, 9) çemberin dışındadır.

(Hint: A point is in the circle if its distance to (0, 0) is less than or equal to 10. The formula for computing the distance is 2(x2 - x1)2 + (y2 - y1)2. Test your program to cover all cases.) Two sample runs are shown below.

(İpucu: Eğer bir nokta çemberin içinde ise bu noktanın merkeze olan uzaklığı, çemberin yarıçapından küçük ya da eşit olmalıdır. İki nokta arasında bulunan uzaklığı hesaplamak için kullanılan formül Programınızı tüm durumlar için test ediniz.) Aşağıdaki iki örneği inceleyiniz.

                  İki koordinatli bir nokta giriniz:  4  5

                  Nokta (4.0, 5.0) cemberin icindedir.

                  İki koordinatli bir nokta giriniz:  9  9

                  Nokta 9.0, 9.0) cemberin icinde degildir.

                             (a)Çemberin içindeki ve dışındaki noktalar               (b) Dörtgenin  içindeki ve dışındaki noktalar  

**3.23 (Geometry: point in a rectangle?) Write a program that prompts the user to enter a point (x, y) and checks whether the point is within the rectangle centered at (0, 0) with width 10 and height 5. For example, (2, 2) is inside the rectangle and (6, 4) is outside the rectangle, as shown in Figure 3.7b.

(Geometri: Nokta dikdörtgenin içinde mi?) Kullanıcıdan (x, y) biçiminde bir nokta girmesini isteyen ve girilen noktanın merkezi (0, 0), boyu 10 ve eni 5.olan bir dikdörtgenin içinde olup olmadığını gösteren bir program yazınız. Örneğin; Şekil 3.7b de gösterildiği gibi (2, 2) noktası dikdörtgenin içinde (6, 4) noktası değildir.

(Hint: A point is in the rectangle if its horizontal distance to (0, 0) is less than or equal to 10 / 2 and its

vertical distance to (0, 0) is less than or equal to 5.0 / 2. Test your program to cover all cases.) Here are two sample runs.

(İpucu: Eğer bir nokta dikdörtgenin içinde ise bu noktanın (0, 0) noktasına yatay uzaklığı 10 / 2 ‘den küçük ya da eşit olmalıdır ve (0, 0) noktasına dikey uzaklığı 5 / 2 ‘den küçük ya da eşit olmalıdır. Programınızı tüm durumlar için test ediniz.) Aşağıdaki iki örneği inceleyiniz:

                  İki koordinatli bir nokta giriniz:  2  2

                  Nokta (2.0, 2.0) dortgenin icindedir.

                  İki koordinatli bir nokta giriniz:  6  4

                  Nokta (6.0, 4.0) dortgenin icinde degildir.

**3.24 (Game: pick a card) Write a program that simulates picking a card from a deck of 52 cards. Your program should display the rank (Ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King) and suit (Clubs, Diamonds, Hearts, Spades) of the card. Here is a sample run of the program:

(Oyun: kart çekme) 52 kartlık bir desteden kart çekmeyi simüle eden bir program yazınız. Programınız kartın değerini (As, 2, 3, 4, 5, 6, 7, 8, 9, 10, Vale, Kız, Papaz) ve hangi türden (Sinek, Karo, Kupa, Maça) olduğunu gösterecektir. Programın örnek akışını inceleyiniz:

 

                      Sectiginiz kart kupa valesidir.

*3.25 (Geometry: intersecting point) Two points on line 1 are given as (x1, y1) and (x2, y2) and on line 2 as (x3, y3) and (x4, y4), as shown in Figure 3.8a–b.

(Geometri: kesişme noktası) Birinci doğruya ait iki nokta (x1, y1) ve (x2, y2) , ikinci doğruya ait iki nokta (x3, y3) ve (x4, y4), olarak şekil 3.8a–b verilmektedir.

The intersecting point of the two lines can be found by solving the following linear equation:

Aşağıdaki doğrusal denklem çözülerek iki doğrunun kesişim noktası bulunabilir.

This linear equation can be solved using Cramer’s rule (see Programming Exercise 3.3). If the equation has no solutions, the two lines are parallel (Figure 3.8c)

Bu doğrusal denklem Cramer kuralı kullanılarak çözülebilir. (Bakınız; Programlama Soruları 3.3). Eğer denklemin bir çözümü yoksa bu doğru paraleldir. (Şekil 3.8c)

Write a program that prompts the user to enter four points and displays the intersecting point. Here are sample runs:

Kullanıcıdan dört nokta alan ve kesişim noktasını gösteren bir program yazınız. Programın örnek akışını inceleyiniz:

             x1, y1, x2, y2, x3, y3, x4 ve y4’u giriniz:  2  2  5  -1.0  4.0  2.0  -1.0  -2.0

             Kesisme noktasi (2.88889, 1.1111)

             x1, y1, x2, y2, x3, y3, x4 ve y4’u giriniz:  2  2  7  6.0  4.0  2.0  -1.0  -2.0

             İki dogru birbirine paraleldir.

                      Şekil 3.8     İki doğru a ve b’de birbiriyle kesişiyor; c’de birbirine paralel.

3.26 (Use the &&, || and ^ operators) Write a program that prompts the user to enter an integer and determines whether it is divisible by 5 and 6, whether it is divisible by 5 or 6, and whether it is divisible by 5 or 6, but not both. Here is a sample run of this program:

( &&, || ve ^ operatörleri) Kullanıcıdan bir tam sayı alan ve bu sayının 5 ve 6 ‘ya tam bölünen, 5 ya da 6 ’ya tam bölünen ve 5 ya da 6 tam bölünen ama her ikini de aynı anda bölünmeyen koşullarının sonuçlarını gösteren bir program yazınız. Programın örnek akışını inceleyiniz:

                 Bir tam sayi giriniz: 10

                 10, 5 ve 6’ya bolunebilir mi?  yanlis

                 10, 5 ya da 6’ya bolunebilir mi?  dogru

                 10, 5 ya da 6’ya bolunebilir ama her ikisine birden bolunemez mi?  dogru

**3.27 (Geometry: points in triangle?) Suppose a right triangle is placed in a plane as shown below. The right-angle point is placed at (0, 0), and the other two points are placed at (200, 0), and (0, 100). Write a program that prompts the user to enter a point with x- and y-coordinates and determines whether the point is inside the triangle. Here are the sample runs:

(Geometri:  Nokta üçgenin içinde mi?) Bir dik üçgenin aşağıdaki gibi koordinat düzleminde

gösterildiğini düşünelim. Dik açının bulunduğu köşe (0, 0) noktasında ve diğer iki köşe (200, 0) ve (0, 100) noktalarında olsun. Kullanıcıdan bir noktanın x- ve y- koordinatlarını alan ve bu noktanın üçgenin içinde olup olmadığını test eden bir program yazınız. Programın örnek akışını inceleyiniz:

                    Bir noktanin x ve y koordinatlarini giriniz:  100.5  25.5

                    Nokta ucgenin icindedir.

                Bir noktanin x ve y koordinatlarini giriniz:  100.5  50.5

                Nokta ucgenin icinde degildir.

**3.28 (Geometry: two rectangles) Write a program that prompts the user to enter the center x-, y-coordinates, width, and height of two rectangles and determines whether the second rectangle is inside the first or overlaps with the first, as shown in Figure 3.9. Test your program to cover all cases.

(Geometri: iki dikdörtgen) Kullanıcıdan iki dikdörtgenin merkez noktalarını x- y-, enini ve boyunu alan ve Şekil 3.9’da gösterildiği gibi, girilen ikinci dikdörtgenin birinci dikdörtgene göre durumunu gösteren bir program yazınız. Tüm durumlar için programınızı test ediniz.

Here are the sample runs:

Örnek akışını inceleyiniz:

              r1’in merkez x ve y koordinatlarini, enini ve boyunu giriniz:    2.5  4  2.5  43

              r2’nin merkez x ve y koordinatlarini, enini ve boyunu giriniz:  1.5  5  0.5  3

              r2, r1’in icindedir.

              r1’in merkez x ve y koordinatlarini, enini ve boyunu giriniz:    1  2  3  5.5

              r2’nin merkez x ve y koordinatlarini, enini ve boyunu giriniz:  3  4  4.5  5

              r2, r1’le kesisir.

              r1’in merkez x ve y koordinatlarini, enini ve boyunu giriniz:    1  2  3  3

              r2’nin merkez x ve y koordinatlarini, enini ve boyunu giriniz:  40  45  3  2

              r2, r1’le kesismez.

**3.29 (Geometry: two circles) Write a program that prompts the user to enter the center coordinates and radii of two circles and determines whether the second circle is inside the first or overlaps with the first, as shown in Figure 3.10. (Hint: circle2 is inside circle1 if the distance between the two centers 6 = |r1 - r2| and circle2 overlaps circle1 if the distance between the two centers <= r1 + r2. Test your

program to cover all cases.)

(Geometri: iki çember) Kullanıcıdan iki çemberin merkez noktalarını ve yarıçap uzunluğunu alan ve Şekil 3.10’da gösterildiği gibi, girilen ikinci çemberin birinci çembere göre durumunu gösteren bir program yazınız. (İpucu: İki çemberin merkezleri arasındaki mesafe; |r1 - r2| ‘den küçük ya da eşitse ikinci çember birinci çemberin içerisindedir, r1 + r2 ‘den küçük ya da eşitse iki çember kesişmektedir. Tüm durumlar için

 programınızı test ediniz.

Here are the sample runs:

Örnek akışını inceleyiniz:

             cember1’in merkez x ve y koordinatlarini ve yaricap uzunlugunu giriniz:  0.5  5.1  13

             cember2’nin merkez x ve y koordinatlarini ve yaricap uzunlugunu giriniz:  1 1.7  4.5

             cember2, cember1’in icindedir.

 

             cember1’in merkez x ve y koordinatlarini ve yaricap uzunlugunu giriniz:  3.4  5.7  5.5

             cember2’nin merkez x ve y koordinatlarini ve yaricap uzunlugunu giriniz:  6.7  3.5  3

             cember2, cember1’le kesisir.

             cember1’in merkez x ve y koordinatlarini ve yaricap uzunlugunu giriniz:  3.4  5.5  1

             cember2’nin merkez x ve y koordinatlarini ve yaricap uzunlugunu giriniz:  5.5  7.2  1

             cember2, cember1’le kesismez.

   Şekil 3.10            (a) Bir çember diğer çemberin içinde.            (b) Bir çember diğer çemberle kesişiyor.

*3.30 (Current time) Revise Programming Exercise 2.8 to display the hour using a 12-hour clock. Here is a sample run:

(Şu anki saat) Programlama Soruları 2.8 yeniden düzenleyerek şu anki zamanı12 dilimli saat kullanarak gösterin. Örnek akışı inceleyiniz:

                 GMT’ye gore bulunulan zaman dilimini giriniz:   -5

                 Su anki saat 4:50:34

*3.31 (Financials: currency exchange) Write a program that prompts the user to enter the exchange rate from currency in U.S. dollars to Chinese RMB. Prompt the user to enter 0 to convert from U.S. dollars to Chinese RMB and 1 to convert from Chinese RMB and U.S. dollars. Prompt the user to enter the amount in U.S. dollars or Chinese RMB to convert it to Chinese RMB or U.S. dollars, respectively.

(Finans: Döviz kuru) Kullanıcıdan Amerikan doları (USD) ve Çin yuanı (RMB) paritesini alan bir program yazınız. Ekranda 0 girilirse USD’den RMB’ye, 1 girilirse RMB’den USD’ye dönüşüm yapılacağını gösterin. Kullanıcı dönüşüm seçimini yaptıktan sonra miktarı girmesini isteyin ve yaptığı seçime göre USD ->RMB ya da RMB -> USD karşılığını ekranda gösteriniz.

Here are the sample runs:

Programın örnek akışını inceleyiniz:

                    Dolardan RMB’ye doviz kurunu giriniz:  6.81

                    Dolari RMB’ye cevirmek icin 0; tersini yapmak icin 1 giriniz:  0

                    Dolar miktarini yaziniz:  100

                    $100.0, 681.0 Yuan’dir.

                    Dolardan RMB’ye doviz kurunu giriniz:  6.81

                    Dolari RMB’ye cevirmek icin 0; tersini yapmak icin 1 giriniz:  1

                    RMB miktarini yaziniz:  10000

                    10000.0 Yuan, $1468.43’dir.

                    Dolardan RMB’ye doviz kurunu giriniz:  6.81

                    Dolari RMB’ye cevirmek icin 0; tersini yapmak icin 1 giriniz:  5

                    Yanlis giris yaptiniz.

Not (Kitap hatası): 2. akışın 2. satırında 5 girilmiş ama aslında 1 girilmek istenmiştir. Türkçe çeviride düzeltildi.

*3.32 (Geometry: point position) Given a directed line from point p0(x0, y0) to p1(x1, y1), you can use the following condition to decide whether a point p2(x2, y2) is on the left of the line, on the right, or on the same line (see Figure 3.11):

(Geometri: Nokta pozisyonu) p2(x2, y2)noktasının; p0(x0, y0), p1(x1,y1) noktalarından geçen bir doğrunun sağında mı, solunda mı ya da üzerinde mi olup olmadığına aşağıdaki koşulları kullanarak karar verebilirsiniz.

Write a program that prompts the user to enter the three points for p0, p1, and p2 and displays whether p2 is on the left of the line from p0 to p1, on the right, or on the same line.

Kullanıcıdan p0, p1, p2 gibi üç nokta alan ve p2 noktasının p0, p1 doğrusuna göre konumunu gösteren bir program yazınız.

Here are some sample runs:

Programın örnek akışını inceleyiniz:

           p0, p1 ve p2 icin uc nokta giriniz:  4.4  2  6.5  9.5  -5  4

          (-5.0, 4.0), (4.4, 2.0) ile (6.5, 9.5) arasinda olan dogrunun sol tarafinda bulunur.

          p0, p1 ve p2 icin uc nokta giriniz:  1  1  5  5  2  2

          (2.0, 2.0), (1.0, 1.0) ile (5.0, 5.0) arasinda olan dogrunun ustunde bulunur.

          p0, p1 ve p2 icin uc nokta giriniz:  3.4  2  6.5  9.5  5  2.5

          (-5.0, 2.5), (3.4, 2.0) ile (6.5, 9.5) arasinda olan dogrunun sag tarafinda bulunur.

  Şekil 3.11              (a) p2, doğrunun solundadır.           (b) p2, doğrunun sağındadır.             (c) p2, aynı doğrudadır.

*3.33 (Financial: compare costs) Suppose you shop for rice in two different packages. You would like to write a program to compare the cost. The program prompts the user to enter the weight and price of the each package and displays the one with the better price.

(Finans: Fiyat karşılaştırma) İki farklı pirinç markası arasında karar vermeniz gerektiğini varsayalım. İkisinin de maliyetlerini karşılaştırmak için bir program yazmak istediniz. Programınız kullanıcıdan ağırlık ve fiyatını alacak ve daha ucuz olanın markasını gösterecektir.

Here is a sample run:

Örnek akışı inceleyiniz:

                   Paket1 icin agirlik ve fiyat giriniz: 50  24.59

                   Paket2 icin agirlik ve fiyat giriniz: 25  11.99

                   Paket2’nin fiyati daha uygundur.

                   Paket1 icin agirlik ve fiyat giriniz: 50  25

                   Paket2 icin agirlik ve fiyat giriniz: 25  12.5

                   İki paketin fiyatlari aynidir.

*3.34 (Geometry: point on line segment) Programming Exercise 3.32 shows how to test whether a point is on an unbounded line. Revise Programming Exercise 3.32 to test whether a point is on a line segment. Write a program that prompts the user to enter the three points for p0, p1, and p2 and displays whether p2 is on the line segment from p0 to p1.

(Geometri: Doğru parçası) Programlama Soruları 3.32 bir noktanın bir doğruya göre durumunu gösterir. Programlama Soruları 3.32 ’yi yeniden düzenleyerek bir noktasının doğru parçasına göre durumunu gösterin. Kullanıcıdan p0, p1, p2 üç nokta alan ve p2 noktasının p0’dan p1’e çizilen doğru parçasına göre durumunu gösteren bir program yazınız.

Here are some sample runs:

Programın örnek akışını inceleyiniz:

          p0, p1 ve p2 icin uc nokta giriniz:  1  1  2.5  2.5  1.5  1.5

          (1.5, 1.5), (1.0, 1.0) ile (2.5, 2.5) arasinda olan dogru parcasindadir.

          p0, p1 ve p2 icin uc nokta giriniz:  1  1  2  2  3.5  3.5

          (3.5, 3.5), (1.0, 1.0) ile (2.0, 2.0) arasinda olan dogru parcasinda degildir.