Soru
Bir üniversitede okuyan öğrenciler A (aDersiniAlanlar) veya B (bDersiniAlanlar) dersini seçmişlerdir. Bazı öğrenciler ise hem A hem B dersini seçmiştir. A ve B derslerinin danışman hocası her iki dersi alan, ortak öğrencileri görmek istemektedir.
Bu noktada programcıdan istenen; her iki dersi de alan öğrenci numaralarını tespit etmesi ve ilgili öğrenci numaralarını sıralı bir şekilde yazması istenmektedir.
Örnek
Girdi | Çıktı |
---|---|
aDersiniAlanlar: 10, 60, 80, 70, 40, 90 bDersiniAlanlar: 50, 30, 20, 10, 90, 60 |
Sonuç: 10, 60, 90 |
aDersiniAlanlar: 5, 8, 1 bDersiniAlanlar: 1, 6, 2, 8, 9 |
Sonuç: 1,8 |
Çözüm - C#
using System;
using System.Collections.Generic;
using System.Linq;
internal class Program
{
private static void Main(string[] args)
{
// A ve B derslerini alan öğrencilerin öğrenci numaraları
int[] aDersiniAlanlar = {10, 60, 80, 70, 40, 90};
int[] bDersiniAlanlar = {50, 30, 20, 10, 90, 60};
// Her iki dersi seçen (aynı) öğrencileri bul (Yaşasın Linq!)
IEnumerable<int> ikiDersiSecenler = aDersiniAlanlar.Intersect(bDersiniAlanlar);
// Her iki dersi seçen (aynı) öğreleri sırala (Yaşasın Linq!)
IEnumerable<int> siraliListe = ikiDersiSecenler.OrderBy(i => i);
// Aynı dersi seçen öğrencileri sıralı olarak yazdır
foreach (var secimYapanlar in siraliListe)
Console.Write(secimYapanlar + " ");
Console.Read();
}
}
Çözüm - Java
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] quizSonuclari = {1, 4, 3, 4};
// Sıralı sonuçlar dizisi oluştur ve Quiz sonuçlarını kopyala
int[] siraliSonuclar = quizSonuclari.clone();
// Sıralı sonuçlar dizisini küçükten büyüğe sırala
Arrays.sort(siraliSonuclar);
// İki dizideki sonuçlar birbiriyle eşdeğer ise Başarılı, değilse Başarısız yaz
if (Arrays.equals(siraliSonuclar, quizSonuclari))
System.out.println("Başarılı");
else
System.out.println("Başarısız");
}
}