Section 5 Programming Exercises

Bölüm 5 Sorular

*5.1 (Count positive and negative numbers and compute the average of numbers) Write a program that reads an unspecified number of integers, determines how many positive and negative values have been read, and computes the total and average of the input values (not counting zeros). Your program ends with the input 0. Display the average as a floating-point number. Here is a sample run:

(Negatif ve pozitif sayıları sayma ve sayıların ortalamasını hesaplama)  Kullanıcının istediği kadar tam sayı girebileceği, girilen sayıların kaç tanesi negatif, kaç tanesi pozitif , toplamı ve ortalamasını hesaplayan bir program yazınız . Eğer 0 değeri girilirse program sonlanacaktır. Ortalama değerini gerçel sayı olarak gösteriniz. Örnek akışı inceleyiniz:

                    Bir tam sayi giriniz. Giris, 0 girilirse sonlanir: 1   2  -1  3  0

                    Girilen pozitif sayilarin adedi:  3

                    Girilen negatif sayilarin adedi:  1

                    Sayilarin toplami:  5.0

                    Sayilarin ortalamasi: 1.25

                    Bir tam sayi giriniz. Giris, 0 girilirse sonlanir: 0

                    0 haric hicbir sayi girilmemistir.

5.2 (Repeat additions) Listing 5.4, SubtractionQuizLoop.java, generates five random subtraction questions. Revise the program to generate ten random addition questions for two integers between 1 and 15. Display the correct count and test time.

(Toplama) Madde 5.4 SubtractionQuizLoop.java beş adet rastgele çıkarma sorusu üretmektedir. Programı tekrar düzenleyerek 1 ve 15 tam sayıları arasında, on tane rastgele toplama sorusu oluşturun. Toplam sayıyı ve test zamanını gösterin.

5.3 (Conversion from kilograms to pounds) Write a program that displays the following table (note that 1 kilogram is 2.2 pounds):

(Kilogram’dan pound’a dönüştürme) Aşağıdaki tabloyu oluşturan bir program yazınız. (1 kilogram 2.2 pound’dur.)

Kilograms         Pounds
1                 2.2
3                 6.6
...
197                 433.4
199                 437.8

5.4 (Conversion from miles to kilometers) Write a program that displays the following table (note that 1 mile is 1.609 kilometers):

(Mil’den kilometre’ye dönüştürme) Aşağıdaki tabloyu oluşturan bir program yazınız. (1 mil 1,609 kilometredir)


Miles                 Kilometers
1                 1.609
2                 3.218
...
9                 14.481
10                 16.090

5.5 (Conversion from kilograms to pounds and pounds to kilograms) Write a program that displays the following two tables side by side:

(Kilogramdan pound’a ve pound’dan kilograma dönüştürme) Aşağıdaki iki tabloyu yan yana gösteren bir program yazınız.


Kilograms         Pounds                 |         Pounds                 Kilograms
1                 2.2                 |         20                 9.09
3                 6.6                 |         25                 11.36
...
197                 433.4                 |         510                 231.82
199                 437.8                 |         515                 234.09

5.6 (Conversion from miles to kilometers) Write a program that displays the following two tables side by side:

(Milden kilometreye dönüştürme) Aşağıdaki iki tabloyu yan yana gösteren bir program yazınız.

Miles                 Kilometers         |         Kilometers         Miles
1                 1.609                 |         20                 12.430
2                 3.218                 |         25                 15.538
...
9                 14.481                 |         60                 37.290
10                 16.090                 |         65                 40.398

**5.7 (Financial application: compute future tuition) Suppose that the tuition for a university is $10,000 this year and increases 5% every year. In one year, the tuition will be $10,500. Write a program that computes the tuition in ten years and the total cost of four years’ worth of tuition after the tenth year.

 (Finans uygulaması: Okul ücretini hesaplama) Bu yılın okul ücretinin 10000 $ olduğunu ve her yıl %5 arttığını varsayalım. Bir sonraki yıl okul ücreti 10 500$ olacaktır. 10 yılın okul ücretini ve 10 uncu yıldan sonraki 4 yılın toplam ücretini hesaplayan bir program yazınız.

5.8 (Find the highest score) Write a program that prompts the user to enter the number of students and each student’s name and score, and finally displays the name of the student with the highest score.

(En yüksek puanı bulma.) Kullanıcıdan toplam öğrenci sayısını  ve her öğrencinin adı ve puanını alan, bunun ardından en yüksek puana sahip öğrencinin adını gösteren bir program yazınız.

*5.9 (Find the two highest scores) Write a program that prompts the user to enter the number of students and each student’s name and score, and finally displays the student with the highest score and the student with the second-highest score.

(En yüksek iki puanı bulma) Kullanıcıdan toplam öğrenci sayısını  ve her öğrencinin adı ve puanını alan, bunun ardından en yüksek ve en yüksek ikinci puana sahip öğrencilerin adını ve puanını gösteren bir program yazınız.

5.10 (Find numbers divisible by 5 and 6) Write a program that displays all the numbers from 100 to 1,000, ten per line, that are divisible by 5 and 6. Numbers are separated by exactly one space.

(5 ve 6’ya bölünebilen sayıları bulma) 100’den 1000’e kadar olan sayılardan 5 ve 6’ya tam olarak bölünebilen sayıları her satırda 10 sayı olacak ve sayılar arasında birer boşluk olacak şekilde gösteren bir program yazınız.

5.11 (Find numbers divisible by 5 or 6, but not both) Write a program that displays all the numbers from 100 to 200, ten per line, that are divisible by 5 or 6, but not both. Numbers are separated by exactly one space.

(5 ya da 6’ya tam bölünen ancak her ikisine birden bölünmeyen sayıları bulma) 100’sen 200’e kadar  5 ya da 6’ya tam bölünen ancak her ikisine birden tam bölünmeyen sayıları her satırda 10 sayı olacak şekilde gösteren bir program yazınız. Sonuçlar arasında sadece bir boşluk olacak şekilde gösteriniz.

5.12 (Find the smallest n such that n2 > 12,000) Use a while loop to find the smallest integer n such that n2 is greater than 12,000.

(n2 > 12000 olduğu durumda en küçük n’i bulma) n2 ‘nin  12000’den büyük olduğu en küçük tam sayı n’i  while döngüsü kullanarak bulunuz.

5.13 (Find the largest n such that n3 < 12,000) Use a while loop to find the largest integer n such that n3 is less than 12,000.

(n3 < 12000 olduğu durumda en büyük n’i bulma) n3ün 12000’den küçük olduğu en büyük tam sayı n’i while döngüsü kullanarak bulunuz.

*5.14 (Compute the greatest common divisor) Another solution for Listing 5.9 to find the greatest common divisor of two integers n1 and n2 is as follows: First find d to be the minimum of n1 and n2, then check whether d, d-1, d-2, ..., 2, or 1 is a divisor for both n1 and n2 in this order. The first such common divisor is the greatest common divisor for n1 and n2. Write a program that prompts the user to enter two positive integers and displays the gcd.

(En büyük ortak böleni hesaplama) Madde 5.9’da n1 ve n2 tam sayılarının en büyük ortak bölenini bulmak için burada şu şekilde farklı bir çözüm sunulmuştur: Öncelikle n1 ve n2 ‘nin minimumu olan d ‘yi bulunuz. d, d-1, d-2, ..., 2, veya 1’in, n1 ve n2’nin her ikisi için de sırasıyla bölen olup olmadığını kontrol ediniz. n1 ve n2 için ilk ortak bölen en büyük ortak bölendir. Kullanıcıdan iki pozitif tam sayı alan ve en büyük ortak böleni gösteren bir program yazınız.

*5.15 (Display the ASCII character table) Write a program that prints the characters in the ASCII character table from ! to ~. Display ten characters per line. The ASCII table is shown in Appendix B. Characters are separated by exactly one space.

(ASCII karakter tablosunu gösterme) ASCII karakter tablosunda !’den ~ ‘ye kadar olan karakterleri gösteren bir program yazınız. Her satırda on karakter gösteriniz. Ek B’de ASCII tablosu verilmiştir. Karakterler arasında tam olarak bir boşluk bulunmalıdır.

*5.16 (Find the factors of an integer) Write a program that reads an integer and displays all its smallest factors in increasing order. For example, if the input integer is 120, the output should be as follows: 2, 2, 2, 3, 5.

(Bir tam sayının çarpanlarını bulma) Bir tam sayıyı alan ve tüm en küçük çarpanlarını küçükten büyüğe doğru gösteren bir program yazınız. Örneğin, girdi tam sayı 120 ise çıktı şöyle olmalıdır: 2, 2, 2, 3, 5.

**5.17 (Display pyramid) Write a program that prompts the user to enter an integer from 1 to 15 and displays a pyramid, as shown in the following sample run:

(Piramit oluşturma) Kullanıcıdan 1 ve 15 arasında  bir sayı girmesini isteyen ve aşağıda örneği verilen piramidi oluşturan bir program yazınız.

                    Satir sayisini giriniz:  7

                                                                             1                                                                      

                                                                       2    1    2                                                                        

                                                                 3    2    1    2    3

                                                           4    3    2    1    2    3    4

                                                     5    4    3    2    1    2    3    4    5

                                               6    5    4    3    2    1    2    3    4    5    6

                                         7    6    5    4    3    2    1    2    3    4    5    6    7  

*5.18 (Display four patterns using loops) Use nested loops that display the following patterns in four separate programs:

(Döngülerle aşağıdaki 4 deseni oluşturunuz) İç içe döngüleri kullanarak 4 farklı programla aşağıdaki desenleri oluşturunuz.

**5.19 (Display numbers in a pyramid pattern) Write a nested for loop that prints the following output:

 (Piramit deseninde sayıları gösterme) İç içe for döngüsü kullanarak aşağıdaki çıktıyı oluşturun.

*5.20 (Display prime numbers between 2 and 1,000) Modify Listing 5.15 to display all the prime numbers between 2 and 1,000, inclusive. Display eight prime numbers per line. Numbers are separated by exactly one space.

(2 ve 1000 arasındaki asal sayıları gösterme) Madde 5.15’i yeniden düzenleyerek 2 ve 1000 (bu sayılar da dahil) arasındaki tüm asal sayıları gösteriniz. Her satırda sekiz asal sayı gösteriniz. Sonuçlar arasında sadece bir boşluk olacak şekilde gösteriniz.

**5.21 (Financial application: compare loans with various interest rates) Write a program that lets the user enter the loan amount and loan period in number of years and displays the monthly and total payments for each interest rate starting from 5% to 8%, with an increment of 1/8. Here is a sample run:

 (Finans uygulaması: farklı faiz oranları için kredi miktarını karşılaştırma) Kullanıcıdan kredi miktarını ve yıl olarak kredi vadesini alıp, %5’ten %8’e 1/8 artım ile her bir faiz oranı için aylık ve toplam ödemeyi gösteren bir program yazınız. Örnek akışı inceleyiniz:

                      Kredi miktari: 10000

                      Kac yil:  5

                      Faiz Orani                     Aylık Odeme                         Toplam Odeme

                      %5.000                          188.71                                   11322.74

                      %5.125                          189.29                                   11357.13

                      %5.250                          189.86                                   11391.59

                      . . .

                      %7.875                          202.17                                   12129.97

                      %8.000                          202.76                                   12165.84

For the formula to compute monthly payment, see Listing 2.9, ComputeLoan.java.

Aylık ödemeyi hesaplama formülü için Madde 2.9’a bakın, ComputeLoan.java

**5.22 (Financial application: loan amortization schedule) The monthly payment for a given loan pays the principal and the interest. The monthly interest is computed by multiplying the monthly interest rate and the balance (the remaining principal). The principal paid for the month is therefore the monthly payment minus the monthly interest. Write a program that lets the user enter the loan amount, number of years, and interest rate and displays the amortization schedule for the loan. Here is a sample run:

(Finans uygulaması:  kredi amortisman planı) Verilen kredi için aylık ödeme, anapara ve faizin toplamıdır. Aylık faiz değeri,  aylık faiz oranı ve bakiyenin (kalan anapara) çarpımı ile hesaplanır. Aylık anapara ödemesi ise aylık ödeme eksi aylık faizdir. Kullanıcıdan kredi miktarını, yılı, faiz oranını alan ve kredi amortisman planını gösteren bir program yazınız. Örnek akışı inceleyiniz:

                      Kredi miktari: 10000

                      Kac yil:  1

                      Yillik faiz orani:  7

                      Aylik odeme: 865.26

                      Toplam odeme: 10383.21

                      Odeme                   Faiz                   Anapara                    Bakiye

                      1                            58.33                  806.93                      9193.07

                      2                            53.62                  811.64                      8381.43

                      . . .

                      11                           10.0                   855.26                      860.27

                      12                             5.01                 860.25                          0.01

Note
The balance after the last payment may not be zero. If so, the last payment should be the normal monthly payment plus the final balance.

Not:
Son ödemeden sonra bakiye sıfır olmamalı. Sıfırsa, son ödeme normal aylık ödeme artı son bakiye olmalıdır.

Hint: Write a loop to display the table. Since the monthly payment is the same for each month, it should be computed before the loop. The balance is initially the loan amount. For each iteration in the loop, compute the interest and principal, and update the balance. The loop may look like this:

İpucu: Tabloyu gösteren bir döngü yazınız. Aylık ödeme her ay için aynı olacağından döngüden önce hesaplanmalıdır. Bakiye ilk başta kredi miktarıdır. Döngüdeki her bir iterasyon için faiz ve anaparayı hesaplayın ve bakiyeyi güncelleyin. Döngü aşağıdaki gibi görünmelidir:

for (i = 1; i <= numberOfYears * 12; i++) {
       interest = monthlyInterestRate * balance;
       principal = monthlyPayment - interest;
       balance = balance - principal;
       System.out.println(i +
"\t\t" + interest
       +
"\t\t" + principal + "\t\t" + balance);
}

for (i = 1; i <= yilSayisi * 12; i++) {
       faiz = aylikFaizOrani * bakiye;
       anapara = aylikOdeme - faiz;
       bakiye = bakiye - anapara;
       System.out.println(i +
“\t\t” + faiz
       +
“\t\t” + anapara + “\t\t” + bakiye);
}

*5.23 (Demonstrate cancellation errors) A cancellation error occurs when you are manipulating a very large number with a very small number. The large number may cancel out the smaller number. For example, the result of 100000000.0 + 0.000000001 is equal to 100000000.0. To avoid cancellation errors and obtain more accurate results, carefully select the order of computation. For example, in computing the following series, you will obtain more accurate results by computing from right to left rather than from left to right:

(Yuvarlama hataları) Çok büyük sayılarla çok küçük sayılar aynı işlemde kullanıldığında yuvarlama hataları oluşabilir. Büyük sayı küçük sayının değerini saf dışı bırakabilir. Örneğin, 100000000.0 + 0.000000001 işleminin sonucu 100000000.0 dur. Yuvarlama hatalarından kaçınmak ve daha kesin sonuçlar elde etmek için hesaplamanın sırasına dikkat etmelisiniz. Örneğin, aşağıdaki seriyi hesaplarken, sağdan sola işlem yapmak soldan sağa doğru işlem yapmaktan daha kesin sonuçlar verecektir:

Write a program that compares the results of the summation of the preceding series, computing from left to right and from right to left with n = 50000.

Yukarıdaki seriyi n = 50000 iken soldan sağa ve sağdan sola toplayıp sonuçları karşılaştıran bir program yazınız.

*5.24 (Sum a series) Write a program to sum the following series:

(Seri toplamı) Aşağıdaki serinin toplamını hesaplayan bir program yazınız.

**5.25 (Compute p) You can approximate p by using the following series:

 (Pi hesaplama) Aşağıdaki seriyi kullanarak Pi sayısının yaklaşık değerini hesaplayabilirsiniz.

Write a program that displays the p value for i = 10000, 20000, …, and 100000.

i = 10000, 20000, …, ve 100000  için Pi değerlerini gösteren bir program yazınız.

**5.26 (Compute e) You can approximate e using the following series:

(e sayısı hesaplama) Aşağıdaki seriyi kullanarak e sayısının yaklaşık değerini hesaplayabilirsiniz:

Write a program that displays the e value for i = 10000, 20000, …, and 100000. (Hint: Because i! = i * (i - 1) * c * 2 * 1, then

i = 10000, 20000, …, ve 100000 için e değerlerini gösteren bir program yazınız. (İpucu:  i! = i * (i - 1) * c * 2 * 1, olduğu zaman

Initialize e and item to be 1 and keep adding a new item to e. The new item is the previous item divided by i for i = 2, 3, 4, ....)

e ve item’değişkenine ilk değeri 1 olarak verip, e ‘ye yeni item eklemeye devam ediniz. Yeni eklenen item değeri, bir önceki item’ın i = 2, 3, 4, .... için i ‘ye bölümüdür.

**5.27 (Display leap years) Write a program that displays all the leap years, ten per line, from 101 to 2100, separated by exactly one space. Also display the number of leap years in this period.

(Artık yıllar) Her satırda on tane ve aralarında birer boşluk olacak şekilde 101’den 2100’e tüm artık yılları gösteren bir program yazınız. Ayrıca bu zaman aralığında kaç artık yıl olduğunu gösteriniz.

**5.28 (Display the first days of each month) Write a program that prompts the user to enter the year and first day of the year, and displays the first day of each month in the year. For example, if the user entered the year 2013, and 2 for Tuesday, January 1, 2013, your program should display the following output:

 (Her ayın ilk günü) Kullanıcıdan yılı ve yılın ilk gününü alan ve o yılın her ayının ilk günlerini gösteren bir program yazınız. Örneğin, kullanıcı yılı 2013 ve yılın ilk günü olan Salı için 2 girdiyse, program şu çıktıyı vermelidir:

January 1, 2013 is Tuesday
...
December 1, 2013 is Sunday

1 Ocak, 2013 Salı
...
1 Aralık, 2013 Pazar

**5.29 (Display calendars) Write a program that prompts the user to enter the year and first day of the year and displays the calendar table for the year on the console. For example, if the user entered the year 2013, and 2 for Tuesday, January 1, 2013, your program should display the calendar for each month in the year, as follows:

(Takvim oluşturma) Kullanıcıdan yıl ve yılın ilk gününü alan ve alınan yılın konsolda takvim tablosunu gösteren bir program yazınız. Örneğin, kullanıcı yılı 2013 ve 1 Ocak 2013 Salı için 2’yi girdiğinde, program yılın her ayı için takvimi aşağıdaki gibi göstermelidir:

*5.30 (Financial application: compound value) Suppose you save $100 each month into a savings account with the annual interest rate 5%. So, the monthly interest rate is 0.05 / 12 = 0.00417. After the first month, the value in the account becomes

(Finans uygulaması: birleşik faiz) Yıllık %5 faiz oranıyla hesabınızda her ay 100 TL biriktirdiğinizi varsayalım. Bu durumda aylık faiz oranı 0.05/12 = 0.00417. İlk ayın sonunda hesabınızda miktar:

100 * (1 + 0.00417) = 100.417

After the second month, the value in the account becomes

İkinci ayın sonunda hesabınızda ki miktar:

(100 + 100.417) * (1 + 0.00417) = 201.252

After the third month, the value in the account becomes

Üçüncü ayın sonunda hesabınızda ki miktar:

(100 + 201.252) * (1 + 0.00417) = 302.507

and so on.

şeklinde gider.

Write a program that prompts the user to enter an amount (e.g., 100), the annual interest rate (e.g., 5), and the number of months (e.g., 6) and displays the amount in the savings account after the given month.

Kullanıcıdan miktarı (örneğin 100), yıllık faiz oranını (örneğin 5) ve kaç ay olduğunu (örneğin 6) alan ve verilen aydan sonra hesaptaki birikimi gösteren bir program yazınız.

*5.31 (Financial application: compute CD value) Suppose you put $10,000 into a CD with an annual percentage yield of 5.75%. After one month, the CD is worth

(Finans uygulaması: Vadeli hesap değerini hesaplama) Vadeli hesabınıza yıllık %5,75 faiz getirisi ile 10000 $  yatırdığınızı varsayalım. Bir ay sonra vadeli hesabınızın değeri;

10000 + 10000 * 5.75 / 1200 = 10047.92

After two months, the CD is worth

İki ay sonra vadeli hesabınızın değeri;

10047.91 + 10047.91 * 5.75 / 1200 = 10096.06

After three months, the CD is worth

Üç ay sonra vadeli hesabınızın değeri;

10096.06 + 10096.06 * 5.75 / 1200 = 10144.44

and so on.

şeklinde gider.

Write a program that prompts the user to enter an amount (e.g., 10000), the annual percentage yield (e.g., 5.75), and the number of months (e.g., 18) and displays a table as shown in the sample run.

Kullanıcının anapara miktarını (örneğin 10000), yıllık faiz oranını (örneğin 5.75) ve kaç ay olduğunu (örneğin 18) alan ve aşağıdaki örnek tabloyu gösteren bir program yazınız.

                   Anapara miktarini giriniz:  10000

                   Yillik faiz oranini giriniz: 5.75

                   Vade suresini ay olarak giriniz: 18

                   

                   Ay       Vadeli Hesap

                    1         10047.92

                    2         10096.06

                   . . .

                   17        10846.57

                   18        10898.54

**5.32 (Game: lottery) Revise Listing 3.8, Lottery.java, to generate a lottery of a two digit number. The two digits in the number are distinct. (Hint: Generate the first digit. Use a loop to continuously generate the second digit until it is different from the first digit.)

(Oyun: piyango) Madde 3.8 Lottery.java ‘yı yeniden düzenleyerek iki basamaklı sayılardan bir piyango oluşturun. Sayının iki basamağı birbirinden farklı olmalıdır. (İpucu: İlk basamağı oluşturun. Bir döngü kullanarak ikinci basamak için farklı olan yeni bir değer üretin.)

**5.33 (Perfect number) A positive integer is called a perfect number if it is equal to the sum of all of its positive divisors, excluding itself. For example, 6 is the first perfect number because 6 = 3 + 2 + 1. The next is 28 = 14 + 7 + 4 + 2 + 1. There are four perfect numbers less than 10,000. Write a program to find all these four numbers.

 (Mükemmel sayı) Kendisi dışındaki tüm pozitif bölenlerinin toplamı kendisi olan pozitif bir tam sayıya mükemmel sayı denir. Örneğin, 6 ilk mükemmel sayıdır. 6 = 3 + 2 + 1 ikincisi ise 28 = 14 + 7 + 4 + 2 + 1 10.000’den küçük dört mükemmel sayı vardır. Bu dört mükemmel sayıyı bulan bir program yazınız.

***5.34 (Game: scissor, rock, paper) Programming Exercise 3.17 gives a program that plays the scissor-rock-paper game. Revise the program to let the user continuously play until either the user or the computer wins more than two times than its opponent.

(Oyun:  makas, taş, kağıt) Programlama Alıştırmaları 3.17’de makas, taş, kağıt oyunu bulunmaktadır. Bilgisayar ya da kullanıcının iki seferden fazla kazanana kadar oyunun devam etmesine imkan verecek şekilde programı tekrar düzenleyiniz.

*5.35 (Summation) Write a program to compute the following summation.

 (Toplama) Aşağıdaki toplama işlemi yapan bir program yazınız.

**5.36 (Business application: checking ISBN ) Use loops to simplify Programming Exercise 3.9.

(İş uygulaması: ISBN kontrolü) Programlama Alıştırması 3.9’u bir döngü kullanarak basitleştirin.

**5.37 (Decimal to binary) Write a program that prompts the user to enter a decimal integer and displays its corresponding binary value. Don’t use Java’s Integer .toBinaryString(int) in this program.

(Onluk sayıyı ikilik sayıya dönüştürme) Kullanıcıdan onluk sayı sisteminde bir tam sayı alan ve bunun ikilik sayı sisteminde karşılığını gösteren bir program yazınız. Java’nın Integer.toBinaryString(int) metodunu kullanmayınız.

**5.38 (Decimal to octal) Write a program that prompts the user to enter a decimal integer and displays its corresponding octal value. Don’t use Java’s Integer .toOctalString(int) in this program.

(Onluk sayıyı sekizlik sayıya dönüştürme) Kullanıcıdan onluk sayı sisteminde bir tam sayı alan ve bunun sekizlik sayı sisteminde karşılığını gösteren bir program yazınız. Java’nın Integer.toOctalString(int) metodunu kullanmayınız.

*5.39 (Financial application: find the sales amount) You have just started a sales job in a department store. Your pay consists of a base salary and a commission. The base salary is $5,000. The scheme shown below is used to determine the commission rate.

(Finans uygulaması: Satış miktarını bulma) Bir mağazada satış elemanı olarak çalışmaya başladığınızı varsayalım. Kazancınız sabit maaş ve satış komisyonundan oluşmaktadır. Sabit maaşınız $5 000. Aşağıdaki tablo komisyon miktarlarını göstermektedir.

                                Satis Miktari                                            Komisyon Oranı

                         $0.01 - $5,000                                                   % 8

                         $5,000.01 - $10,000                                          % 10

                         $10,000.01 ve üstü                                            % 12

        

                       

Note that this is a graduated rate. The rate for the first $5,000 is at 8%, the next $5000 is at 10%, and the rest is at 12%. If the sales amount is 25,000, the commission is 5,000 * 8% + 5,000 * 10% + 15,000 * 12% = 2,700.

Bu oranların kademeli olarak değiştiğine dikkat ediniz. Oranlar, ilk $5 000 için %8, bir sonraki $5 000 için %10 ve bunun üstündekiler için %12’dir. Eğer satış miktarı $25 000 ise; komisyon 5,000 * 8% + 5,000 * 10% + 15,000 * 12% = 2,700 olur.

Your goal is to earn $30,000 a year. Write a program that finds the minimum sales you have to generate in order to make $30,000.

Hedefiniz yılda 30 000$ kazanmak. 30 000$ kazanmak için yapmanız gereken minimum satış miktarını hesaplayan bir program yazınız.

5.40 (Simulation: heads or tails) Write a program that simulates flipping a coin one million times and displays the number of heads and tails.

(Simülasyon : yazı-tura) 1 milyon kez yazı tura atmayı simule eden ve toplam yazı-tura sayılarını gösteren bir program yazınız.

*5.41 (Occurrence of max numbers) Write a program that reads integers, finds the largest of them, and counts its occurrences. Assume that the input ends with number 0. Suppose that you entered 3 5 2 5 5 5 0; the program finds that the largest is 5 and the occurrence count for 5 is 4.

(En büyük sayının tekrarlaması) Tam sayıları okuyan ve bunların en büyüğünü bulup bu sayının kaç kere tekrarlandığını hesaplayan bir program yazınız. 0 girilene kadar sayı girişi devam etsin. 3 5 2 5 5 5 0 girildiğini varsayalım. Program en büyük sayı olan 5’i bulacak ve 5 sayısının 4 kere tekrarlandığını hesaplayacak.

(Hint: Maintain two variables, max and count. max stores the current max number, and count stores its occurrences. Initially, assign the first number to max and 1 to count. Compare each subsequent number with max. If the number is greater than max, assign it to max and reset count to 1. If the number is equal to max, increment count by 1.)

(İpucu: max ve count isimli iki değişken bildirin. max o anki en büyük sayıyı ve count onun tekrar sayısını tutsun. Başlangıç olarak ilk sayıyı max’a atayın ve count’u 1 yapın. max değerini, takip eden her bir sayı ile karşılaştırın. Eğer sayı max’tan daha büyükse, onu max’a atayın ve count değişkenini tekrar 1 yapın. Eğer sayı max’a eşitse count değerini 1 arttırın.)

 

                     Sayilari giriniz: 3  5  2  5  5  5  0

                     En buyuk sayi 5

                     En buyuk sayi 4 kez tekrarliyor.

*5.42 (Financial application: find the sales amount) Rewrite Programming Exercise 5.39 as follows:

(Finans uygulaması: satış miktarını bulma) 5.39 ‘daki Programlama Alıştırmasını aşağıdaki açıklamalara uygun olarak yeniden düzenleyiniz.


Use a for loop instead of a do-while loop.
Let the user enter COMMISSION_SOUGHT instead of fixing it as a constant.

 do-while döngüsü yerine for döngüsü kullanınız.
 COMMISSION_SOUGHT sabiti yerine bu değeri kullanıcının girmesini isteyiniz.

*5.43 (Math: combinations) Write a program that displays all possible combinations for picking two numbers from integers 1 to 7. Also display the total number of all combinations.

(Matematik: kombinasyon) 1’den 7’ye kadar sayıların tüm olası kombinasyonlarını gösteren bir program yazınız. Ek olarak bulduğunuz tüm kombinasyonların sayısını da gösteriniz.

                   1  2

                   1  3

                   . . .

                   . . .

                  Tum kombinasyonlarin toplam sayisi 21

*5.44 (Computer architecture: bit-level operations) A short value is stored in 16 bits. Write a program that prompts the user to enter a short integer and displays the 16 bits for the integer. Here are sample runs:

(Bilgisayar mimarisi: bitsel işlemler) short türü 16 bit büyüklüğündedir. Kullanıcıdan short tam sayı türünde bir değer girmesini isteyen ve bu tam sayının 16 bitini gösteren bir program yazınız. Programın örnek akışını inceleyiniz:

                     Bir sayi giriniz:   5

                     Bitler 0000000000000101

                     Bir sayi giriniz:  -5

                     Bitler 1111111111111011

(Hint: You need to use the bitwise right shift operator (>>) and the bitwise AND operator (&), which are covered in Appendix G, Bitwise Operations.)

(İpucu: Bitsel sağa kaydırma operatörü (>>) ve bitsel AND operatörünü (&) kullanmanız gerekecek. Bitsel operatörler için EK G’ye bakabilirsiniz.)

**5.45 (Statistics: compute mean and standard deviation) In business applications, you are often asked to compute the mean and standard deviation of data. The mean is simply the average of the numbers. The standard deviation is a statistic that tells you how tightly all the various data are clustered around the mean in a set of data.

İstatistik:: Aritmetik ortalama ve standart sapma) İş uygulamalarında, genellikle verinin aritmetik ortalamasını ve standart sapmasını hesaplamanız istenir. Aritmetik ortalama temel olarak sayıların ortalamasıdır. Standart sapma veri setinin aritmetik ortalama etrafında ne kadar sıklıkla kümelendiğini gösteren bir istatistiktir.


For example, what is the average age of the students in a class? How close are the ages? If all the students are the same age, the deviation is 0.

Örneğin; sınıftaki öğrencilerin yaş ortalaması nedir? Yaşları birbirine ne kadar yakındır? Eğer tüm öğrenciler aynı yaşta ise standart sapma sıfırdır.

Write a program that prompts the user to enter ten numbers, and displays the mean and standard deviations of these numbers using the following formula:

Kullanıcıdan 10 sayı girmesini isteyen ve aşağıdaki formülü kullanarak bu sayıların aritmetik ortalamasını ve standart sapmasını hesaplayıp gösteren bir program yazınız.

(Mean = aritmetik ortalama)                                                        (deviation = standart sapma)

Here is a sample run:

Örnek akışı inceleyiniz:

                      10 adet sayi giriniz: 1  2  3  4  5  6  7  8  9  10

                      Aritmetik ortalama 5.61’dir.

                      Standart sapma 2.99794’tur.

*5.46 (Reverse a string) Write a program that prompts the user to enter a string and displays the string in reverse order.

(Yazıyı tersine çevirme) Kullanıcıdan bir yazı alan ve bu yazıyı tersten gösteren bir program yazınız.

                     Bir yazi giriniz: ABCD

                     Yazinin tersi DCBA’dir.

*5.47 (Business: check ISBN-13) ISBN-13 is a new standard for indentifying books. It uses 13 digits d1d2d3d4d5d6d7d8d9d10d11d12d13. The last digit d13 is a checksum, which is calculated from the other digits using the following formula:

(İş: ISBN-13 kontrolü) ISBN-13 kitapları tanımlamak için kullanılan yeni bir standarttır. 13 basamaktan oluşur. (d1d2d3d4d5d6d7d8d9d10d11d12d13) Son basamak d13 sağlama için kullanılır ve diğer basamaklar kullanılarak aşağıdaki formülle hesaplanır.

10 - (d1 + 3d2 + d3 + 3d4 + d5 + 3d6 + d7 + 3d8 + d9 + 3d10 + d11 + 3d12)%10

if the checksum is 10, replace it with 0. Your program should read the input as a string. Here are sample runs:

eğer sağlama değeri 10 ise onu 0 olarak alın. Programınız girdiyi string olarak okumalıdır. Programın örnek akışlarını inceleyiniz:

Bir ISBN-13’un ilk 12 basamagini string olarak giriniz: 978013213080

ISBN-13 sayisi 9780132130806

Bir ISBN-13’un ilk 12 basamagini string olarak giriniz: 978013213079

ISBN-13 sayisi 9780132130790

Bir ISBN-13’un ilk 12 basamagini string olarak giriniz: 97801320

97801320 gecersiz bir giristir.

*5.48 (Process string) Write a program that prompts the user to enter a string and displays the characters at odd positions. Here is a sample run:

(Yazı işleme) Kullanıcıdan bir yazı alan ve tek sayı indeksinde yer alan karakterleri gösteren bir program yazınız.  Örnek akışı inceleyiniz:

                     Bir yazi giriniz: Beijing Chicago

                     BiigCiao

*5.49 (Count vowels and consonants) Assume letters A, E, I, O, and U as the vowels. Write a program that prompts the user to enter a string and displays the number of vowels and consonants in the string.

 (Sesli ve sessiz harfleri sayın) A, E, I, O, ve U harflerinin sesli harf olarak kabul edin. Kullanıcıdan bir yazı girmesini isteyin ve girilen stringdeki sesli ve sessiz harf sayısını gösteren bir program yazınız.

                     Bir yazi giriniz: Programlama zevkli

                     Sesli harf sayisi 6

                     Sessiz harf sayisi 11

*5.50 (Count uppercase letters) Write a program that prompts the user to enter a string and displays the number of the uppercase letters in the string.

 (Büyük harfleri sayma) Kullanıcıdan bir yazı alan ve bu yazıdaki büyük harf sayısını gösteren bir program yazınız.

                     Bir yazi giriniz: Java’ya Hos geldiniz

                     Buyuk harflerin sayisi 2

*5.51 (Longest common prefix) Write a program that prompts the user to enter two strings and displays the largest common prefix of the two strings. Here are some sample runs:

 (En uzun ortak başlangıç) Kullanıcıdan iki ayrı yazı alan ve bu iki yazıdaki en uzun ortak başlangıcı bulan bir program yazınız. Programın örnek akışını inceleyiniz:

                   İlk yaziyi giriniz:  Java’ya hos geldiniz

                   İkinci yaziyi giriniz: Java zevkli

                   Ortak baslangic Java

                   İlk yaziyi giriniz:  Atlanta

                   İkinci yaziyi giriniz: Macon

                   Atlanta ve Macon yazilarinda ortak bir baslangici yok