Algoritma problemi

KaptaniDerya

Kilopat
Katılım
22 Ekim 2016
Mesajlar
1.066
Makaleler
4
Çözümler
7
Herkese iyi forumlar, aşağıdaki algoritmanın arttırma ve azaltma işlemini yaptım ancak en büyük ve en küçük sayıyı kullanıcıdan almadan bu sayıları bulmak oldukça zorladı. Yardımcı olabilirseniz çok makbule geçer. Soru: Klavyeden girilen N tane sayı için, tek sırada (birinci sırada, üçüncü sırada, vb.) girilen sayıların bir fazlasını ve çift sırada (ikinci sırada, dördüncü sırada, vb.) girilen sayıların bir eksiğini hesaplayıp, hesaplanan bu sayılardan en büyüğü ile en küçüğünün çarpımını ekrana yazdıran bir algoritmanın akış şemasını çiziniz.
 
Son düzenleyen: Moderatör:

Aspletan

Hectopat
Katılım
20 Mart 2020
Mesajlar
1.021
Makaleler
1
Çözümler
5
Yer
İstanbul/Kağıthane
Girilen sayıları bir listeye atabilirsin. Listenin 0. elemanı çift sırada örnek veriyorum, bir eksiğini alırsın. Bu şekilde hesaplanan sayıları da yeni bir listeye eklersin. Yeni listemizde de en büyük sayıyı ve en küçük sayıyı bulmak kalır sadece. O da for döngüsü ile yapılabilir. İnternete de yazarsan örnekleri vardır. Akış şemasında göstermek de sana kalmış.
 

LayThese

Kilopat
Katılım
2 Haziran 2016
Mesajlar
2.265
Çözümler
28
Java:
 public static void Soru(ArrayList<Integer> list)
    {
        ArrayList <Integer> hesaplananlar = new ArrayList<>();
        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;
       
        for(int i = 0;i<list.size();i++)
        {
             // tek ve çift hesabı //
            if(i % 2 == 0) // index 2'ye tam bölünüyorsa çifttir. //
            {
                hesaplananlar.add(list.get(i) - 1);
            }
            else  // index 2'ye tam bölünmüyorsa zaten tek sayıdır //
            {
                hesaplananlar.add(list.get(i) + 1);
            }
            // tek ve çift hesabı //
        }
       
        for(int i = 0;i<hesaplananlar.size();i++)
        {
           
        // min ve max hesabı //
            if(hesaplananlar.get(i) > max) // ilgili değer max değerinden büyükse yeni max değeri indexteki değere eşit olacak //
            {
                max = hesaplananlar.get(i);
            }
            if(hesaplananlar.get(i) < min)// ilgili değer min değerinden küçükse yeni min değeri indexteki değere eşit olacak //
            {
                min = hesaplananlar.get(i);
            }
             // min ve max hesabı //
        }
        System.out.println("Sonuç: "+min * max);  // En son min ve max değerlerinin çarpımı ekrana basılacak //
    }

Kod aşağı yukarı böyle olacak. Anlamadığınız kısım olursa sorabilirsiniz. Çizerken kolay gelsin.
 
KS
KS
KaptaniDerya

KaptaniDerya

Kilopat
Katılım
22 Ekim 2016
Mesajlar
1.066
Makaleler
4
Çözümler
7
Java:
 public static void Soru(ArrayList<Integer> list)
    {
        ArrayList <Integer> hesaplananlar = new ArrayList<>();
        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;
      
        for(int i = 0;i<list.size();i++)
        {
             // tek ve çift hesabı //
            if(i % 2 == 0) // index 2'ye tam bölünüyorsa çifttir. //
            {
                hesaplananlar.add(list.get(i) - 1);
            }
            else  // index 2'ye tam bölünmüyorsa zaten tek sayıdır //
            {
                hesaplananlar.add(list.get(i) + 1);
            }
            // tek ve çift hesabı //
        }
      
        for(int i = 0;i<hesaplananlar.size();i++)
        {
          
        // min ve max hesabı //
            if(hesaplananlar.get(i) > max) // ilgili değer max değerinden büyükse yeni max değeri indexteki değere eşit olacak //
            {
                max = hesaplananlar.get(i);
            }
            if(hesaplananlar.get(i) < min)// ilgili değer min değerinden küçükse yeni min değeri indexteki değere eşit olacak //
            {
                min = hesaplananlar.get(i);
            }
             // min ve max hesabı //
        }
        System.out.println("Sonuç: "+min * max);  // En son min ve max değerlerinin çarpımı ekrana basılacak //
    }

Kod aşağı yukarı böyle olacak. Anlamadığınız kısım olursa sorabilirsiniz. Çizerken kolay gelsin.
Teşekkürler öncelikle. Forumda konuyu açtıktan sonra kodu buldum ve diyagrama çevirdim. Bulduğum kod bunun ingilizcesiydi. Yani konunun doğru cevabı budur ve kapanmıştır diyebiliriz.
 
Yukarı