Kontynuacja programu po zakończeniu

0

Hej!
Mam taki program, chciałbym, żeby dało się go wznowić od początku, bez ponownego otwierania okna. Powie ktoś jak to zrobić?
Z góry dzięki.

using Microsoft.VisualBasic.CompilerServices;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
    class Program
    {
        public static double a, b, c, wynik_delta, x1, x2;
        public static void wprowadz()
        {
            Console.WriteLine("Podaj współczynniki równania kwadratowego \n");
            a = 0;
            b = 0;
            c = 0;
            Console.Write("a: ");
            for (bool sprawdź = double.TryParse(Console.ReadLine(), out a); !sprawdź || a == 0; sprawdź = double.TryParse(Console.ReadLine(), out a))
            {
                if (sprawdź)
                    Console.WriteLine("Błąd! Aby funkcja była kwadratowa współczynnik musi być różny od 0!");
                else
                    Console.WriteLine("Dopuszczalne są tylko liczby!");
            }
            Console.Write("b: ");
            while (!double.TryParse(Console.ReadLine(), out b))
                Console.WriteLine("Dopuszczalne są tylko liczby!");
            Console.Write("c: ");
            while (!double.TryParse(Console.ReadLine(), out c))
                Console.WriteLine("Dopuszczalne są tylko liczby!");
        }
        public static double delta(double a, double b, double c)
        {
            wynik_delta = (b * b) - 4 * a * c;
            Console.WriteLine("Delta wynosi: " + wynik_delta + " \n");
            return wynik_delta;
        }

        public static void x()
        {
            if (wynik_delta == 0)
            {
                x1 = x2 = -b / (2 * a);
            Console.WriteLine("Dla delty równej 0: \nx1 i x2 wynoszą: " + x1);
           Console.WriteLine("Wzór funkcji kwadratowej: " + a + "x^2 + " + b + "x + " + c);
            }
            else if (wynik_delta > 0)
            {
                x1 = (-b - Math.Sqrt(wynik_delta)) / (2 * a);
                x2 = (-b + Math.Sqrt(wynik_delta)) / (2 * a);
            Console.WriteLine("Dla delty większej niż 0:\nx1 = " + x1 + " \nx2 = " + x2);
           Console.WriteLine("Wzór funkcji kwadratowej: " + a + "x^2 + " + b + "x + " + c);
            }
        }

        public static void ix()
        {
            double Re, Im;

            if (wynik_delta < 0)
            {
                Re = (-b / (2 * a));
                Im = (Math.Sqrt(-wynik_delta)) / (2 * a);
             Console.WriteLine("Pierwiastki zespolone: ");
             Console.WriteLine("" + Re + "-" + Im + "i");
            Console.WriteLine("" + Re + "+" + Im + "i");
           Console.WriteLine("Wzór funkcji kwadratowej: " + a + "x^2 + " + b + "x + " + c);
            }
        }
        static void Main(string[] args)
        {
            wprowadz();
            Console.WriteLine(a + " " + b + " " + c);
            delta(a, b, c);
            x();
            ix();
            Console.ReadLine();
            Console.ReadKey();
        }
    }
}

0

Ale co dokładnie.
Użytkownik wyłączy aplikację i co ma się dziać?
Użytkownik ponownie włączy aplikację i co ma się wtedy dziać?

0

@youmound: że od nowa może podawać te współczynniki, wznowić działanie programu od początku.

0

A czy tak nie dzieje się już teraz? Wyłączysz program. Włączysz na nowo i on od początku leci...

Twój wątku sugeruje, że miałoby się coś w tle dziać, po wyłączeniu aplikacji, ale nie precyzujesz co.

0

@youmound: chodzi o takie coś, że wpisujesz tam te dane wylicza tę deltę i potem pyta w konsoli czy policzyć dalej czy zakończyć i jak dasz liczyć dalej to znowu możesz podać dane w tej samej konsoli, a jak nie to wtedy się wyłącza

2

zrob petle nieskonczonosci w okol tego i jezeli odpowie ze ma sie zakonczyc wyjdz z petli

0
int wyjscie = 1;
do {

wprowadz();

Console.WriteLine("Czy chcesz liczyc ponownie? Wpisz dowolną liczbę jeśli tak, wpisz 0 jeśli nie");
Console.ReadLine(wyjscie);


}while (wyjscie!=0);

Po każdym wykonaniu funkcji wprowadź, będzie pytał czy powtórzyć program tj. wykonać na nowo funkcję wprowadź i to co się dzieje dalej.

0

@youmound: super dzięki, tylko nie zbyt wiem jak mam to wkomponować w ten kodzik, bo tam się co kawałek odwołuje do innego "public"

2

Widzę, że dopiero zaczynasz przygodę z programowanie. Kilka tipów:

  1. Już przymknę oko na polskie nazwy
  2. Proszę, metody typu "wprowadz()", "x()", "ix(x)" - słodki jezu. Jeśli piszesz już po polsku, przynajmniej w nazwie stosuj "czasownik" czyli np zamiast "x()" - "ObliczX()" - już lepsze, chociaż nadal nie doskonałe.

Proszę weź sobie do serca chociaż te rady :)

1
        static void Main(string[] args)
{

int wyjscie = 1;
do {
            wprowadz();
            Console.WriteLine(a + " " + b + " " + c);
            delta(a, b, c);
            x();
            ix();
            Console.ReadLine(); // co to ma robic?
            Console.ReadKey(); // to tez?

Console.WriteLine("Czy chcesz liczyc ponownie? Wpisz dowolną liczbę jeśli tak, wpisz 0 jeśli nie");
 wyjscie = Convert.ToInt32(Console.ReadLine()); 


}while (wyjscie!=0);
        }


Spróbuj tak

1

@Undo: ok, proszę o traktowanie jako typowy początkujący :)

0

@youmound: mam taki błąd przy tym wierszu z readlinem wyjscia : "Żadne przeładowanie metody „ReadLine” nie pobiera następującej liczby argumentów: „1”"

1

Podmień na:

wyjscie = Convert.ToInt32(Console.ReadLine()); 

W poprzednim poście tez poprawiłem.

0

@youmound: teraz jest super, bardzo Ci dziękuję.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.