Soru
Programcıdan; 1-100 arasında olan sayıları boşluklu bir şekilde alan (girilenSayi) ve girilen bu sayıların arasında, kullanıcının istediği kadar (adet), rastgele sayı üretilebilen bir program yazması isteniyor.
Not: Üretilen sayıların benzersiz olması istenmektedir.
Örnek
Girdi | Çıktı |
---|---|
girilenSayi: 1 4 6 7 11 adet: 3 |
Sonuç: 4 7 11 |
girilenSayi: 100 200 300 adet: 2 |
Sonuç: 200 300 |
Çözüm - C#
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Console.WriteLine("Lütfen 1-100 arasında istediğiniz sayıları giriniz (Eklemeyi bitirmek için 0'a basınız): ");
// Sayıları al
string girilenSayi = Console.ReadLine();
// Girilen sayıları parçalayıp diziye aktar
string[] dizi = girilenSayi?.Split(' ');
Console.Write("Kaç adet rastgele sayı üretilsin: ");
int adet = Convert.ToInt32(Console.ReadLine());
List<int> uretilen = new List<int>();
// Dizi boş olmadıkça ve dizinin uzunluğu adetten az oldukça devam et
if (dizi != null && adet <= dizi.Length)
{
Random rastgeleSayi = new Random();
for (int i = 0; i < adet; i++)
{
int sayilar = Convert.ToInt32(dizi[rastgeleSayi.Next(0, dizi.Length)]);
if (!uretilen.Contains(sayilar))
{
uretilen.Add(sayilar);
}
else
{
i--;
}
}
Console.WriteLine("Üretilen Sayılar: ");
foreach (int sayi in uretilen)
{
Console.WriteLine(sayi);
}
}
else
{
Console.WriteLine("Dizi boş veya girilen adet dizinin boyutundan daha büyük.");
}
Console.Read();
}
}
Çözüm - Java
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("Lütfen 1-100 arasında istediğiniz sayıları giriniz (Eklemeyi bitirmek için 0'a basınız): ");
Scanner sayilariAl = new Scanner(System.in);
String girilenSayi = sayilariAl.next();
// Girilen sayıları parçalayıp diziye aktar
String[] dizi = girilenSayi.split(" ");
System.out.println("Kaç adet rastgele sayı üretilsin: ");
Scanner adetAl = new Scanner(System.in);
int adet = adetAl.nextInt();
ArrayList<Integer> uretilen = new ArrayList<>();
// Dizi boş olmadıkça ve dizinin uzunluğu adetten az oldukça devam et
if (adet <= dizi.length)
{
Random rastgeleSayi = new Random();
for (int i = 0; i < adet; i++)
{
int sayilar = Integer.parseInt(dizi[rastgeleSayi.nextInt(1) + dizi.length]);
if (!uretilen.contains(sayilar))
{
uretilen.add(sayilar);
}
else
{
i--;
}
}
System.out.println("Üretilen Sayılar: ");
for (int sayi : uretilen)
{
System.out.println(sayi);
}
}
else
{
System.out.println("Dizi boş veya girilen adet dizinin boyutundan daha büyük.");
}
}
}