Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Методи и масиви C#

Методи и масиви C#

Мнениеот Гост » 11 Юни 2017, 15:54

Здравейте! Бих се радвал на малко помощ относно следната задача:

Да се реализират:

1. Метод за попълване на едномерен целочислен масив с цели числа в интервала [-10,50]. Методът да приема като параметър масива и да не връща резултат;

2. Метод за намиране на произведението на елементите на едномерен целочислен масив, които за четни и са по-големи от 10. Методът да приема като параметър масива и да връща целочислен резултат - произведението;

3. Метод за отпечатване на тези елементи от едномерен целочислен масив, които са по-малки от дадено цяло число N. Методът да приема като параметър масива и цяло число N.Методът да не връща резултат;

В главния метод да се въведе цяло число n и да се създаде едномерен целочислен масив с n елемента. Масивът да се попълни чрез метод 1. Чрез метод 2 да се намери произведението multi на четните елементи на масива, които са по-големи от 10. Чрез метод 3 да се отпечатат на екрана елементите на масива, които са по-малки от multi.
Код: Избери целия код
 class Program
    {
        static void Main(string[] args)
        {
           
           
        }

         static void createArray(int[]myArray)
        {
           
            Random r = new Random();
            for(int i = 0; i < myArray.Length; i++)
            {
               
                myArray[i] = r.Next(-10, 50);
                Console.WriteLine("myArray[{0}] = {1}",i,myArray[i]);
            }
        }   

        static int getMulti(int[] multiArray)
        {
            int brP = 0;
            int multi=1;
            for(int i = 0; i < multiArray.Length; i++)
            {
                if (multiArray[i] % 2 != 1 && multiArray[i]>10)
                    brP += 1;
                multi *= multiArray[i];
            }

            foreach (int i in multiArray) multi = multi * i;
           
            return multi;
        }
       


Мога до тук.... и пак не е сигурно, че е вярно
Благодаря на отзовалите се!
Гост
 

Re: Методи и масиви C#

Мнениеот Добромир Глухаров » 11 Юни 2017, 17:27

Код: Избери целия код
/*
 * Created by SharpDevelop.
 * User: Добромир
 * Date: 11.6.2017 г.
 * Time: 17:23 ч.
 *
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;

namespace Методи_и_масиви_C_
{
   class Program
   {
      public static void Main(string[] args)
      {
         uint n;
         do
            Console.Write("N (> 0) =");
         while (!uint.TryParse(Console.ReadLine(), out n) || n == 0);
         
         int[] myArray = new int[n];
         
         CreateArray(ref myArray);
         
         int multi = GetMulti(myArray);
         
         PrintSmallerThanN(myArray, multi);
         
         Console.Write("Press any key to continue . . . ");
         Console.ReadKey(true);
      }
      
      private static void CreateArray(ref int[] localArray)
      {
         Random r = new Random();
         for (int i = 0; i < localArray.Length; i++)
            Console.Write("{0} ", localArray[i] = r.Next(-10, 51));
         Console.WriteLine();
      }

      private static int GetMulti(int[] localArray)
      {
         bool empty = true;
         int multi = 1;
         for (int i = 0; i < localArray.Length; i++)
            if (localArray[i] % 2 != 1 && localArray[i] > 10) {
               multi *= localArray[i];
               empty = false;
            }
         if (empty)
            multi = int.MinValue;
         return multi;
      }
       
      private static void PrintSmallerThanN(int[] localArray, int N)
      {
         foreach (int i in localArray)
            if (i < N)
               Console.Write("{0} ", i);
         Console.WriteLine();
      }
   }
}
Аватар
Добромир Глухаров
Математик
 
Мнения: 2080
Регистриран на: 11 Яну 2010, 13:23
Рейтинг: 2178

Re: Методи и масиви C#

Мнениеот Гост » 11 Юни 2017, 18:02

Благодаря
Гост
 

Re: Методи и масиви C#

Мнениеот Гост » 11 Юни 2017, 18:41

Само, че 2) и 3) нещо не работят както трябва .. Тествах сега и нито ми вади произведението на четните числа от масива, нито ми принтира числата по-малки от мулти.. :shock: :shock:
Гост
 

Re: Методи и масиви C#

Мнениеот Добромир Глухаров » 11 Юни 2017, 19:00

Прибавих извеждане на multi. А иначе може да се случи в генерирания масив да няма четни, по-големи от 10 и тогава multi става равно на най-малкото цяло число и в масива няма по-малки от него. Също може единственото четно, по-голямо от 10 да е най-малкото в масива и тогава пак няма да се изведат никакви числа.

Код: Избери целия код
/*
 * Created by SharpDevelop.
 * User: Добромир
 * Date: 11.6.2017 г.
 * Time: 17:23 ч.
 *
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;

namespace Методи_и_масиви_C_
{
   class Program
   {
      public static void Main(string[] args)
      {
         uint n;
         do
            Console.Write("N (> 0) =");
         while (!uint.TryParse(Console.ReadLine(), out n) || n == 0);
         
         int[] myArray = new int[n];
         
         CreateArray(ref myArray);
         
         int multi = GetMulti(myArray);
         
         Console.WriteLine("multi={0}",multi);
         
         PrintSmallerThanN(myArray, multi);
         
         Console.Write("Press any key to continue . . . ");
         Console.ReadKey(true);
      }
      
      private static void CreateArray(ref int[] localArray)
      {
         Random r = new Random();
         for (int i = 0; i < localArray.Length; i++)
            Console.Write("{0} ", localArray[i] = r.Next(-10, 51));
         Console.WriteLine();
      }

      private static int GetMulti(int[] localArray)
      {
         bool empty = true;
         int multi = 1;
         for (int i = 0; i < localArray.Length; i++)
            if (localArray[i] % 2 != 1 && localArray[i] > 10) {
               multi *= localArray[i];
               empty = false;
            }
         if (empty)
            multi = int.MinValue;
         return multi;
      }
       
      private static void PrintSmallerThanN(int[] localArray, int N)
      {
         foreach (int i in localArray)
            if (i < N)
               Console.Write("{0} ", i);
         Console.WriteLine();
      }
   }
}
Аватар
Добромир Глухаров
Математик
 
Мнения: 2080
Регистриран на: 11 Яну 2010, 13:23
Рейтинг: 2178

Re: Методи и масиви C#

Мнениеот Гост » 11 Юни 2017, 19:29

Разбрах да, благодаря още един път
Гост
 

Re: Методи и масиви C#

Мнениеот Гост » 12 Юни 2017, 01:36

Имам още една задача, която е подобна на тази:

1. Метод за попълване на едномерен целочислен масив с цели числа в интервала [-1,100). Да приема като параметър масива и да не връща резултат.

2. Метод за намиране на най-големия от елементите и да приема като параметър масива и да връща като резултат целочислен резултат - най-голямата стойност в масива

3. Метод за намиране на средноаритметичното на елементите, които принадлежат на интервала [N/2,N]. Методът да приема като параметър масива и цяло число N. Като резултат да връща реална стойност - средноаритметичното на елементите, принадлежащи на интервала.

В главния метод да се въведе цяло число n и и да се създаде едномерен целочислен масив с n елемента. Масивът да се попълни чрез метод 1, чрез метод 2 да се намери елемента MAX и чрез метод 3 да се намери средноаритметичното на елементите на масива, принадлежащи на интервала [MAX/2,MAX]. Отпечатайте на екрана стойността MAX и средноаритметичното на елементите на масива, принадлежащи на [MAX/2,MAX]
Код: Избери целия код
static void Main(string[] args)
        {
            Console.Write("N = ");
            int n = int.Parse(Console.ReadLine());

            int[] myArray = new int[n];

            createArray(myArray);
            Console.WriteLine();

            int max = biggestNum(myArray);

            Console.WriteLine("MAX = {0}",max);
            Console.WriteLine();

   

           
        }

        private static void createArray(int[]localArray)
        {
            Random r = new Random();
            for(int i = 0; i < localArray.Length; i++)
            {
                localArray[i] = r.Next(-1,100);
                Console.Write("{0} ",localArray[i]);
            }
            Console.WriteLine();
        }

        private static int biggestNum(int[]localArray)
        {
            int max=localArray[0];
            for(int i=0;i<localArray.Length;i++)
                if (max < localArray[i])
                {
                    max = localArray[i];
                }
           
            return max;
        }

       private static double averageNum(int[]localArray,int N)
       {
            int br = 0;
            int sum = 0;

            for(int i=0;i<localArray.Length;i++)
                if(i>N/2 && i<N)
            {
                    sum += i;
                    br++;
            }

            double average = sum / br;
           

            return average;
        }
       


Направих я по същия начин, но 3) не работи.. Както и да го викам averageNum() в Main() ми дава грешка. Много ще съм благодарен, ако пак ми помогнете. Благодаря
Гост
 

Re: Методи и масиви C#

Мнениеот Добромир Глухаров » 12 Юни 2017, 10:52

Код: Избери целия код
       private static double averageNum(int[]localArray,int N)
       {
            int br = 0;
            int sum = 0;

            for(int i=0;i<localArray.Length;i++)
                if( localArray[i] >= N/2 && localArray[i] <= N )
            {
                    sum += localArray[i];
                    br++;
            }

            double average = (double)sum / (double)br;
           

            return average;
        }
Аватар
Добромир Глухаров
Математик
 
Мнения: 2080
Регистриран на: 11 Яну 2010, 13:23
Рейтинг: 2178

Re: Методи и масиви C#

Мнениеот Добромир Глухаров » 12 Юни 2017, 13:50

Всъщност трябва да подсигурим и случая, когато в масива няма такива числа. Тогава br==0:

Код: Избери целия код
       private static double averageNum(int[]localArray,int N)
       {
            int br = 0;
            int sum = 0;

            for(int i=0;i<localArray.Length;i++)
                if( localArray[i] >= N/2 && localArray[i] <= N )
            {
                    sum += localArray[i];
                    br++;
            }

            double average;

            if(br > 0) average = (double)sum / (double)br;
            else average = 0;           

            return average;
        }
Аватар
Добромир Глухаров
Математик
 
Мнения: 2080
Регистриран на: 11 Яну 2010, 13:23
Рейтинг: 2178


Назад към C#, Java



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)