Untitled

 avatar
unknown
plain_text
2 years ago
4.0 kB
5
Indexable
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Cwiczenie10
{
    class Program
    {
        public static bool CzyPierwsza(int x)
        {
            if (x <= 1) return false;       // nie jest pierwsza
            if (x == 2) return true;        // jest pierwsza
            if (x % 2 == 0) return false;   // nie jest pierwsza

            int temp = (int)Math.Floor(Math.Sqrt(x));

            for (int i = 3; i <= temp; i += 2)
                if (x % i == 0)
                    return false;

            return true;
        }

        static void SegmentacjaTablic(ref int[] t1, ref int[] t2)
        {
            int licznik_pierwsze = 0, licznik_reszta = 0;

            // sprawdzanie ilosci liczb pierwszych i pozostalych w tablicy t1
            for (int i = 0; i < t1.Length; i++)
            {
                if (CzyPierwsza(t1[i])){
                    licznik_pierwsze++;
                }
                else
                {
                    licznik_reszta++;
                }
            }

            // sprawdzanie ilosci liczb pierwszych i pozostalych w tablicy t2
            for (int i = 0; i < t2.Length; i++)
            {
                if (CzyPierwsza(t2[i]))
                {
                    licznik_pierwsze++;
                }
                else
                {
                    licznik_reszta++;
                }

            }

            Console.WriteLine("Licznik pierwsze: " + licznik_pierwsze + "; licznik reszta: " + licznik_reszta);
            int[] pierwsze = new int[licznik_pierwsze];
            int[] reszta = new int[licznik_reszta];

            
            int indeks_do_tablicy_pierwsze = 0, indeks_do_tablicy_reszta = 0;

            // uzupelnienie tab pierwsze i reszta wartosciami z t1
            for (int i = 0; i < t1.Length; i++)
            {
                if (CzyPierwsza(t1[i]))
                {
                    pierwsze[indeks_do_tablicy_pierwsze] = t1[i];
                    indeks_do_tablicy_pierwsze++;
                }
                else
                {
                    reszta[indeks_do_tablicy_reszta] = t1[i];
                    indeks_do_tablicy_reszta++;
                }
            }

            // uzupelnienie tab pierwsze i reszta wartosciami z t2
            for (int i = 0; i < t1.Length; i++)
            {
                if (CzyPierwsza(t2[i]))
                {
                    pierwsze[indeks_do_tablicy_pierwsze] = t2[i];
                    indeks_do_tablicy_pierwsze++;
                }
                else
                {
                    reszta[indeks_do_tablicy_reszta] = t2[i];
                    indeks_do_tablicy_reszta++;
                }
            }

            t1 = pierwsze;
            t2 = reszta;
        }
        static void Main(string[] args)
        {
            int[] t1 = new int[] { 4, 3, 5, 6, 8, 9, 14 };
            int[] t2 = new int[] { 8, 9, 10, 4, 3, 9, 11 };

            Console.Write("Tablice przed segregacją. \nTablica pierwsza: ");
            for (int i = 0; i < t1.Length; i++)
                Console.Write(t1[i] + " ");

            Console.Write("\nTablica druga: ");
            for (int i = 0; i < t2.Length; i++)
                Console.Write(t2[i] + " ");

            Console.WriteLine();


            Console.WriteLine("Tablice po segregacji: ");
            SegmentacjaTablic(ref t1, ref t2);

            Console.WriteLine("\nTablica liczb pierwszych");
            for (int i = 0; i < t1.Length; i++)
                Console.Write(t1[i] + " ");
            Console.WriteLine("\nTablica pozostałych liczb: ");
            for (int i = 0; i < t2.Length; i++)
                Console.Write(t2[i] + " ");

            Console.ReadKey();
        }
    }
}
Editor is loading...