Section 4 Programming Exercises

Bölüm 4 Sorular

4.1 (Geometry: area of a pentagon) Write a program that prompts the user to enter the length from the center of a pentagon to a vertex and computes the area of the pentagon, as shown in the following figure.

(Geometri: beşgenin alanı) Aşağıda bulunan şekildeki gibi kullanıcıdan beşgenin merkezinden köşesine kadar olan uzunluğu alarak, alanını hesaplayan bir program yazınız.

The formula for computing the area of a pentagon is

Beşgenin alanını hesaplamak için kullanılacak formül:

where s is the length of a side. The side can be computed using the formula

 s beşgenin kenar uzunluğunu gösterir. Kenar uzunluğu aşağıdaki formül kullanılarak hesaplanabilir.

where r is the length from the center of a pentagon to a vertex. Round up two digits after the decimal point. Here is a sample run:

 r beşgenin merkezinin köşesine olan uzaklığını gösterir. Ondalık kısmı iki basamak olacak şekilde yuvarlayınız. Örnek akışı inceleyiniz:

Besgenin merkezinden kosesine kadar olan uzunlugu giriniz:  5.5

Besgenin alani 71.92’dir.

*4.2 (Geometry: great circle distance) The great circle distance is the distance between two points on the surface of a sphere. Let (x1, y1) and (x2, y2) be the geographical latitude and longitude of two points. The great circle distance between the two points can be computed using the following formula:

(Geometri: en iyi çember mesafesi) En iyi çember mesafesi, küre yüzeyinde bulunan iki nokta arasındaki uzaklığa denir. (x1, y1) ve (x2, y2) coğrafi enlem ve boylam değerlerini gösteren iki nokta olsun. İki nokta arasındaki en iyi çember mesafesi aşağıdaki formül kullanılarak hesaplanabilir.

d = radius * arccos(sin(x1) * sin(x2) + cos(x1) * cos(x2) * cos(y1 - y2))

Write a program that prompts the user to enter the latitude and longitude of two points on the earth in degrees and displays its great circle distance. The average earth radius is 6,371.01 km. Note that you need to convert the degrees into radians using the Math.toRadians method since the Java trigonometric methods use radians. The latitude and longitude degrees in the formula are for north and west. Use negative to indicate south and east degrees.

Kullanıcıdan derece olarak dünya üzerindeki iki noktanın enlem ve boylam bilgisini alan ve bu iki nokta arasında mesafeyi gösteren bir program yazınız. Dünyanın yarıçapı yaklaşık, 6,371.01 km’dir. Java’nın trigonometri fonksiyonları radyan cinsinden hesaplama yaptığı için Math.toRadians  metodunu kullanarak dereceyi radyana çevirmelisiniz. Formüldeki enlem ve boylam dereceleri kuzey ve batı içindir. Güney ve doğu için negatif değerler kullanınız.

Here is a sample run:

Örnek akışı inceleyiniz:

Nokta1’in enlem ve boylamini derece olarak giriniz:  39.55, -116.25

Nokta2’nin enlem ve boylamini derece olarak giriniz:  41.5, 87.37

İki nokta arasindaki mesafe 10691.79183231593 km’dir.

*4.3 (Geography: estimate areas) Find the GPS locations for Atlanta, Georgia; Orlando, Florida; Savannah, Georgia; and Charlotte, North Carolina from www.gps-data-team.com/map/ and compute the estimated area enclosed by these four cities. (Hint: Use the formula in Programming Exercise 4.2 to compute the distance between two cities. Divide the polygon into two triangles and use the formula in Programming Exercise 2.19 to compute the area of a triangle.)

(Coğrafya: alan tahmini) www.gps-data-team.com/map/ adresinden Atlanta, Georgia; Orlando, Florida; Savannah, Georgia; ve Charlotte, North Carolina’nın GPS koordinatlarını bulunuz ve bu dört şehrin yaklaşık olarak kapladığı alanı hesaplayınız. (İpucu: İki şehir arasındaki mesafeyi hesaplamak için Programlama Soruları 4.2 ‘deki formülü kullanabilirsiniz. Oluşan çokgeni iki üçgene ayırınız ve Programlama Soruları 2.19’daki formülü kullanarak üçgenlerin alanlarını hesaplayınız.)

4.4 (Geometry: area of a hexagon) The area of a hexagon can be computed using the following formula (s is the length of a side):

(Geometri: altıgenin alanı) Altıgenin alanı aşağıdaki formül kullanılarak hesaplanabilir.(s kenar uzunluğu):

Write a program that prompts the user to enter the side of a hexagon and displays its area. Here is a sample run:

Kullanıcıdan altıgenin kenar uzunluğunu alan ve alanını gösteren bir program yazınız. Örnek akışı inceleyiniz:

Kenar uzunlugunu giriniz: 5.5

Altigenin alani 78.59’dur.

*4.5 (Geometry: area of a regular polygon) A regular polygon is an n-sided polygon in which all sides are of the same length and all angles have the same degree (i.e., the polygon is both equilateral and equiangular). The formula for computing the area of a regular polygon is

(Geometri: Düzgün çokgenin alanı) n kenardan oluşan, her bir kenar uzunluğu ve açıları aynı olan çokgene düzgün çokgen denir. (Düzgün çokgen eşkenar ve eş açılıdır). Düzgün çokgenin alanını hesaplamak için kullanılacak formül:

Here, s is the length of a side. Write a program that prompts the user to enter the number of sides and their length of a regular polygon and displays its area. Here is a sample run:

Formülde  s altıgenin kenar uzunluğunu gösterir. Kullanıcıdan düzgün çokgenin kenar sayısını ve uzunluğunu alan ve alanını gösteren bir program yazınız. Örnek akışı inceleyiniz:

Kenar sayisini giriniz: 5

Kenar uzunlugunu giriniz: 6.5

Cokgenin alani 74.69017017488385

*4.6 (Random points on a circle) Write a program that generates three random points on a circle centered at (0, 0) with radius 40 and display three angles in a triangle formed by these three points, as shown in Figure 4.7a. (Hint: Generate a random angle a in radians between 0 and 2p, as shown in Figure 4.7b and the point determined by this angle is (r*cos(a), r*sin(a)).)

(Çember üzerinde rastgele noktalar) Merkezi (0, 0) ve yarıçapı 40 olan bir çember üzerinde üç tane rastgele nokta üretiniz ve Şekil 4.7a’daki gibi bu noktaların oluşturduğu üçgenin açılarını gösteriniz. (İpucu: Şekil 4.7b ‘de gösterildiği gibi 0 - 2 pi aralığında radyan cinsinden rastgele bir açı üretiniz ve bu açıya denk gelen noktayı  (r*cos(a), r*sin(a)) formülü ile hesaplayınız.

FIGURE 4.7 (a) A triangle is formed from three random points on the circle. (b) A random point on the circle can be generated using a random angle a. (c) A pentagon is centered at (0, 0) with one point at the 0 o’clock position.

ŞEKİL 4.7 (a)Üçgen çember üzerinde alınan üç rastgele noktadan oluşmaktadır. (b) Rastgele üretilen a açısı kullanılarak çember üzerinde rastgele bir nokta üretilebilir. (c) (0, 0) merkezli bir beşgen ve bir köşe noktası saat 12 (0) pozisyonunda.

*4.7 (Corner point coordinates) Suppose a pentagon is centered at (0, 0) with one point at the 0 o’clock position, as shown in Figure 4.7c. Write a program that prompts the user to enter the radius of the bounding circle of a pentagon and displays the coordinates of the five corner points on the pentagon. Here is a sample run:

(Köşe noktası koordinatları) Beşgenin, merkezinin (0, 0) ve Şekil 4.7c gösterildiği gibi bir köşe noktasının saat 12 (0) pozisyonunda olduğunu varsayalım. Kullanıcıdan beşgenin çevrel çemberin yarıçapını alan ve beş köşe noktasının  da koordinatlarını gösteren bir program yazınız. Örnek akışı inceleyiniz:

Cevrel cemberin yaricapini giriniz:  100

Besgenin bes kose noktasinin koordinatlari

(95.1057,  30.9017)

(0.000132679,  100)

(-95.1056,  30.9019)

(-58.7788,  -80.9015)

(58.7782,  -80.902)

*4.8 (Find the character of an ASCII code) Write a program that receives an ASCII code (an integer between 0 and 127) and displays its character. Here is a sample run:

(ASCII kodun karakter karşılığı) ASCII kodun (0 ve 127 aralığında bir tam sayı) karakter karşılığını gösteren bir program yazınız. Örnek akışı inceleyiniz:

Bir ASCII kodu giriniz:  69

69 sayılı ASCII kodunun karakter karsiligi E’dir.

*4.9 (Find the Unicode of a character) Write a program that receives a character and displays its Unicode. Here is a sample run:

(Karakterin Unicode karşılığı) Bir karakterin, Unicode karşılığını gösteren bir program yazınız. Örnek akışı inceleyiniz:

Bir karakter giriniz:  E

E karakterinin Unicode karsiligi 69’dur.

*4.10 (Guess birthday) Rewrite Listing 4.3, GuessBirthday.java, to prompt the user to enter the character Y for Yes and N for No rather than entering 1 for Yes and 0 for No.

(Doğum günü tahmini) Madde 4.3, GuessBirthday.java, dosyasında Evet için 1 ve Hayır için 0 giriliyordu. Kodu, Evet için Y ve Hayır N girilecek şekilde yeniden düzenleyiniz.

*4.11 (Decimal to hex) Write a program that prompts the user to enter an integer between 0 and 15 and displays its corresponding hex number. Here are some sample runs:

 (Onluk sayıyı, onaltılık sayı sistemine dönüştürme) Kullanıcıdan 0 ve 15 aralığında bir tam sayı alan ve bunun onaltılık (hexadecimal) sayı sisteminde karşılığını gösteren bir program yazınız. Programın örnek akışını inceleyiniz:

0 - 15 arasinda bir sayi giriniz:  11

Girilen sayinin onaltilik sistemde karsiligi B

0 - 15 arasinda bir sayi giriniz:  5

Girilen sayinin onaltilik sistemde karsiligi  5

0 - 15 arasinda bir sayi giriniz:  31

31 gecersiz bir giris yaptiniz.

4.12 (Hex to binary) Write a program that prompts the user to enter a hex digit and displays its corresponding binary number. Here is a sample run:

(Onaltılık sayıyı ikilik sayıya dönüştürme) Kullanıcıdan onaltılık sayı sisteminde bir sayı alan ve bunun ikilik sayı sisteminde karşılığını gösteren bir program yazınız. Örnek akışı inceleyiniz:

Onaltilik sistemde bir deger giriniz: B

Girilen degerin ikilik sistemde karsiligi: 1011

Onaltilik sistemde bir deger giriniz: G

G gecersiz bir giris.

*4.13 (Vowel or consonant?) Write a program that prompts the user to enter a letter and check whether the letter is a vowel or consonant. Here is a sample run:

(Sesli harf mi, sesiz harf mi?) Kullanıcıdan bir harf girmesini isteyen ve bu harfin sesli harf mi sessiz harf mi olduğunu gösteren bir program yazınız. Örnek akışı inceleyiniz:

Bir harf giriniz: B

B sessiz harftir.

Bir harf giriniz: a

a sesli harftir.

Bir harf giriniz: #

# gecersiz bir giris

Not (Kitap hatası): 2. Ve 3. akışta yanlışlıkla grade kelimesi kullanılmış. Türkçe çeviride düzeltildi.

*4.14 (Convert letter grade to number) Write a program that prompts the user to enter a letter grade A, B, C, D, or F and displays its corresponding numeric value 4, 3, 2, 1, or 0. Here is a sample run:

(Harfsel notun, sayısal karşılığı) Kullanıcının harf olarak (A, B, C, D, ya da F) girdiği notun sayısal (4, 3, 2, 1, ya da 0) karşılığını gösteren bir program yazınız. Örnek akışı inceleyiniz:

Notu harf olarak giriniz: B

B notunun sayisal karsiligi 3

Notu harf olarak giriniz: T

T gecersiz bir giris

*4.15 (Phone key pads) The international standard letter/number mapping found on the telephone is shown below:

(Telefon tuş takımı) Telefon tuşlarında kullanılan uluslararası standart harf/sayı karşılıkları aşağıda gösterilmiştir.

Write a program that prompts the user to enter a letter and displays its corresponding number.

Kullanıcıdan bir harf alan ve ona karşılık gelen rakamı gösteren bir program yazınız.

Bir harf giriniz: A

Karsilik gelen rakam 2

Bir harf giriniz: a

Karsilik gelen rakam 2

Bir harf giriniz: +

+ gecersiz bir giris

4.16 (Random character) Write a program that displays a random uppercase letter using the Math.random() method.

(Rastgele karakter) Math.random() metodunu kullanarak bir tane rastgele büyük harf üretip gösteren bir program yazınız.

*4.17 (Days of a month) Write a program that prompts the user to enter a year and the first three letters of a month name (with the first letter in uppercase) and displays the number of days in the month. Here is a sample run:

(Bir aydaki gün sayısı) Kullanıcıdan yıl ve ayın ilk üç harfini (ilk harf büyük, diğerleri küçük harf) alan ve girilen aydaki gün sayısını gösteren bir program yazınız. Örnek akışı inceleyiniz:

Bir yil giriniz:  2001

Bir ay giriniz:  Oca

Ocak 2001’de 31 gun vardir.

Bir yil giriniz:  2016

Bir ay giriniz:  Sub

Subat 2016’da 29 gun vardir.

Not (Kitap hatası): 2. Akışta Feb yerine Jan yazılmış. Türkçe çeviride düzeltildi.

*4.18 (Student major and status) Write a program that prompts the user to enter two characters and displays the major and status represented in the characters. The first character indicates the major and the second is number character 1, 2, 3, 4, which indicates whether a student is a freshman, sophomore, junior, or senior. Suppose the following characters are used to denote the majors:

(Bölüm ve sınıf) Kullanıcıdan iki karakter alan ve buna karşılık gelen bölüm ile sınıfı gösteren bir program yazınız. İlk karakter bölümü temsil eder, ikinci karakter 1, 2, 3, 4 rakamlarından biridir ve sırasıyla 1. Sınıf, 2. Sınıf, 3.Sınıf ve 4. Sınıfı temsil eder. Aşağıdaki girilen karakterin karşılığı olan bölümler bulunmaktadır.

M: Mathematics

C: Computer Science

I: Information Technology

M: Matematik

C: Bilgisayar Bilimleri

I: Bilgi Teknolojileri

Here is a sample run:

Örnek akışı inceleyiniz:

İki karakter giriniz: M1

Matematik 1. Sinif

İki karakter giriniz: C3

Bilgisayar Bilimleri 3. Sinif

İki karakter giriniz: T3

Gecersiz giris

4.19 (Business: check ISBN-10) Rewrite the Programming Exercise 3.9 by entering the ISBN number as a string.

(İş: ISBN-10 kontrolü) Programlama Soruları 3.9’u ISBN numarasını string olarak alacak şekilde yeniden düzenleyiniz.

4.20 (Process a string) Write a program that prompts the user to enter a string and displays its length and its first character.

(string işleme) Kullanıcıdan bir string alan ve bu stringin uzunluğunu ve ilk karakterini gösteren bir program yazınız.

*4.21 (Check SSN) Write a program that prompts the user to enter a Social Security number in the format DDD-DD-DDDD, where D is a digit. Your program should check whether the input is valid. Here are sample runs:

(SSN kontrolü) Kullanıcıdan sosyal sigorta numarasını, RRR-RR-RRRR (R bir rakam gösterir) biçiminde alan bir program yazınız. Programınız girdinin biçiminin doğru olup olmadığını kontrol edecek. Programın örnek akışını inceleyiniz:

Bir SSN giriniz: 232-23-5435

 232-23-5435 gecerli bir sosyal sigorta numarasidir.

Bir SSN giriniz: 23-23-5435

 23-23-5435 gecersiz bir sosyal sigorta numarasidir.

4.22 (Check substring) Write a program that prompts the user to enter two strings and reports whether the second string is a substring of the first string.

 (substring mi?) Kullanıcıdan iki string alan ve girilen ikinci stringin birincinin substringi olup olmadığını kontrol eden bir program yazınız.

S1 stringini giriniz:  ABCD

S2 stringini giriniz:  BC

BC, ABCD’nin bir substring’idir.

S1 stringini giriniz:  ABCD

S2 stringini giriniz:  BDC

BDC, ABCD’nin bir substring’i degildir.

*4.23 (Financial application: payroll) Write a program that reads the following information and prints a payroll statement:

(Finans uygulaması: maaş bordrosu) Aşağıdaki bilgileri alan ve maaş bordrosunu gösteren bir program yazınız.

Employee’s name (e.g., Smith)

Number of hours worked in a week (e.g., 10)

Hourly pay rate (e.g., 9.75)

Federal tax withholding rate (e.g., 20%)

State tax withholding rate (e.g., 9%)

Çalışan Adı (ör; Onur)

Haftalık çalışma saati (ör 10)

Saat ücreti (ör; 9.75)

Gelir vergisi oranı (ör; %20)

Stopaj vergisi oranı (ör; %9)

A sample run is shown below:

Aşağıda örnek akış gösterilmiştir:

Calisanın adini giriniz: Smith

Haftalik calisma saatini giriniz: 10

Saat ucretini giriniz: 9.75

Gelir vergisi oranini giriniz: 0.20

Stopaj vergisi oranini giriniz: 0.09

Calisanin adi: Smith

Haftalik calisma saati: 10

Saat ucreti:$ 9.75

Brut ucret: $97.5

İndirimler:

      Gelir vergisi: (%20.0): $19.5

      Stopaj vergisi (%9.0):  $8.77

      Toplam indirim: $28.27

Net ucret: $69.22

*4.24 (Order three cities) Write a program that prompts the user to enter three cities and displays them in ascending order. Here is a sample run:

(Şehirleri sıralama) Kullanıcıdan üç şehir girmesini isteyen ve bu şehirleri alfabetik olarak sıralayıp gösteren bir program yazınız. Örnek akışı inceleyiniz:

Birinci sehri giriniz: Chicago

İkinci sehri giriniz: Los Angeles

Ucuncu sehri giriniz: Atlanta

Uc sehrin alfabetik siralamasi Atlanta Chicago Los Angeles

*4.25 (Generate vehicle plate numbers) Assume a vehicle plate number consists of three uppercase letters followed by four digits. Write a program to generate a plate number.

(Taşıt plakası üretme) Taşıt plakalarının 3 büyük harften ve 4 rakamdan oluştuğunu varsayalım. Taşıt plakası üreten bir program yazınız.

*4.26 (Financial application: monetary units) Rewrite Listing 2.10, ComputeChange. java, to fix the possible loss of accuracy when converting a float value to an int value. Read the input as a string such as "11.56". Your program should extract the dollar amount before the decimal point and the cents after the decimal amount using the indexOf and substring methods.

(Finans uygulaması: para birimleri) Madde 2.10 ComputeChange.java’yı float türünden int türüne olan dönüşümlerde değer kaybı olmadan hesaplayacak biçimde yeniden yazınız. “11.56” gibi bir girişi string olarak alınız. Noktanın solunda bulunan dolar kısmını ve noktanın sağında bulunan cent kısmını indexOf ve substring metodlarını kullanarak ayırabilirsiniz.