Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
3.7 kB
1
Indexable
Never
class Program
    {
        static void Tablice(ref int[] inTab1, ref int[] inTab2)
        {
            int dodatnie = 0;
            int ujemne = 0;

            // zliczanie ilosci liczb ujemnych w tablicy1
            for (int i = 0; i < inTab1.Length; i++)
            {
                if (inTab1[i] < 0)
                    ujemne++;
                else
                    dodatnie++;
            }

            // zliczanie ilosci liczb ujemnych w tablicy2
            for (int i = 0; i < inTab2.Length; i++)
            {
                if (inTab2[i] < 0)
                    ujemne++;
                else
                    dodatnie++;
            }

            // tworzenie tablic z odpowiednia iloscia elementow
            int[] outTab1 = new int[ujemne];
            int[] outTab2 = new int[dodatnie];

            // pomocnicze zmienne
            int iTab1 = 0, iTab2 = 0;

            for (int i = 0; i < inTab1.Length; i++)
                if (inTab1[i] < 0)
                {
                    outTab1[iTab1] = inTab1[i];
                    iTab1++;
                }
                else
                {
                    outTab2[iTab2] = inTab1[i];
                    iTab2++;
                }

            for (int i = 0; i < inTab2.Length; i++)
                if (inTab2[i] < 0)
                {
                    outTab1[iTab1] = inTab2[i];
                    iTab1++;
                }
                else
                {
                    outTab2[iTab2] = inTab2[i];
                    iTab2++;
                }

            inTab1 = outTab1;
            inTab2 = outTab2;
        }

        static void Main(string[] args)
        {
            /* Napisz metodę typu void, z dwoma parametrami typu ref int[], 
             * która wybiera wartości nieujemne z obu tablic i zapisuje je do 
             * pierwszej tablicy a wartości ujemne z obu tablic zapisuje do drugiej tablicy. 
             * Przykładowo dla { 1,-2,5} i { -2, 4, -9, 0}
             * mamy otrzymać { 1,5,4,0}, { -2,-2,9}. Wynik ma być zwrócony w parametrach
             * reprezentujących początkowe tablice(gdy nie ma elementów zwracamy pustą tablicę).
             */

            Console.WriteLine("Podaj rozmiar tablicy 1: ");
            int n = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Podaj rozmiar tablicy 2: ");
            int m = Convert.ToInt32(Console.ReadLine());
            Random r = new Random();
            int[] tab1 = new int[n];
            int[] tab2 = new int[m];

            // wypelnienie tablic (wartościami od -100 do 100)
            for (int i = 0; i < tab1.Length; i++)
                tab1[i] = r.Next(-100, 100);
            for (int i = 0; i < tab2.Length; i++)
                tab2[i] = r.Next(-100, 100);

            Console.WriteLine("\n=========tab 1============");

            for (int i = 0; i < tab1.Length; i++)
                Console.Write(tab1[i] + " ");

            Console.WriteLine("\n=========tab 2============");

            for (int i = 0; i < tab2.Length; i++)
                Console.Write(tab2[i] + " ");

            Tablice(ref tab1, ref tab2);
            Console.WriteLine();

            Console.WriteLine("\n========= Tablica ujemne ============");

            for (int i = 0; i < tab1.Length; i++)
                Console.Write(tab1[i] + " ");

            Console.WriteLine("\n========= Tablica pozostale ============");

            for (int i = 0; i < tab2.Length; i++)
                Console.Write(tab2[i] + " ");

            Console.ReadKey();
        }
    }