Kod nie działa

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

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            bool liniaKomend = true;
            double paramA = 0.0;
            double paramB = 0.0;
            double paramC = 0.0;
            if (args.Length < 3)
            {
                liniaKomend = false;
            }
            if (liniaKomend)
            {
                try
                {
                    paramA = Double.Parse(args[0]);
                    paramB = Double.Parse(args[1]);
                    paramC = Double.Parse(args[2]);
                }
                catch (Exception)
                {
                    Console.WriteLine("Jeden z wprowadzonych parametrow nie jest poprawna liczba");
                    liniaKomend = false; ;
                }
            }
            if (!liniaKomend)
            {
                paramA = pobierzLiczbe("pierwszy");
                paramB = pobierzLiczbe("drugi");
                paramC = pobierzLiczbe("trzeci");
            }

            Console.WriteLine("wprowadzone Parametry równania:\n");
            Console.WriteLine("A: " + paramA + "B:" + paramB + "C:" + paramC + "\n");

            if (paramA == 0)
            {
                Console.WriteLine("to nie jest równanie kwadratowe:A =0!");
                Console.ReadKey();
            }
            else
            {
                double delta = paramB * paramB - 4 * paramA * paramC;
                double wynik;
                if (delta < 0)
                {
                    Console.WriteLine("Delta <0");
                    Console.WriteLine("brak rozwiazan w zbiorze liczb rzeczywistych");
                    Console.ReadKey();
                }
                else
                {
                    if (delta == 0)
                    {
                        wynik = -paramB / (2 * paramA);
                        Console.WriteLine("rozwiazanie: x = " + wynik);
                        Console.ReadKey();
                    }
                    else
                        wynik = ((-paramB + Math.Sqrt(delta)) / (2 * paramA));
                    Console.WriteLine("Rozwiazanie: x1 = " + wynik);
                    wynik = ((-paramB - Math.Sqrt(delta)) / 2 * paramA);
                    Console.WriteLine("Rozwiazanie: x2 =" + wynik);
                    Console.ReadKey();
                }
            }

        }
        public static double pobierzLiczbe(string param)
        {
            double liczba = 0;
            bool sukces;
            do
            {
                Console.WriteLine("Pobierz podac {0} parametr równania:", param);
                try
               {
                        liczba = Double.Parse(Console.ReadLine());
                        sukces = true;
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("POdany paramnetr nie jest prawidłowa liczba");
                        sukces = false;
                    }
                }
                while (!sukces);
                return liczba;
            }
    }
}


witam mogl by ktos pomoc poniewaz kod sie nie odpala pokazuje mi blad w 97 i 100 lecz nie wiem dlaczego liczba nawiasów jest chyba odpowiednia

1

Po co masz ten try w 85 linii? Do tego czegoś mu brakuje o czym mówi kompilator.
Ten while też jest w złym miejscu

0

a wkotrym miejscu powinno byc bo dopiero sie uczy c#

0

Od razu widzę, że średnika Ci brakuje po while (!sukces)

0

tak zauwazylem w kodzie po skopiowaniu ale po poprawieniu dalej nic

1

Przekleiłem do siebie i działa po dodaniu średnika.

A no i jeszcze brak masz odwołania do przestrzeni nazw, żeby korzystać z konsoli, klas typów i wyjtków.

Czyli dodaj na samej górze
using System;

Patrz co IDE/kompilator krzyczy, wszystko jest wyjaśnione.

0

dobra zadzialalo dziekuje i wiem ze tu sie nie prosi ale czy mogl by mi ktos pomoc albo wytlumaczyc jak zmienic ten program poniewz jest napisany w sposob nie obiektowy a musi byc w obiektowy

0

A jak brzmi temat zadania?

0

Zapisz progam w sposób obiektowy; to tyle

0

OK, a mógłbyś opisać ten program dokładnie, co ma robić?

0

z tego co rozumiem to rownanie ktora jest wyzej jest rownaniem nie obiektowym a musze ja zamiec na obiektowa

0

Rozumiem, że Masz rozwiązać równanie kwadratowe, a program ma być obiektowy; stwórz sobie klasę, Rownanie, która będzie miala metody publiczne, czyKwadratowe, Rozwiaz, plus pewnie jakieś prywatne, oraz klasę do czytania danych i tyle.

0

No równania co do zasady nie mają wiele wspólnego z obiektowością lub jej brakiem.

Napisałeś kod imperatywny, wszystko w jednej funkcji itd. więc nie ma mowy o "obiektowości". Trudno zgadnąć, co wykładowca miał na myśli każąc napisać to "obiektowo" ale zakładałbym, że potrzebujesz różnych abstrakcji na elementy równania:

  • parametry
  • samo równanie (postać równania)
  • solwer (coś, co bierze równanie i je rozwiązuje)
  • choćby interfejs użytkownika, z którego pobierzesz gotowe parametry, a abstrakcja na interfejs będzie się martwić o interakcje, obsługę błędów itd

witam mogl by ktos pomoc poniewaz kod sie nie odpala pokazuje mi blad w 97 i 100 lecz nie wiem dlaczego liczba nawiasów jest chyba odpowiednia

sprawdź, co dokładnie mówi kompilator i tym się kieruj.

0

Tak z ciekawości chciałem ci sprawdzić ten błąd i
screenshot-20210531160537.png
Wszystko działa a zrobiłem dokładnie ctrl+c, ctrl+v na pewno masz projekt w c# utworzony?

 else
                        wynik = ((-paramB + Math.Sqrt(delta)) / (2 * paramA));
                    Console.WriteLine("Rozwiazanie: x1 = " + wynik);
                    wynik = ((-paramB - Math.Sqrt(delta)) / 2 * paramA);
                    Console.WriteLine("Rozwiazanie: x2 =" + wynik);
                    Console.ReadKey();

W tym miejscu brakuje ci klamer na pierwszy rzut oka. Cały kod ogólnie przydało by się jakoś sensownie podzielić. A i nie używaj polskich nazw zmiennych bo to bardzo zły nawyk.

Metodę ,którą napisałeś można napisać prościej

         public static double pobierzLiczbe(string param)
        {
            double liczba;
            Console.WriteLine("Pobierz podac {0} parametr równania:", param);
            while ( !Double.TryParse(Console.ReadLine(),out liczba))
            {
                Console.WriteLine("POdany paramnetr nie jest prawidłowa liczba");
                Console.WriteLine("Pobierz podac {0} parametr równania:", param);
            }
            return liczba;
        }

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