Софтуерно Инженерство
Loading...
+ Нов въпрос
DimitrovDelyan avatar DimitrovDelyan 0 Точки

Multiplication sign от methods more- exercise, C#

Здравейте колеги, може ли да споделите вашите идей как решихте задачата без да умножавате трите числа? Търся най- оптималния начин за решението на задачата. Моят вариант е да броя положителните знаци, като според това определям изхода.

 

using System;

namespace Multiplication_sign
{
    class Program
    {
        static int PositiveNegative(int num1, int num2, int num3)
        {
            int br = 0;
            //if nums are negative
            if (num1 == 0 || num2 == 0 || num3 == 0)
            {
                br = -1;
                return br;

            }

            //count of positive
            if (num1 > 0)
                br++;
            if (num2 > 0)
                br++;
            if (num3 > 0)
                br++;

            return br;

        }
        static void Main(string[] args)
        {
            int firstNum = int.Parse(Console.ReadLine());
            int secondNum = int.Parse(Console.ReadLine());
            int thirdNum = int.Parse(Console.ReadLine());

            int br = PositiveNegative(firstNum, secondNum, thirdNum);
            if (br == -1)
                Console.WriteLine("zero");
            else if (br % 2 == 0)
                Console.WriteLine("negative");
            else if (br % 2 != 0)
                Console.WriteLine("positive");

        }
    }
}

0
C# Fundamentals
MiroslavDinev avatar MiroslavDinev 97 Точки

Здравей, ето 1 решение от мен: https://pastebin.com/98HCA9fu

0
ver4eto avatar ver4eto 18 Точки

https://pastebin.com/4gkfa65t

 

Ето едно решение и от мен. И аз го направих с броя на числата с положителни и отрицателни стойности, но реших да ги броя с масив, че нали са ни любими масивите :)

0
TeodorStefanovPld avatar TeodorStefanovPld 1174 Точки

не че нещо но ок в масив са и въртиш цикъл върху 3 елемента? можеше просто arr.sum() и ако е 0 zero ако >0 positive и това може на един ред с ternary operator и задачата става 2 реда.

0
ver4eto avatar ver4eto 18 Точки

В задачата се изисква да се умножават числата, а не да се събират, затова не мисля, че array.sum е подходяща функция

0
kolioi avatar kolioi 535 Точки

Направи си една функция, която приема цяло число (int) за аргумент и връща -1, 0 или 1 в зависимост от знака на числото. Викаш я 3 пъти за всяко число и определаш знака на произведението. Нещо такова:

int sign(int number)
{
	if(number < 0)
		return -1;
	else if(number > 0)
		return 1;
	return 0;
}
int productSign = sign(n1) * sign(n2) * sign(n3);
if(productSign < 0)
	// negative
else if(productSign > 0)
	// positive
else
	// zero

 

0