bash piekno

Potrzebujesz pomocy z C, C++, perl, python, itp.
dawioo
Posty: 8
Rejestracja: 05 grudnia 2022, 18:16

bash piekno

Post autor: dawioo »

abcdefghijkloprstwxyz
Ostatnio zmieniony 09 grudnia 2022, 21:31 przez dawioo, łącznie zmieniany 1 raz.
Awatar użytkownika
dedito
Moderator
Posty: 3560
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Re: BASH funkcja kwadratowa.

Post autor: dedito »

dawioo
Posty: 8
Rejestracja: 05 grudnia 2022, 18:16

Re: BASH funkcja kwadratowa.

Post autor: dawioo »

ale git
Ostatnio zmieniony 09 grudnia 2022, 21:31 przez dawioo, łącznie zmieniany 1 raz.
Awatar użytkownika
marcin1982
Moderator
Posty: 1731
Rejestracja: 05 maja 2011, 12:59
Lokalizacja: Zagłębie Dąbrowskie

Re: BASH funkcja kwadratowa.

Post autor: marcin1982 »

Żeby równanie było kwadratowe, przynajmniejj współczynnik a przy x2 musi być różny od zera. Drugi warunek jest taki, żeby wszystkie współczynniki były liczbami.
Awatar użytkownika
dedito
Moderator
Posty: 3560
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Re: BASH funkcja kwadratowa.

Post autor: dedito »

dawioo pisze: 05 grudnia 2022, 20:48 @dedito mógłbyś mi to wprowadzić w ten kod byłbym wiedzieczny bo serio nic nie rozumiem
Mogę pomóc zrozumieć, ale nie mam zamiaru wyręczać w rozwiązaniu.
Skoro nic nie rozumiesz, to należałoby zacząć od jakiegoś darmowego kursu basha.
dawioo
Posty: 8
Rejestracja: 05 grudnia 2022, 18:16

Re: BASH funkcja kwadratowa.

Post autor: dawioo »

ok
Ostatnio zmieniony 09 grudnia 2022, 21:31 przez dawioo, łącznie zmieniany 1 raz.
dawioo
Posty: 8
Rejestracja: 05 grudnia 2022, 18:16

Re: BASH funkcja kwadratowa.

Post autor: dawioo »

Kod: Zaznacz cały

#!/bin/bash
    echo "PROGRAM DO OBLICZANIA DELTY"

    echo "Podaj A: "
    read A
    echo "Podaj B: "
    read B
    echo "Podaj C: "
    read C
    if ! [[ $A =~ ^-?[0-9]+(\.[0-9]+)?$ ]]; then
    echo "An invalid input"
    fi
    if ! [[ $B =~ ^-?[0-9]+(\.[0-9]+)?$ ]]; then
    echo "An invalid input"
    fi
    if ! [[ $C =~ ^-?[0-9]+(\.[0-9]+)?$ ]]; then
    echo "An invalid input"
    fi
    DELTA="$((B*B-4*A*C))"
    PIERW=`echo "scale=5 ; sqrt($DELTA)" | bc`
    CZYZERO=`echo "$DELTA==0" | bc`
    CZYWIEKSZE=`echo "$DELTA>0" | bc`
    echo "Delta wynosi: $DELTA , jej pierwiastek to: $PIERW"

    if [ "$CZYZERO" = 1 ]; then
        P0=`echo "scale5 ;(-1*$B)/(2*$A)" | bc`
        echo "Rownanie posiada jeden pierwiastek: $P0"
    elif [ "$CZYWIEKSZE" = 1 ]; then
        P1=`echo "scale=5 ;(-1*$B-$PIERW)/(2*$A)" | bc`
        P2=`echo "scale=5 ;(-1*$B+$PIERW)/(2*$A)" | bc`
        echo "Rozwnanie posiada dwa pierwiastki: $P1 i $P2"
    else
        echo "To rownanie nie posiada pierwiastkow"
    fi

To jest poprawny kod?
Awatar użytkownika
dedito
Moderator
Posty: 3560
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Re: BASH funkcja kwadratowa.

Post autor: dedito »

Zależy jak rozpatrywać poprawność.
Pod kątem sztuki programowania to nie bardzo.
np. wprowadzanie danych i kontrola składni prosi się o użycie funkcji

Pod kątem funkcjonalnym wygląda, że prawie spełnia założenia.
Niby sprawdza błąd składni, ale leci dalej.
Pytanie po co skoro jest błąd składni?
Tu by jakaś pętla by się przydała. Skoro wprowadzono błędne dane to zasygnalizuj to i poproś o poprawę, wracając ponownie do read.

Dlaczego te sprawdzanie składni nie jest zaraz po wprowadzeniu, tylko dopiero po wprowadzeniu wszystkich 3.

Dodatkowo sprawdź sobie co się stanie jak wpiszesz np. a=1, b=2, c=3 (podpowiadam delta będzie mniejsza od zera)
dawioo
Posty: 8
Rejestracja: 05 grudnia 2022, 18:16

Re: BASH funkcja kwadratowa.

Post autor: dawioo »

xyz
Ostatnio zmieniony 09 grudnia 2022, 21:31 przez dawioo, łącznie zmieniany 1 raz.
dawioo
Posty: 8
Rejestracja: 05 grudnia 2022, 18:16

Re: BASH funkcja kwadratowa.

Post autor: dawioo »

Jaki terminal jest dostepny z pakietem bc poniewaz w innych srodowiskach mi nie dziala bc
ODPOWIEDZ