Powtarzanie sekwencji obliczania wartości funkcji kwadratowej

0

Witam, na początku zaznaczę, że jestem początkującym, więc może sięto dla was wydać trywialne, no ale póki co nie umiem nawet tego :D

Chodzi, więc o to że napisałem sobie prosty programik w C# do obliczania wartości funkcji kwadratowej.
Chciałbym na końcu umieścić coś takiego, żeby wyskoczył tekst czy chcesz zakończyć ?
Jeśli "tak" to żeby program się zamknął, a jeśli "nie" to żeby konsola się wyczyściła i program włączył się od nowa.

Dzięki za pomoc

0

Musisz swój program umieść w pętli, np. do...while, spytać użytkownika (Console.WriteLine()), a potem wczytać jego wybór (Console.ReadLine) i sprawdzić we while czy warunek powtórzenia jest prawdziwy.

0

program umieść w pętli np. while i wykonuj go dopóki użytkownik nie naciśnie np. klawisza "t" lub "T". Taki warunek możesz napisać w ten sposób:

exit.ToString().ToUpper() != "T"

gdzie exit to zmienna typu char, do której przypisujesz odpowiedź na zadane pytanie: "czy zakończyć? T/N".

exit = Console.ReadKey().KeyChar;

Czyszczenie konsoli:

Console.Clear();

To chyba wszystko co może Ci się przydać, trzeba to tylko złożyć do kupy :)
p.s. widzę, że Somekind mnie ubiegł z odpowiedzią:)

0

Może zamieszczę ten programik tutaj, bo długi to on nie jest.

Czyli przed pierwszą klamerką { wpisuje "do" a na samym końcu "while"
I piszę

Console.WriteLine("Czy chcesz zakończyć działanie programu ?"); 

I jak na końcu z tym exit.ToString() bo tutaj już nie łapię :D

{
     
            float a, b, c;
            float X1, X2, Delta, X1i2;

            Console.Write("\n\n\tProgram do wyznaczania pierwiastków równania kwadratowego");
            Console.WriteLine("Wprowadź dane wejściowe: \n");
          
           
            do
            {
                Console.Write("\nWprowadź daną a: ");
                a = Convert.ToSingle(Console.ReadLine());
                if (a == 0.0f)
                {
                    Console.Beep();
                    Console.Write("Błąd a nie może równać się 0\n");
                    Console.WriteLine("Naciśnij dowolny klawisz");
                   Console.ReadKey();
                }
            } while (a == 0.0f);
                    Console.Write("Wprowadź wspólczynnik b: ");
                    b = Convert.ToSingle(Console.ReadLine());
                    Console.Write("Wprowadź współczynnik c: ");
                    c= Convert.ToSingle(Console.ReadLine());

                    Delta = b*b-4*a*c;

                    if (Delta > 0 )
                    { X1 = ( -b - b*b-4*a*c) / (2 * a );
                        X2 = (-b + b*b-4*a*c / (2 * a ));

                        Console.WriteLine("\n Równanie ma 2 pierwiastki rzeczywiste");
                        Console.WriteLine("\t X1 ="+X1 + "\t X2 = "+ X2 + "\t\n\t Delta= " + Delta);
                    }
                    else
                        if (Delta < 0)

                            Console.WriteLine("Równanie nie ma pierwiastków rzeczywistych");
                        else
                        {
                    X1i2=-b/(2*a);
                    Console.WriteLine("Równanie ma 1 pierwiastek podwójny:\n");

                    Console.WriteLine("\t\n Delta = " + Delta);
                           
                    Console.WriteLine("\t X1i2="+ X1i2);
                    
                        }
                
    
                {
                Console.WriteLine("Naciśnij dowolny klawisz");

} 
0

Napisz sobie algorytm albo jakiś konspekt na początek, może będzie Ci łatwiej ogarnąć co robisz i przede wszystkim po co to robisz.

Rób coś...
wyczyść konsolę,
zapytaj użytkownika o dane,
czytaj dane od użytkownika,
przelicz i wyświetl wynik,
zapytaj użytkownika czy chce wyjść z programu
czytaj odpowiedź od użytkownika.
dopóki użytkownik na ostatnie pytanie odpowie "tak". Jeśli odpowiedź będzie inna to oblicz kolejne równanie.

0

Mógłbyś napisać mi ten fragment kodu ?
Nie wiem jak mam to zrobić po

Console.WriteLine("Czy chcesz zakończyć działanie programu tak/nie ?");

I nie wiem w jaki sposób w razie "nie" ma się od nowa wszystko zacząć a jak "tak" to żeby się wyłączył.
Bo to będzie ten typ bool, prawda ?

jakbyś przerobił ten mój króciutki program to byłbym bardzo wdzieczny i przyspieszyłoby to moją naukę, bo już trochę kombinowałem jak to zrobić no ale niestety nie wyszło

dodanie znacznika <code class="csharp"> - fp

0

pomyśl sam, bo gotowiec Ci nic nie da a przy następnym zadaniu znów będziesz miał problem.

            do
            {
                c = Console.ReadKey().KeyChar;

            } while (c.ToString().ToLower() != "n");

tu masz pętlę która kończy się po wciśnięciu 'n' lub 'N'

0

Zrobiłem troche inaczej bo nie ogarniam z tym to lower i coś tam.

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            double a, b, c, x1, x2, delta;

            bool sukces;
            string kont;

            Console.WriteLine(
                "Program wyznacza pierwiastki równania kwadratowego\n");
            do
            {
                do
                {
                    Console.Write("Podaj a: ");

                    sukces = double.TryParse(Console.ReadLine(), out a);
                    if (!sukces) Console.WriteLine("błędny format liczby");
                    else if (a == 0) Console.WriteLine("a nie może być 0");
                } while (!sukces);
                do
                {
                    Console.Write("Podaj b: ");

                    sukces = double.TryParse(Console.ReadLine(), out b);
                    if (!sukces) Console.WriteLine("błędny format liczby");
                } while (!sukces);
                do
                {
                    Console.Write("Podaj c: ");

                    sukces = double.TryParse(Console.ReadLine(), out c);
                    if (!sukces) Console.WriteLine("błędny format liczby");
                } while (!sukces);

                delta = b * b - 4 * a * c;
                if (delta < 0) Console.WriteLine("Delta ujemna brak pierwiastków");
                else
                {
                    x1 = (-b - Math.Sqrt(delta)) / (2 * a);
                    x2 = (-b + Math.Sqrt(delta)) / (2 * a);
                    Console.WriteLine("Pierwiastki równania:\n");
                    Console.WriteLine("X1= " + x1 + "x2= " + x2);
                }
                Console.Write("Kontynuować (t =tak): ");
                kont = Console.ReadLine();
            } while (kont == t);
            Console.ReadKey();
        }
    }
} 

Wyskakuje błąd z "t" ale jak korzystam z podpowiedzi i robie to co sugeruje program to i tak nie działa.
Ktoś wie czemu ? :D
Dzięki za odp.

usunięcie zbędnych pustych linii z kodu - fp

0

A nie przypadkiem while (kont == "t")?

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