Praca domowa z C#

0

Witam!
Rozpocząłem studia informatyczne powiem szczerze, że z zamiarem spacjalizacji się w bazach danych no ale jak wiadomo przez programowanie trzeba też przejść... Przechodząc jednak do meritum sprawy, dostałem pracę od wykladowcy do wykonania w C# treść jej jest następująca "Zaprojektuj (w języku CSharp) program konsolowy dla powtarzanych
obliczeń wartości funkcji F (x) zadanej wzorem według poniżej podanego
przydziału zadań indywidualnych".

Oto wzór który otrzymałem:

user image

Nie za bardzo wiem jak się za to zabrać. Nie oczekuje gotowych rozwiązań ale wskazówek a najlepiej jakiś odnośników do kursów, gdzie podobne zagadnienie będę miał wytłumaczone. Zależy mi bardzo na czasie.
Pozdrawiam

2

musisz wczytac/wypisac parametr, do tego przyda ci sie klasa Console https://msdn.microsoft.com/en-us/library/system.console(v=vs.110).aspx
do sparsowania parametru mozesz uzyc np. double.Parse https://msdn.microsoft.com/pl-pl/library/7yd1h1be(v=vs.110).aspx

zalazek funkcji ktora powinienes napisac:

public static double F(double x)
{
    if(x>=1)
    {
//tu obliczenia dla tego przypadku i zwrocenie wyniku
    }
    if(x<-1)
    {
//...
//return ...
    }
//tu obliczenia dla -1...1 i zwrocenie wyniku
}

w klasie Math znajdziesz wszystko czego ci trzeba do obliczen https://msdn.microsoft.com/pl-pl/library/system.math(v=vs.110).aspx

0

Ja bym jednak proponował zrobienie trzech funkcji - każda odpowiedzialna za inny przedział, i dopiero je wywoływać z if'a czy case'a.
Inaczej główna metoda będzie mało czytelna.

0
kreis84 napisał(a):

Ja bym jednak proponował zrobienie trzech funkcji - każda odpowiedzialna za inny przedział, i dopiero je wywoływać z if'a czy case'a.
Inaczej główna metoda będzie mało czytelna.

swietny pomysl na skomplikowanie banalnej funkcji. moze jeszcze osobna klase dla kazdego przedzialu ;) co rozumiesz przez case'a? switcha na double? :D

0

Ja Ci proponuję następujący algorytm:
START -> Podaj wartość double -> Wywołaj funkcję F(x) i wypisz jej wynik na ekran -> Przejdź do początku dopóki nie zostanie napisany pusty ciąg znaków -> STOP.

0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace XXX
{
    class Program
    {
        static void Main(string[] args)
        {

            ConsoleKeyInfo nz_quit;
            do
            {


                double nz_X;
                var nz_Q = 1;
    
                



                nz_X = 0.0f;
                Console.WriteLine("\n\n\t\tProgram Powtarzalne Obliczenia Funkcji\n\n");
                Console.Write("\tAby rozpocząć działanie programu, wprowadź wartość X: ");




                while (!double.TryParse(Console.ReadLine(), out nz_X))
                {
                    Console.Write("\n\tWprowadziłeś nieprawidłową wartość X, wprowadź prawidłową wartość: ");

                }
                Console.WriteLine("\n\tX wynosi: " + nz_X);



                Console.WriteLine("Sin(x)"); // sinus 
                Console.Write(Math.Sin(nz_X));


                Console.WriteLine("\n Cos(x)"); //cosinus 
                Console.Write(Math.Cos(nz_X));

                Console.WriteLine("\n\n xD");
                Console.Write(Math.Sqrt(nz_Q + Math.Abs(nz_X)*Math.Exp(e));



                Console.Write("\n\n\tCzy chcesz zakończyć działanie aplikacji (T/N):"); //po wykonaniu operacji pytamy się czy zamknąć program czy zacząć od nowa 

                nz_quit = Console.ReadKey(); //klawisz T zamyka aplikację każdy inny wznawia jej działanie 

            } while (nz_quit.Key != ConsoleKey.T);
        }
    }
}

Wyrzuca mi błąd :

Severity	Code	Description	Project	File	Line
Error	CS0103	The name 'e' does not exist in the current context	ConsoleApplication8	d:\users\norbert\documents\visual studio 2015\Projects\ConsoleApplication8\ConsoleApplication8\Program.cs	50
 
0

No przecież masz napisane co jest nie tak.

Nie istnieje, żadna zmienna e, której próbujesz użyć. Zamień to Math.E.

1
 class Program
    {
        public static double F(double x)
        {
            if (x < -1)
            {
                double absoluteX = Math.Abs(x);
                return Math.Sqrt(1 + absoluteX * Math.Pow(Math.E, absoluteX));
            }
            if (x >= 1)
            {
                return Math.Sqrt(1 + Math.Pow(Math.E, x)) + Math.Log10(x) * Math.Pow(1 + Math.Pow(x, 2), -2);
            }
            return Math.Sin(x) * Math.Cos(x);
        }
        static void Main(string[] args)
        {
            ConsoleKeyInfo cki = new ConsoleKeyInfo();
            double x;
            do
            {
                Console.WriteLine("Podaj x:");
                if (!double.TryParse(Console.ReadLine(), out x)){
                    Console.WriteLine("Nieprawidlowy x");
                    continue;
                }
                Console.WriteLine("Wartosc funkcji dla x wynosi: " + F(x));
                Console.WriteLine("Zakonczyc? [T/N]");
                cki = Console.ReadKey();
            }
            while(cki.Key != ConsoleKey.T);
        }
    }
0

Proszę o pomoc taka sama treść zadania tylko inne dane.

0

I masz problem, żeby w gotowym kodzie zmienić warunek i sposób obliczania wyniku?

0

To już jest śmieszne, żeby do gotowca nie umieć danych podstawić. Najwidoczniej powinieneś powtórzyć materiał, skoro sobie nie radzisz.

0

Jak mam powtórzyć materiał jak miałem dopiero jedne zajęcia xD

0

To sobie powtórz materiał z tych zajęć.

Zresztą masz tu gotowy kod, do którego wystarczy wstawić warunki i sposób obliczania funkcji z twojego zadania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1