Soru
Programcıya aynı veya farklı içeren bir dizi (girilenDizi) veriliyor. Programcıdan ise, kendisine verilen bu dizideki tek veya çift sayılardan oluşan diziden farklı olan sayının kaçıncı sırada olduğunu (indeks değeri değil) bulması isteniyor.
Örneğin; dizideki 5 adet sayıdan 4 tanesi tek, 1 tanesi çift sayıdan oluşuyorsa; dizide bir adet bulunan çift sayının kaçıncı sırada bulunduğunun belirtilmesi.
Örnek
Girdi | Çıktı |
---|---|
girilenDizi: 2 4 7 8 10 | Sonuç: 3 (Tek olan 7 sayısı, 3. sırada) |
girilenDizi: 1 2 1 1 | Sonuç: 2 (Çift olan 2 sayısı, 2. sırada) |
Çözüm - C#
using System;
using System.Linq;
class Program
{
static void Main()
{
string girilenDizi = "2 4 7 8 10";
// Düz metindeki sayıları parçalayarak diziye ekle
string[] dizi = girilenDizi.Split(' ').ToArray();
int tekSayi = 0, ciftSayi = 0;
int tekSonuc = 0, ciftSonuc = 0;
// Her bir sayının tek mi, çift mi olduğunu bularak sayaçları arttır
foreach (var sayi in dizi)
{
// Sayı çift ise sayacı arttı ve sıra sayısını hafızaya kaydet
if (Convert.ToInt32(sayi) % 2 == 0)
{
ciftSayi++;
ciftSonuc = Array.IndexOf(dizi, sayi) + 1;
}
// Sayı tek ise sayacı arttı ve sıra sayısını hafızaya kaydet
else
{
tekSayi++;
tekSonuc = Array.IndexOf(dizi, sayi) + 1;
}
}
// Eğer tek sayıdan bir tane var ise tek sayının sırasını değilse diğerini yaz
if (tekSayi == 1)
Console.WriteLine(tekSonuc);
else
Console.WriteLine(ciftSonuc);
Console.Read();
}
}
Çözüm - Java
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String girilenDizi = "2 4 7 8 10";
// Düz metindeki sayıları parçalayarak diziye ekle
String[] dizi = girilenDizi.split(" ");
int tekSayi = 0, ciftSayi = 0;
int tekSonuc = 0, ciftSonuc = 0;
// Her bir sayının tek mi, çift mi olduğunu bularak sayaçları arttır
for (String sayi : dizi)
{
// Sayı çift ise sayacı arttı ve sıra sayısını hafızaya kaydet
if (Integer.parseInt(sayi) % 2 == 0)
{
ciftSayi++;
ciftSonuc = Arrays.asList(dizi).indexOf(sayi) + 1;
}
// Sayı tek ise sayacı arttı ve sıra sayısını hafızaya kaydet
else
{
tekSayi++;
tekSonuc = Arrays.asList(dizi).indexOf(sayi) + 1;
}
}
// Eğer tek sayıdan bir tane var ise tek sayının sırasını değilse diğerini yaz
if (tekSayi == 1)
System.out.println(tekSonuc);
else
System.out.println(ciftSonuc);
}
}