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 115 Точки

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

0
mariqnyordanov avatar mariqnyordanov 2 Точки

Това решение дава Compile time error

0
ver4eto avatar ver4eto 23 Точки

https://pastebin.com/4gkfa65t

 

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

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

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

-1
ver4eto avatar ver4eto 23 Точки

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

1
mariqnyordanov avatar mariqnyordanov 2 Точки

В задачата изрично се изисква да не се умножават числата

1
kolioi avatar kolioi 641 Точки

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

 

1
Joro_Paspalev avatar Joro_Paspalev 23 Точки

Здравейте,

прегледах кода на всички и тъй като аз съм го направил по съвсем различен начин качвам моя кратък код за бъдещите студенти, които търсят информация. Аз не броя позитивните знаци, а само негативните и нулата. Ако негативните са нечетни значи резултата е "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 1 Точки

Всяко число умножено по 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");
        }

-1
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
mariqnyordanov avatar mariqnyordanov 2 Точки

Ако умножиш отрицателно по отрицателно какво получаваш ;-)

0
steef_br avatar steef_br 2 Точки

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

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

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

1
steef_br avatar steef_br 2 Точки

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

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

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

 
0
aboqnskiq1 avatar aboqnskiq1 1 Точки

https://pastebin.com/7Ci3Tr1B

0
Julianh12 avatar Julianh12 3 Точки
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
krum_43 avatar krum_43 756 Точки

Добре е когато се задава нов въпрос да се дава и линк към условието на задачата.

0
deqn96 avatar deqn96 2 Точки

на мен пък ми дава 88т. Някъде съм изпуснал нещо уж да го правя по бабения начин.

 

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

            bool isNum1Positive = ChechPositiveNumbers(num1);
            bool isNum2Positive = ChechPositiveNumbers(num2);
            bool isNum3Positive = ChechPositiveNumbers(num3);
            bool resultPositive = isNum1Positive && isNum2Positive && isNum3Positive;

            bool isNum1Zero = CheckZeroNumber(num1);
            bool isNum2Zero = CheckZeroNumber(num2);
            bool isNum3Zero = CheckZeroNumber(num3);
            bool resultZero = isNum1Zero && isNum2Zero && isNum3Zero;

            PrintSign(resultZero, resultPositive);
        }


        static bool ChechPositiveNumbers(int num)
        {
            if (num >= 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        static bool CheckZeroNumber(int num)
        {
            if (num == 0)
            {
                return false;
            }
            else
            {
                return true;
            }
        }

        static void PrintSign(bool resultZero, bool resultPositive)
        {
            if (resultZero == false)
            {
                Console.WriteLine("zero");
            }
            else
            {
                if (resultPositive == true)
                {
                    Console.WriteLine("positive");
                }
                else
                {
                    Console.WriteLine("negative");
                }
            }
        }

0
SamuilDimitrov01 avatar SamuilDimitrov01 2 Точки

using System;
using System.Linq;
using System.Numerics;

namespace Methods_More_Exercises_Last_one
{
    internal class Program
    {

        static int CountNegativeNumbers(int[] numArr)
        {
            return numArr.Count(symbol => symbol < 0);//броим броя на отрицателните числа
        }

        static void Main(string[] args)
        {

    //5.Multiplication Sign
            int[] numArr = new int[3];

            for (int i = 0; i < 3; i++)
            {
                numArr[i] = int.Parse(Console.ReadLine());
            }

            if (numArr.Any(symbol => symbol == 0)) //ако някое от числата е 0 затрива всички, защото всичко става 0
            {
                Console.WriteLine("zero");
                return;
            }

            if (CountNegativeNumbers(numArr) % 2 == 0) //ако имаме четен брой негативни числа стават позитивни (по двойки Пример: -2*-2=4)
                Console.WriteLine("positive");
            else //в противен случай щом едно число нарушава балансът с - всички стават отрицателни
                Console.WriteLine("negative");
        }
    }
}

 

0
16/06/2023 02:01:22
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.