Професионална програма
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
Module: C# Advanced
MiroslavDinev avatar MiroslavDinev 114 Точки

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

0
ver4eto avatar ver4eto 21 Точки

https://pastebin.com/4gkfa65t

 

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

0
TeodorStefanovPld avatar TeodorStefanovPld 1276 Точки

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

0
ver4eto avatar ver4eto 21 Точки

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

0
kolioi avatar kolioi 617 Точки

Направи си една функция, която приема цяло число (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
Joro_Paspalev avatar Joro_Paspalev 22 Точки

Здравейте,

прегледах кода на всички и тъй като аз съм го направил по съвсем различен начин качвам моя кратък код за бъдещите студенти, които търсят информация. Аз не броя позитивните знаци, а само негативните и нулата. Ако негативните са нечетни значи резултата е "negative"( минус по минус = плюс, минус по плюс = минус). Ако един път открием нула значи е  "zero". Надявам се да е разбираем.

 

using System;

namespace _5._Multiplication_Sign
{
    class Program
    {
        static void Main(string[] args)
        {
            int negativeCounter = 0;
            bool isThereZero = false;

            for (int i = 0; i < 3; i++)
            {
                double currentNumber = double.Parse(Console.ReadLine());

                if (currentNumber < 0)
                {
                    negativeCounter++;
                }

                if (currentNumber == 0)
                {
                    isThereZero = true;
                }

            }

            if (isThereZero)
            {
                Console.WriteLine("zero");
            }
            else if (negativeCounter % 2 == 1)
            {
                Console.WriteLine("negative");
            }
            else
            {
                Console.WriteLine("positive");
            }

        }
    }
}
 

Поздрави,

1
AntonDelev avatar AntonDelev 2 Точки

Всяко число умножено по 0 == 0, 

Всяко число умножено по отрицателно число == отрицателно число.

Следователно при първото срещнато отрицателно или 0, проверката нататък е безпредметна!

static void Main(string[] args)
        {
            int num1 = int.Parse(Console.ReadLine());
            int num2 = int.Parse(Console.ReadLine());
            int num3 = int.Parse(Console.ReadLine());

            int[] arr = { num1, num2, num3 };
            ReturnSign(arr);
        }
        static void ReturnSign(int[] arr)
        {

            bool isPositive = false;

            for (int i = 0; i < arr.Length; i++)
            {
                if(arr[i] < 0)
                {
                    Console.WriteLine("negative");
                    isPositive = false;
                    break;
                }
                else if(arr[i] == 0)
                {
                    Console.WriteLine("zero");
                    isPositive = false;
                    break;
                }
                else
                {
                    isPositive = true;
                }
            }
            if (isPositive) Console.WriteLine("positive");
        }

0
19/12/2020 13:14:56
DaleMathews avatar DaleMathews 0 Точки

Good evening! I want to help someone with my review of the https://ca.payforessay.net/assignment. I’ve ordered a few different works from them, so I have some idea of this company! So, prices are average, they’re not overpriced. I’ve always enjoyed the quality of my work. I’m still studying, so I plan to keep going buy!
 

0
steef_br avatar steef_br 2 Точки

https://pastebin.com/GJESbkby - Ето едно интересно решение.... Обяснение: Тъй като се изисква да се реши без умножение , най - умния или най - глупав начин който ми дойде е това , че когато умножим което и да е число по 0 резултата е 0 , ако няма 0  , но има отризателно число , резултата ще е винаги отрицателен и ако няма отицателно число това означава, че вс са полижителни и реално само с if проверки , ноооооооо   judge не ми го харесва и дава 88/100 , някакви идеи?

0
DeeDee.ag avatar DeeDee.ag 5 Точки

Защото минус по минус е плюс ;)

0
steef_br avatar steef_br 2 Точки

Тц, тц, тц ..... сe излагам тука пред чужденците :D angry 

0
DeeDee.ag avatar DeeDee.ag 5 Точки

Ето и моя код ТУК.

 
0
aboqnskiq1 avatar aboqnskiq1 1 Точки

https://pastebin.com/7Ci3Tr1B

0
Julianh12 avatar Julianh12 2 Точки
num_1=int(input())
num_2=int(input())
num_3=int(input())
count=0
zero=False
new_list=[num_1,num_2,num_3]
for i in range(len(new_list)):
    if num_3==0 or num_2==0 or num_1==0:
        zero=True
        break
    elif new_list[i]<0:
        count+=1

if count==1 or count==3:
    print("negative")
elif zero:
    print("zero")
else:
    print("positive")
0