Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2019, 17:20   #1
hh424
Новичок
Джуниор
 
Регистрация: 11.10.2019
Сообщений: 6
По умолчанию Помогите решить задачку C#

Нужно найти значение функции(приложил картинку) используя параметры if/else и логических операций && и || (если нужно). Не могу понять как например не вводить a и b (выбивает ошибку если нажимаю enter когда запрашивает эти значения), а если ввожу отрицательные значения то всё равно программа решает функцию lnx. А мне нужно что бы еще решало и последнюю функцию если x>0, а ab<0.
Код:
using System;

namespace LR6
{
	class Program
	{
		public static void Main(string[] args)
		{
            Console.Write("x=");
            double x = double.Parse(Console.ReadLine());
            Console.Write("a=");
            double a = double.Parse(Console.ReadLine());
            Console.Write("b=");
            double b = double.Parse(Console.ReadLine());
            if (x > 0 && a > 0)
            {
                Console.WriteLine("z=x*a=" + (x * a));
            }
            else if (b > 0 && x < 0)
            {
            	Console.WriteLine("z=b*x=" + (b * x));
            }
            else if(x > 0)
            {
            	Console.WriteLine("z=lnX=" + (Math.Log10(x)));
            }
            else if(x > 0 && a < 0 && b < 0)
            {
            	Console.WriteLine("z=a*b+lnX=" + ((a * b) + Math.Log10(x)));
            }

            Console.ReadLine();
		}
	}
}
Изображения
Тип файла: png Screenshot_1.png (16.2 Кб, 33 просмотров)
hh424 вне форума Ответить с цитированием
Старый 11.10.2019, 17:51   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
else if(x > 0 && a < 0 && b < 0)
            {
            	Console.WriteLine("z=a*b+lnX=" + ((a * b) + Math.Log10(x)));
            }
так:
Код:
else if(x > 0 && (a*b) < 0 )
            {
            	Console.WriteLine("z=a*b+lnX=" + ((a * b) + Math.Log(x)));
            }
обратите внимание, что Вам нужен натуральный логарифм, а не десятичный, как Вы написали в коде
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.10.2019, 17:58   #3
hh424
Новичок
Джуниор
 
Регистрация: 11.10.2019
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
так:
Код:
else if(x > 0 && (a*b) < 0 )
            {
            	Console.WriteLine("z=a*b+lnX=" + ((a * b) + Math.Log(x)));
            }
обратите внимание, что Вам нужен натуральный логарифм, а не десятичный, как Вы написали в коде
Не помогло, все равно считает lnx
Изображения
Тип файла: png Screenshot_2.png (2.4 Кб, 22 просмотров)
hh424 вне форума Ответить с цитированием
Старый 11.10.2019, 18:01   #4
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

переместил проблемное условие на 1-е место
несмотря на ответ ниже думаю ключ в приоритете условий

и вообще возможно 24 варианта перестановок 4-х пунктов

и исправил логарифмы
и вписал условия как в задании буквально

Код:
// ln.cs
using System;using System.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
	double x = 5; 
	double a = 2; 
	double b = -2;
            Console.WriteLine("x = " + x); Console.WriteLine("a = " + a); Console.WriteLine("b = " + b); 
             if(x > 0 && (a * b) < 0)
             {Console.WriteLine("z = a*b+lnX =   " + ((a * b) + Math.Log(x))); }
            else if (a > 0 && x > 0)
            { Console.WriteLine("z = a*x =   " + (a * x)); }
            else if (b > 0 && x < 0)
            {Console.WriteLine("z = b*x =    " + (b * x));  }
            else if(x > 0)
            {Console.WriteLine("z = ln X =   " + (Math.Log(x))); }
}}}
набрано и проверено чисто онлайн

rextester.com/KKV44148

а по теме про символы возможно подсказка
в решении символьной задачи
бегущая строка running string
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 11.10.2019 в 18:21.
сфинкс вне форума Ответить с цитированием
Старый 11.10.2019, 18:01   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

А должно по другому, смотрим условия
Код:
            else if(x > 0)

            else if(x > 0 && a < 0 && b < 0)
Почему первое должно провалиться, а второе выполнится?
p51x вне форума Ответить с цитированием
Старый 11.10.2019, 18:03   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Сообщение от сфинкс Посмотреть сообщение
переместил проблемное условие на 1-е место
Не надо так делать. У вас при a > 0 & x > 0 будет считать не ax как надо по условию.
p51x вне форума Ответить с цитированием
Старый 11.10.2019, 18:05   #7
hh424
Новичок
Джуниор
 
Регистрация: 11.10.2019
Сообщений: 6
По умолчанию

Если переношу проблемное то не решает ax
hh424 вне форума Ответить с цитированием
Старый 11.10.2019, 18:05   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от hh424 Посмотреть сообщение
Не помогло, все равно считает lnx
ну да, конечно.

Вы же условием выше проверяете x<0 и считаете ln(x) (вне зависимости от a b
следующее условие уже не выполняется.

попробуйте так
Код:
           else if(x > 0 && (a*b)>=0)
            {
            	Console.WriteLine("z=lnX=" + (Math.Log(x)));
            }
            else if(x > 0 && (a*b)<0)
            {
            	Console.WriteLine("z=a*b+lnX=" + ((a * b) + Math.Log(x)));
            }
            else{
            	Console.WriteLine("z is undefined for this X,A,B!");
}
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.10.2019, 18:12   #9
hh424
Новичок
Джуниор
 
Регистрация: 11.10.2019
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну да, конечно.

Вы же условием выше проверяете x<0 и считаете ln(x) (вне зависимости от a b
следующее условие уже не выполняется.

попробуйте так
Код:
           else if(x > 0 && (a*b)>=0)
            {
            	Console.WriteLine("z=lnX=" + (Math.Log(x)));
            }
            else if(x > 0 && (a*b)<0)
            {
            	Console.WriteLine("z=a*b+lnX=" + ((a * b) + Math.Log(x)));
            }
            else{
            	Console.WriteLine("z is undefined for this X,A,B!");
}
Последнее помогло, спасибо!
hh424 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачку Dimal88 Паскаль, Turbo Pascal, PascalABC.NET 1 03.06.2009 08:48
помогите мне решить задачку viking12 Microsoft Office Excel 1 27.04.2009 18:50