Bölüm 7 Programming Exercises

Bölüm 7 Sorular

Sections 7.2–7.5

Bölüm 7.2–7.5

 *7.1 (Assign grades) Write a program that reads student scores, gets the best score,  and then assigns grades based on the following scheme:

(Not verme) Öğrencilerin notlarını okuyup, en iyi notu bulan ve aşağıdaki şemaya göre notun harf karşılığını veren bir program yazınız:

Grade is A if score is >  best - 10

Grade is B if score is >  best - 20;

Grade is C if score is >  best - 30;

Grade is D if score is >  best - 40;

Grade is F otherwise.

En iyi notun 10 puan altındaysa A

En iyi notun 20 puan altındaysa B

En iyi notun 30 puan altındaysa C

En iyi notun 40 puan altındaysa D

Bunun da altındaysa F

The program prompts the user to enter the total number of students, then prompts the user to enter all of the scores, and concludes by displaying the grades. Here is a sample run:

Kullanıcı toplam öğrenci sayısını ve ardından sırasıyla öğrencilerin notlarını girecek. Program notları hesaplayıp harf karşılığını gösterecek.  Örnek akışı inceleyiniz:

                    Ogrenci sayisini giriniz:  4

                    4 puan giriniz:  40  55  70  58

                    0. ogrencinin puani 40 ve notu C

                    1. ogrencinin puani 55 ve notu B

                    2. ogrencinin puani 70 ve notu A

                    3. ogrencinin puani 58 ve notu B

7.2 (Reverse the numbers entered) Write a program that reads ten integers and displays them in the reverse of the order in which they were read.

(Girilen sayıları ters çevirme) On tane tam sayı okuyan ve bu sayıları okuma sırasının tersi sırada gösteren bir program yazınız.

**7.3 (Count occurrence of numbers) Write a program that reads the integers between 1 and 100 and counts the occurrences of each. Assume the input ends with 0. Here is a sample run of the program:

(Sayıların tekrarlanma sayısı) 1 ile 100 arasında sayıları okuyan ve bu sayıların her birinin kaç defa tekrarlandığını gösteren bir program yazınız. 0 girildiğinde okuma işleminin sonlandığını varsayalım. Programın örnek akışını inceleyiniz:

1 - 100 arasi tam sayilar giriniz:  2  5  6  5  4  3  23  43  2  0

2, 2 kez tekrarliyor

3, 1 kez tekrarliyor

4, 1 kez tekrarliyor

5, 2 kez tekrarliyor

6, 1 kez tekrarliyor

23, 1 kez tekrarliyor

43, 1 kez tekrarliyor

Note that if a number occurs more than one time, the plural word “times” is used in the output.

Not: Sorunun son kısmında sayı birden fazla tekrarlanıyorsa çoğul olsun denmiş. Time değil times olarak. Ancak Türkçe’de böyle bir şey olmadığı için birden fazla tekrarlanan sayılar için parantez içinde çoğul yazılabilir. Ör: 2, 2 kez tekrarlıyor (Cogul).

7.4 (Analyze scores) Write a program that reads an unspecified number of scores and determines how many scores are above or equal to the average and how many scores are below the average. Enter a negative number to signify the end of the input. Assume that the maximum number of scores is 100.

(Not analizi) Belirsiz sayıda not girişi yapan ve girilen notların kaç tanesinin ortalamanın üstünde, kaç tanesinin ortalamaya eşit ve kaç tanesinin ortalamanın altında olduğunu hesaplayan bir program yapalım. Negatif sayı girildiğinde giriş işlemini sonlandırılsın. Girilecek en fazla not sayısının 100 olduğunu varsayalım.

**7.5 (Print distinct numbers) Write a program that reads in ten numbers and displays the number of distinct numbers and the distinct numbers separated by exactly one space (i.e., if a number appears multiple times, it is displayed only once). (Hint: Read a number and store it to an array if it is new. If the number is already in the array, ignore it.) After the input, the array contains the distinct numbers. Here is the sample run of the program:

(Birbirinden farklı sayıları göster) On tane sayı okuyan ve birbirinden farklı sayıları aralarında bir boşluk olacak şekilde gösteren bir program yazınız. (Ör: eğer sayı birçok kez girilmişse bu sayıyı yalnızca bir kez gösterin.) (İpucu: Okuduğunuz sayı  daha önce girilmediyse bunu diziye ekleyin. Eğer sayı daha önce diziye eklenmişse,  bunu atlayın.) Giriş işlemi sona erdiğinde dizide sadece farklı sayılar olacaktır. Programın örnek akışını inceleyiniz:

                    On sayi giriniz:  1  2  3  2  1  6  3  4  5  2

                    Birbirinden farkli olan sayi adedi 6

                    Farkli sayilar:  1  2  3  6  4  5

*7.6 (Revise Listing 5.15, PrimeNumber.java) Listing 5.15 determines whether a number n is prime by checking whether 2, 3, 4, 5, 6, ..., n/2 is a divisor. If a divisor is found, n is not prime. A more efficient approach is to check whether any of the prime numbers less than or equal to 2n can divide n evenly. If not, n is prime.

(Madde 5.15, PrimeNumber.java’yı yeniden düzenleyin) Madde 5.15  n’nin asal sayı olup olmadığını  2, 3, 4, 5, 6, ..., n/2 sayıları tam böleni olup olmadığını kontrol ederek karar verir. Eğer herhangi bir bölen bulunursa, n’nin asal sayı olmadığına karar verilir. Bunun daha etkili yöntemi şudur: 2n’ye eşit veya daha küçük olan sayılar içinden tam böleni var mıdır diye kontrol edilir. Eğer tam böleni yoksa, n asal sayıdır.

Rewrite Listing 5.15 to display the first 50 prime numbers using this approach. You need to use an array to store the prime numbers and later use them to check whether they are possible divisors for n

Bu yaklaşımı kullanarak Madde 5.15’i düzenleyerek ilk 50 asal sayıyı gösteriniz. Sonra n’nin tam böleni olup olmadığını kontrol etmek için bulduğunuz asal sayıları bir dizi içerisinde tutmanız gerekmektedir.

*7.7 (Count single digits) Write a program that generates 100 random integers between 0 and 9 and displays the count for each number. (Hint: Use an array of ten integers, say counts, to store the counts for the number of 0s, 1s, ..., 9s.)

(Rakamların sayısı) 0 ile 9 arasında 100 adet rastgele rakam üreten ve bu rakamların her birinin kaç defa tekrarlandığını gösteren bir program yazınız. (İpucu: On tane tam sayıdan oluşan ve adı counts olan bir dizi oluşturun ve 0, 1, ..., 9 rakamlarının tekrar sayılarını bu dizide tutunuz.)

Sections 7.6–7.8

Bölüm 7.6–7.8

7.8 (Average an array) Write two overloaded methods that return the average of an array with the following headers:

(Dizinin ortalaması) Aşağıdaki bildirime sahip aynı isimli ancak farklı parametrik yapıda olan ve dizinin aritmetik ortalamasını döndüren iki adet metot yazınız:

public static int average(int[] array)

public static double average(double[] array)

Write a test program that prompts the user to enter ten double values, invokes thismethod, and displays the average value.

Kullanıcıdan on adet gerçel sayı alan ve bu metodu çağırarak aritmetik ortalama değerini gösteren bir test programı yazınız.

7.9 (Find the smallest element) Write a method that finds the smallest element in an array of double values using the following header:

(En küçük eleman) Gerçel sayılardan oluşan bir dizideki en küçük elemanı bulan aşağıdaki bildirime sahip bir metot yazınız:

public static double min(double[] array)

Write a test program that prompts the user to enter ten numbers, invokes this method to return the minimum value, and displays the minimum value. Here is a sample run of the program:

Kullanıcıdan on adet sayı alan ve bu metodu çağırarak en küçük değeri gösteren bir test programı yazınız. Programın örnek akışını inceleyiniz:

 

                   

                     On sayi giriniz:  1.9  2.5  3.7  2  1.5  6  3  4  5  2

                     En kucuk sayi: 1.5

7.10 (Find the index of the smallest element) Write a method that returns the index of the smallest element in an array of integers. If the number of such elements is greater than 1, return the smallest index. Use the following header:

(En küçük elemanın indeksi) Tam sayılardan oluşan bir dizideki en küçük elemanın indeksini döndüren bir metot yazınız. Birden fazla sonuç bulursanız en küçük indeksi geri döndürün. Aşağıdaki bildirimi kullanınız:

public static int indexOfSmallestElement(double[] array)

Write a test program that prompts the user to enter ten numbers, invokes this method to return the index of the smallest element, and displays the index.

Kullanıcıdan on adet sayı alan ve bu metodu çağırarak en küçük değeri gösteren bir test programı yazınız.

*7.11 (Statistics: compute deviation) Programming Exercise 5.45 computes the standard deviation of numbers. This exercise uses a different but equivalent formula to compute the standard deviation of n numbers.

(İstatistik: standart sapmayı hesaplama) Programlama Alıştırmaları 5.45 girilen sayıların standart sapmasını hesaplar. Bu alıştırma n adet sayının standart sapmasını hesaplamak için farklı ancak ona eşdeğer bir formül kullanıyor.

    (ortalama)                                          (standart sapma)

To compute the standard deviation with this formula, you have to store the individual numbers using an array, so that they can be used after the mean is obtained.

Bu formülle standart sapmayı hesaplamak için her bir sayıyı bir dizide saklamalısınız ki ortalama hesaplandıktan sonra tekrar kullanılabilsin.

Your program should contain the following methods:

Programınız aşağıdaki metotlardan oluşabilir:

/** Compute the deviation of double values */

/** double değerlerin sapmasını hesaplar */

public static double deviation(double[] x)

/** Compute the mean of an array of double values */

/** double türden bir dizinin ortalamasını hesaplar */

public static double mean(double[] x)

Write a test program that prompts the user to enter ten numbers and displays the mean and standard deviation, as shown in the following sample run:

Aşağıdaki örnek akışta gösterildiği gibi, kullanıcıdan on adet sayı girmesini isteyen ve bu sayıların ortalamasını ve standart sapmasını gösteren bir program yazınız.

                    On sayi giriniz: 1.9  2.5  3.7  2  1  6  3  4  5  2

                    Ortalama 3.11

                    Standart sapma 1.55738

*7.12 (Reverse an array) The reverse method in Section 7.7 reverses an array by copying it to a new array. Rewrite the method that reverses the array passed in the argument and returns this array. Write a test program that prompts the user to enter ten numbers, invokes the method to reverse the numbers, and displays the numbers.

 (Diziyi ters çevirme) Bölüm 7.7 deki reverse metodu bir dizinin elemanlarını yeni diziye kopyalayarak ters çeviriyordu. Arguman olarak gelen dizi üzerinde ters çevirme işlemini yapacak ve bu diziyi geri döndürecek şekilde bu metodu yeniden yazınız. Kullanıcıdan on adet sayı alan ve bu metodu çağırarak sayıları ters çevirip gösteren bir test programı yazınız.

Section 7.9

Bölüm 7.9

*7.13 (Random number chooser) Write a method that returns a random number between 1 and 54, excluding the numbers passed in the argument. The method header is specified as follows:

(Rastgele sayı seçme) Arguman olarak gönderilen sayılar haricinde 1 ile 54 arasında rastgele bir sayı geri döndüren bir metot yazınız. Metot bildirimi aşağıdaki şekildedir:

public static int getRandom(int... numbers)

7.14 (Computing gcd) Write a method that returns the gcd of an unspecified number of integers. The method header is specified as follows:

(OBEB hesaplama) Belirsiz sayıda tam sayı için OBEB değerini geri döndüren bir metot yazınız. Metot bildirimi aşağıdaki şekildedir:

public static int gcd(int... numbers)

Write a test program that prompts the user to enter five numbers, invokes the method to find the gcd of these numbers, and displays the gcd.

Kullanıcıdan beş adet sayı alan ve bu metodu çağırarak sayıların OBEB değerini hesaplayıp gösteren bir test programı yazınız.

Sections 7.10–7.12

Bölüm 7.10-7.12

7.15 (Eliminate duplicates) Write a method that returns a new array by eliminating the duplicate values in the array using the following method header:

(Tekrarlananları çıkar) Tekrarlanan kayıtların çıkarıldığı yeni bir dizi döndüren aşağıdaki bildirime sahip bir metot yazınız.

public static int[] eliminateDuplicates(int[] list)

Write a test program that reads in ten integers, invokes the method, and displays the result. Here is the sample run of the program:

On tane tamsayı alan ve bu metodu çağırarak sonucu gösteren bir test programı yazınız. Programın örnek akışını inceleyiniz:

                   On sayi giriniz: 1  2  3  2  1 6  3  4  5  2

                   Birbirinden farkli girilen sayilar:  1  2  3 6  4  5

7.16 (Execution time) Write a program that randomly generates an array of 100,000 integers and a key. Estimate the execution time of invoking the linearSearch method in Listing 7.6. Sort the array and estimate the execution time of invoking the binarySearch method in Listing 7.7. You can use the following code template to obtain the execution time:

(Çalışma süresi)  Rastgele 100,000  tam sayı içeren bir dizi ve anahtar oluşturan bir program yazınız. Madde 7.6’daki  linearSearch metodunun çalışma süresini tahmin ediniz. Madde 7.7’deki  binarySearch metodunu kullanarak diziyi sıralayınız ve  çalışma süresini tahmin ediniz. Aşağıdaki kod şablonunu kullanarak çalışma sürelerini tahmin edebilirsiniz:

long startTime = System.currentTimeMillis();

perform the task;

Çalışan kod parçası;

long endTime = System.currentTimeMillis();

long executionTime = endTime - startTime;

**7.17 (Sort students) Write a program that prompts the user to enter the number of students, the students’ names, and their scores, and prints student names in decreasing order of their scores.

(Öğrencileri sıralama) Kullanıcıdan öğrenci sayısını ve bu öğrencilerin ad ve not bilgisini alan ve notlarına göre azalan şekilde sıralayıp gösteren bir program yazınız.

**7.18 (Bubble sort) Write a sort method that uses the bubble-sort algorithm. The bubblesort algorithm makes several passes through the array. On each pass, successive neighboring pairs are compared. If a pair is not in order, its values are swapped; otherwise, the values remain unchanged. The technique is called a bubble sort or sinking sort because the smaller values gradually “bubble” their way to the top and the larger values “sink” to the bottom. Write a test program that reads in ten double numbers, invokes the method, and displays the sorted numbers.

(Baloncuk (Bubble) sıralaması) Baloncuk sıralaması algoritmasını kullanan bir sıralama metodu yazınız. Baloncuk sıralaması algoritması diziye defalarca erişir ve  üzerinde işlem yapar. Her erişimde komşu olan iki değer karşılaştırılır. Eğer bu çift doğru sırada değilse, değerleri takas edilir; doğru sırada ise değişmeden kalırlar. Bu algoritmaya baloncuk sıralaması denmesinin nedeni küçük değerler bir baloncuk gibi adım adım yukarı yükselirken, büyük değerler aşağı doğru ilerler. On tane gerçel sayı alan ve bu metodu çağırarak sayıları sıralanmış olarak  gösteren bir test programı yazınız.

**7.19 (Sorted?) Write the following method that returns true if the list is already sorted in increasing order.

(Sıralı mı?) Eğer dizi artan şekilde sıralanmış ise true değeri dönen aşağıdaki bildirime sahip bir metot yazınız.

public static boolean isSorted(int[] list)

Write a test program that prompts the user to enter a list and displays whether the list is sorted or not. Here is a sample run. Note that the first number in the input indicates the number of the elements in the list. This number is not part of the list.

Kullanıcıdan bir dizi girmesini isteyen ve bu dizinin sıralanmış olup olmadığını kontrol eden bir test programı yazınız. Örnek akışı inceleyiniz. Girilen ilk sayının dizinin eleman sayısını göstereceğini unutmayınız. Bu sayı dizinin bir elemanı olmayacaktır.

                  Listeyi giriniz: 8  10  1  5  16  61  9  11  1

                  Liste sirali degil

                  Listeyi giriniz: 10  1  1  3  4  4  5  7  9  11  21

                  Liste sirali

*7.20 (Revise selection sort) In Section 7.11, you used selection sort to sort an array. The selection-sort method repeatedly finds the smallest number in the current array and swaps it with the first. Rewrite this program by finding the largest number and swapping it with the last. Write a test program that reads in ten double numbers, invokes the method, and displays the sorted numbers.

(Seçmeli (selection) sıralama) Bölüm 7.11’de bir diziyi sıralamak için seçmeli sıralama algoritmasını kullanmıştık. Seçmeli sıralama metodu sürekli en küçük değeri bularak bunu ilk elemanla takas eder. Bu programı en büyük elemanı bulacak ve bunu sonuncu ile takas edecek şekilde yeniden yazınız. On tane ondalık sayı alan ve bu metodu çağırarak sayıları sıralanmış olarak  gösteren bir test programı yazınız.

***7.21 (Game: bean machine) The bean machine, also known as a quincunx or the Galton box, is a device for statistics experiments named after English scientist Sir Francis Galton. It consists of an upright board with evenly spaced nails (or pegs) in a triangular form, as shown in Figure 7.13.

(Oyun: fasülye makinesi) Fasülye makinesi ya da diğer isimleri quincunx ya da Galton kutusu,  İngiliz istatistikçi Francis Galton tarafından hazırlanmış istatiksel bir deney aletidir. Şekil 7.13’te gösterildiği gibi bu makine, dikey bir tahta üzerine üçgen biçiminde tek tek çakılmış çivilerden oluşur.

        

                  Şekil 7.13     Her bir top rastgele bir yol izleyerek bölmelerden birine düşüyor.

Balls are dropped from the opening of the board. Every time a ball hits a nail, it has a 50% chance of falling to the left or to the right. The piles of balls are accumulated in the slots at the bottom of the board.

Top tahtanın üst kısmından bırakılır. Top çiviye her çarptığında  %50 ihtimalle sola ya da sağa doğru düşer. Toplar tahtanın altında bulunan bölmelerde birikir.

Write a program that simulates the bean machine. Your program should prompt the user to enter the number of the balls and the number of the slots in the machine. Simulate the falling of each ball by printing its path. For example, the path for the ball in Figure 7.13b is LLRRLLR and the path for the ball in Figure 7.13c is RLRRLRR. Display the final buildup of the balls in the slots in a histogram. Here is a sample run of the program:

Fasulye makinesini simüle eden bir program yazınız. Programınız kullanıcından top sayısını ve tahtanın altında kaç bölme olacağı bilgisini alsın. Her topun düşüşünü düşüş rotasını göstererek simüle ediniz. Örneğin; Şekil 7.13b’de topun izlediği yol Sol, Sol, Sağ, Sağ, Sol, Sol, Sağ ve Şekil 7.13c’de topun izlediği yol Sağ, Sol, Sağ, Sağ, Sol, Sağ, Sağ. Bölmelerde biriken topların son görüntüsü sıklık grafiği şeklinde gösteriniz. Programın örnek akışını inceleyiniz:

                  Dusecek top sayisini giriniz: 5

                  Fasulye makinesindeki bolme sayisini giriniz: 8

               

                 sol, sag, sol, sag, sol, sag, sag

                 sag, sag, sol, sol, sol, sag, sag

                 sol, sol, sag, sol, sol, sag, sag

                 sag, sag, sol, sol, sol, sol, sol

                 sol, sag, sol, sag, sag, sol, sag

                                        0

                                        0

                                    000

(Hint: Create an array named slots. Each element in slots stores the number of balls in a slot. Each ball falls into a slot via a path. The number of Rs in a path is the position of the slot where the ball falls. For example, for the path LRLRLRR, the ball falls into slots[4], and for the path is RRLLLLL, the ball falls into slots[2].)

(İpucu: slots isminde bir dizi yaratınız. slots dizisinin her bir elemanı her bir bölmede bulunan top sayısını tutsun. Topun düşerken izlediği yola göre hangi yuvaya ulaşacağı hesaplanır. İzlediği yolda bulunan sağ sayısı topun ulaşacağı yuvayı gösterir. Örneğin; Sol, Sağ, Sol, Sağ, Sol, Sağ, Sağ yolundan düşen bir top slots[4] , Sağ, Sağ, Sol, Sol, Sol, Sol, Sol yolundan düşen top slots[2] ye ulaşır.)

***7.22 (Game: Eight Queens) The classic Eight Queens puzzle is to place eight queens on a chessboard such that no two queens can attack each other (i.e., no two queens are on the same row, same column, or same diagonal). There are many possible solutions. Write a program that displays one such solution. A sample output is shown below:

(Oyun: Sekiz Vezir) Klasik sekiz vezir oyunu bir satranç tahtası üzerinde birbirini tehdit etmeyecek şekilde 8 tane vezirin yerleştirilmesidir.  (Yani iki vezir yatay, dikey ya da çapraz doğrultuda bulunmamalıdır). Birçok olası çözüm bulunmaktadır. Bu çözümlerden birini gösteren bir program yazınız. Aşağıda örnek çözümlerden birini görebilirsiniz:

|Q| | | | | | | |

| | | | |Q| | | |

| | | | | | | |Q|

| | | | | |Q| | |

| | |Q| | | | | |

| | | | | | |Q| |

| |Q| | | | | | |

| | | |Q| | | | |

**7.23 (Game: locker puzzle) A school has 100 lockers and 100 students. All lockers are closed on the first day of school. As the students enter, the first student, denoted S1, opens every locker. Then the second student, S2, begins with the second locker, denoted L2, and closes every other locker. Student S3 begins with the third locker and changes every third locker (closes it if it was open, and opens it if it was closed). Student S4 begins with locker L4 and changes every fourth locker. Student S5 starts with L5 and changes every fifth locker, and so on, until student S100 changes L100.

(Oyun: Kilitli dolap bilmecesi) 100 kilitli dolap ve 100 öğrencinin olduğu bir okulda, okulun ilk günü tüm dolaplar kilitlidir. Öğrenciler sırayla okula girerler ve ilk öğrenci (O1) tüm dolapların kilidini açar. İkinci öğrenci, O2, ikinci dolaptan (D2) başlar ve bir dolap atlayıp bir dolap kilitleyerek devam eder (örneğin üçüncü dolabı atlayıp dördüncüyü kilitler; beşinciyi atlayıp altıncıyı kilitler, vb.) Üçüncü öğrenci O3, üçüncü dolaptan başlar D3 ve üçün katı olan dolapları değiştirir. (Açıksa kilitler, kilitliyse açar)  O4, D4’ten başlar ve dördün katı olan dolapları değiştirir. O5, D5’ten başlar ve beşin katı olan dolapları değiştirir ve bu O100 ve D100 olana kadar böyle devam eder.

After all the students have passed through the building and changed the lockers, which lockers are open? Write a program to find your answer and display all open locker numbers separated by exactly one space.

Tüm öğrenciler geçtikten sonra hangi dolaplar açık olacaktır? Bu sorunun cevabını bulmak için bir program yazınız ve tüm açık dolapların numaralarını aralarında bir boşluk olacak şekilde gösteriniz.

(Hint: Use an array of 100 Boolean elements, each of which indicates whether a locker is open (true) or closed (false). Initially, all lockers are closed.)

(İpucu: 100 tane Boolean elemanı olan bir dizi alınız,  eğer bir dolap açıksa onu (true) kapalıysa (false) değeri atayınız. Başlangıç durumunda tüm çekmeceler kapalıdır.)

**7.24 (Simulation: coupon collector’s problem) Coupon collector is a classic statistics problem with many practical applications. The problem is to pick objects from a set of objects repeatedly and find out how many picks are needed for all the objects to be picked at least once. A variation of the problem is to pick cards from a shuffled deck of 52 cards repeatedly and find out how many picks are needed before you see one of each suit. Assume a picked card is placed back in the deck before picking another. Write a program to simulate the number of picks needed to get four cards from each suit and display the four cards picked (it is possible a card may be picked twice). Here is a sample run of the program:

 (Simülasyon: kupon toplayıcısı problemi)  Kupon toplayıcısı, birçok pratik uygulaması olan bir istatistik problemdir. Amaç, bir dizi nesne arasından arka arkaya nesneler çekilirken her bir nesnenin en az bir kere çekilmiş olması için kaç kere çekiliş yapılması gerektiğinin bulunmasıdır. Bu problemin bir çeşidi de 52 karttan oluşan karıştırılmış bir iskambil destesinden  ardı ardına kağıt çekip her bir seriden en az bir kartı bulana kadar gerekecek çekme sayısını bulmaktır. Yeni bir kart çekmeden çektiğiniz kartı destenin en altına koyduğunuzu varsayalım. Her bir seriden dört kart seçmiş olmak için gerekecek çekme sayısını simüle eden bir program yazınız. Çekilen dört kartı ve çekme sayısını gösteriniz. (Aynı kartın iki kere çekilme olasılığı bulunmaktadır) Programın örnek akışını inceleyiniz:

                    Maca kizi

                    Sinek beslisi

                    Kupa kizi

                    Karo dortlusu

                    Toplam kart çekme sayısı: 12

7.25 (Algebra: solve quadratic equations) Write a method for solving a quadratic equation using the following header:

(Cebir: İkinci dereceden denklem çözümü) İkinci dereceden bir denklemi çözen, aşağıdaki bildirime sahip bir metot yazınız.

public static int solveQuadratic(double[] eqn, double[] roots)

The coefficients of a quadratic equation ax2 + bx + c = 0 are passed to the array eqn and the real roots are stored in roots. The method returns the number of real roots. See Programming Exercise 3.1 on how to solve a quadratic equation.

İkinci dereceden  ax2 + bx + c = 0 denkleminin sabitleri  eqn dizisine geçilecek ve gerçek kökleri de roots dizisinde tutulacaktır. Metot gerçek köklerin sayısını geri döndürecektir. İkinci dereceden denklemlerin çözümü için, Programlama Alıştırması 3.1’e bakınız.

Write a program that prompts the user to enter values for a, b, and c and displays the number of real roots and all real roots.

Kullanıcıdan a, b, c değerlerini alan ve gerçek köklerin sayısını ve gerçek kökleri gösteren bir program yazınız.

7.26 (Strictly identical arrays) The arrays list1 and list2 are strictly identical if their corresponding elements are equal. Write a method that returns true if list1 and list2 are strictly identical, using the following header:

(Birebir eş diziler) Karşılıkları elemanları birebir eşit olan  list1 ve list2 dizilerine birebir eş diziler denir. Eğer list1 ve list2 birebir eş dizilerse true dönen aşağıdaki bildirime sahip bir metot yazınız.

public static boolean equals(int[] list1, int[] list2)

Write a test program that prompts the user to enter two lists of integers and displays whether the two are strictly identical. Here are the sample runs. Note that the first number in the input indicates the number of the elements in the list. This number is not part of the list.

Kullanıcıdan iki tam sayı dizisi girmesini isteyen ve bu dizilerin birebir eş olup olmadığını kontrol eden bir test programı yazınız. Programın örnek akışını inceleyiniz. Girilen ilk sayının dizinin eleman sayısını göstereceğini unutmayınız. Bu sayı dizinin bir elemanı olmayacaktır.

                     Dizi1’i giriniz:   5  2  5  6  1  6

                     Dizi2’yi giriniz: 5  2  5  6  1  6

                     Iki dizi birebir aynidir

                     Dizi1’i giriniz:   5  2  5  6  6  1

                     Dizi2’yi giriniz: 5  2  5  6  1  6

                     Iki dizi birebir ayni degildir

7.27 (Identical arrays) The arrays list1 and list2 are identical if they have the same contents. Write a method that returns true if list1 and list2 are identical, using the following header:

(Eş diziler) Aynı elemanlara sahip olan list1 ve list2 dizilerine eş diziler denir. Eğer  list1 ve list2  eş dizilerse true dönen aşağıdaki bildirime sahip bir metod yazınız.

public static boolean equals(int[] list1, int[] list2)

Write a test program that prompts the user to enter two lists of integers and displays whether the two are identical. Here are the sample runs. Note that the first number in the input indicates the number of the elements in the list. This number is not part of the list.

Kullanıcıdan iki tam sayı dizisi girmesini isteyen ve bu dizilerin eş olup olmadığını kontrol eden bir test programı yazınız. Programın örnek akışını inceleyiniz: Girilen ilk sayının dizinin eleman sayısını göstereceğini unutmayınız. Bu sayı dizinin bir elemanı olmayacaktır.

                     Dizi1’i giriniz:   5  2  5  6  6  1

                     Dizi2’yi giriniz: 5  5  2  6  1  6

                     Iki dizi birbirine estir

                     Dizi1’i giriniz:   5  5  5  6  6  1

                     Dizi2’yi giriniz: 5  2  5  6  1  6

                     Iki dizi birbirine es degildir

*7.28 (Math: combinations) Write a program that prompts the user to enter 10 integers and displays all combinations of picking two numbers from the 10.

(Matematik: kombinasyonlar) Kullanıcıdan 10 tam sayı girmesini isteyen ve bu 10 sayıdan seçilen ikili kombinasyonların tümünü gösteren bir program yazınız.

*7.29 (Game: pick four cards) Write a program that picks four cards from a deck of 52 cards and computes their sum. An Ace, King, Queen, and Jack represent 1, 13, 12, and 11, respectively. Your program should display the number of picks that yields the sum of 24.

(Oyun: Dört kart çekme) 52 karttan oluşan bir iskambil destesinden 4 kart çeken ve bu kartların toplam değerini hesaplayan bir program yazınız. As, Papaz, Kız ve Vale için sayısal değerler sırasıyla 1, 13, 12, 11’dir. Programınız 24’e ulaşmak için gereken çekme sayısını göstersin.

*7.30 (Pattern recognition: consecutive four equal numbers) Write the following method that tests whether the array has four consecutive numbers with the same value.

(Desen tanıma: ardışık dört eşit sayı) Dizide aynı değere sahip dört ardışık sayı olup olmadığını test eden aşağıdaki metodu yazınız.

public static boolean isConsecutiveFour(int[] values)

Write a test program that prompts the user to enter a series of integers and displays if the series contains four consecutive numbers with the same value. Your program should first prompt the user to enter the input size—i.e., the number of values in the series. Here are sample runs:

Kullanıcıdan bir tam sayı dizisi alan ve  dizide aynı değere sahip dört ardışık sayı olup olmadığını arayan bir test programı yazınız. Programınız öncelikle kullanıcıdan dizinin boyutunu almalıdır. Programın örnek akışını inceleyiniz:

                   Girilecek deger sayisini giriniz: 8

                   Degerleri giriniz:  3  4  5  5  5  5  4  5

                   Dizide ardisik dort deger vardir

                   Girilecek deger sayisini giriniz: 9

                   Degerleri giriniz:  3  4  5  5  6  5  5  4  5

                   Dizide ardisik dort deger yoktur

**7.31 (Merge two sorted lists) Write the following method that merges two sorted lists into a new sorted list.

(Sıralı iki diziyi birleştirme) İki sıralı diziyi birleştirip yeni bir sıralı dizi oluşturan aşağıdaki bildirime sahip bir metot yazınız.

public static int[] merge(int[] list1, int[] list2)

Implement the method in a way that takes at most list1.length + list2.length comparisons. Write a test program that prompts the user to enter two sorted lists and displays the merged list. Here is a sample run. Note that the first number in the input indicates the number of the elements in the list. This number is not part of the list.

Metodu en fazla  list1.length + list2. length toplam sayısını geçmeyecek kadar karşılaştırma yapacak şekilde yazınız. Kullanıcıdan iki sıralı dizi girmesini isteyen ve birleştirilmiş diziyi gösteren bir test programı yazınız. Örnek akışı inceleyiniz. Girilen ilk sayının dizinin eleman sayısını göstereceğini unutmayınız. Bu sayı dizinin bir elemanı olmayacaktır.

                    Dizi1’i giriniz:  5  1  5  16  61  111

                    Dizi2’yi giriniz: 4  2  4  5  6

                    Birlestirilmis dizi 1  2  4  5  5  6  16  61  111

**7.32 (Partition of a list) Write the following method that partitions the list using the first element, called a pivot.

(Listeyi bölümleme) İlk elemanı temel alacak (buna pivot denecek) şekilde bir diziyi iki bölüme ayıran aşağıdaki bildirime sahip bir metot yazınız.

public static int partition(int[] list)

After the partition, the elements in the list are rearranged so that all the elements before the pivot are less than or equal to the pivot and the elements after the pivot are greater than the pivot. The method returns the index where the pivot is located in the new list. For example, suppose the list is {5, 2, 9, 3, 6, 8}. After the partition, the list becomes {3, 2, 5, 9, 6, 8}. Implement the method in a way that takes at most list.length comparisons. Write a test program that prompts the user to enter a list and displays the list after the partition. Here is a sample run. Note that the first number in the input indicates the number of the elements in the list. This number is not part of the list.

Bölümleme işleminden sonra pivot değere eşit ve daha küçük olanlar pivottan önce; pivottan büyük olanlar pivottan sonra yer alacak şekilde dizi yeniden düzenlenecek. Metot yeni oluşan dizide pivot değerin bulunduğu indeksi geri dönecek. Örneğin dizi {5, 2, 9, 3, 6, 8} girilmiş olsun. Bölümleme işleminden sonra dizi {3, 2, 5, 9, 6, 8} şeklinde olacak. Metodu en fazla list.length kadar karşılaştırma yapacak şekilde yazınız. Kullanıcıdan bir dizi girmesini isteyen ve bölümleme işleminden sonra dizinin son durumunu gösteren bir program yazınız. Örnek akışı inceleyiniz. Girilen ilk sayının dizinin eleman sayısını göstereceğini unutmayınız. Bu sayı dizinin bir elemanı olmayacaktır.

                     Diziyi giriniz: 8  10  1  5  16  61  9  11  1

                     Bolumlemeden sonra dizi 9  1  5  1  10  61  11  16

*7.33 (Culture: Chinese Zodiac) Simplify Listing 3.9 using an array of strings to store the animal names.

(Kültür: Çin Burçları) Madde 3.9’da hayvan isimlerini bir string dizisi kullanarak düzenleyiniz.

**7.34 (Sort characters in a string) Write a method that returns a sorted string using the following header:

 (string’deki karakterleri sıralama) string’leri sıralanmış olarak geri döndüren aşağıdaki bildirime sahip bir metod yazınız.

public static String sort(String s)

For example, sort("acb") returns abc.

Örneğin, sort(”acb”)’nin geri dönüş değeri abc.

Write a test program that prompts the user to enter a string and displays the sorted string.

Kullanıcıdan bir string girmesini isteyen ve bu string’in sıralanmış halini gösteren bir test programı yazınız.

***7.35 (Game: hangman) Write a hangman game that randomly generates a word and prompts the user to guess one letter at a time, as shown in the sample run. Each letter in the word is displayed as an asterisk. When the user makes a correct guess, the actual letter is then displayed. When the user finishes a word, display the number of misses and ask the user whether to continue to play with another word. Declare an array to store words, as follows:

(Oyun: adam asmaca) Rastgele kelime üreten ve her seferinde kullanıcıdan bir harf girmesini isteyen örnek akıştaki gibi bir adam asmaca oyunu yazınız. Kelimedeki her harf yıldız olarak gösterilecek. Eğer kullanıcı doğru harfi tahmin ederse, bulunduğu yerdeki yıldız yerine harf gösterilecek. Kullanıcıyı kelimeyi bulduğunda, yanlış girdiği harf sayısını gösteriniz ve başka bir kelimeyle yeniden oynamak isteyip istemediğini sorunuz. Aşağıdaki gibi kelimeleri saklayacak bir dizi oluşturunuz:

// Add any words you wish in this array

// Bulunmasını istediğiniz kelimeleri bu diziye ekleyiniz.

String[] words = {"write", "that", ...};

                     (Tahmin) Bir harf giriniz  *******  > p

                     (Tahmin) Bir harf giriniz  p******  > r

                     (Tahmin) Bir harf giriniz  pr**r**   > p

                      p harfi zaten yerlestirildi

                     (Tahmin) Bir harf giriniz  pr**r**   > o

                     (Tahmin) Bir harf giriniz  pro*r**   > g

                     (Tahmin) Bir harf giriniz  progr**   > n

                     n harfi sozcukte yok

                     (Tahmin) Bir harf giriniz  progr**   > m

                     (Tahmin) Bir harf giriniz  progr*m  > a

                     Sorulan sozcuk: program. 1 kez kaybettiniz

                     Baska bir sozcuk tahmin etmek ister misiniz? Evetse (E), Hayirsa (H) giriniz.