Facman Napisano Grudzień 28, 2011 Zgłoszenie Share Napisano Grudzień 28, 2011 Witam użytkowników. Mam ogromny problem jak napisać skrypt, który będzie liczył wzory skróconego mnożenia do potęgi 2 i 3 oraz obliczał potęgi. Męczyłem się z tym długie godziny, lecz nic nie wskórałem. Mogę napisać 2 programy lub 1 zawierający oba skrypty. Jeżeli chodzi o potęgi najlepiej by program działał tak, by prosił o podanie liczby, później potęgi, a potem to obliczał. Co do wzorów skróconego mnożenia to, by dać listę wzorów skróconego mnożenia, czyli: (a+b)2, (a-b)2, (a+b)3, (a-b)3. Później podać odpowiednie liczby i obliczyć wzór. Z góry dzięki za pomoc! Sam to próbowałem ogarnąć, ale jedynym tego skutkiem były zmarnowane godziny. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
esail Napisano Grudzień 28, 2011 Zgłoszenie Share Napisano Grudzień 28, 2011 Stówka przelewem na konto i Ci napiszę. 2 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Grudzień 28, 2011 Zgłoszenie Share Napisano Grudzień 28, 2011 Sam to próbowałem ogarnąć, ale jedynym tego skutkiem były zmarnowane godziny.Pokaż co wyprodukowałeś, to może ktoś powie gdzie jest błąd. Mam nadzieję, ze nie masz problemu z algorytmem, bo trudny nie jest. Przekazanie 2 parametrów do skryptu to też nie rocket science. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Grudzień 29, 2011 Zgłoszenie Share Napisano Grudzień 29, 2011 przeczytaj, poćwicz http://dief.republika.pl/main.html pokaż z czym problem 1 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Facman Napisano Grudzień 31, 2011 Autor Zgłoszenie Share Napisano Grudzień 31, 2011 Ok. Jestem nie bylo mnie, wiec przedstawie teraz skrypt, który mi dziala, chodz za ladnie nie wyglada, który dotyczy wzorów skróconego mnozenia: #!/bin/bash echo "!Witam w programie wzory skróconego mnozenia i potegi!" echo "wybierz wzór który chcesz uzyc" echo "1 (a+b)2" echo "2 (a-b)2" echo "3 (a+b)3" echo "4 (a-b)3" read nr case "$nr" in 1) echo "podaj a i b" read a read b wynik=$(($a*$a)) wynik2=$((2*$a*$) wynik3=$(($b*$) w=$(($wynik+$wynik2+$wynik3)) echo "wynik to $w";; 2) echo "podaj a i b" read a read b wynik=$(($a*$a)) wynik2=$((2*$a*$) wynik3=$(($b*$) w=$(($wynik-$wynik2+$wynik3)) echo "wynik to $w";; 3) echo "podaj a i b" read a read b wynik=$(($a*$a*$a)) wynik2=$((3*$a*$a*$) wynik3=$((3*$a*$a*$) wynik4=$(($b*$b*$) w=$(($wynik-$wynik2+$wynik3+$wynik4)) echo "wynik to $w";; 4) echo "podaj a i b" read a read b wynik=$(($a*$a*$a)) wynik2=$((3*$a*$a*$) wynik3=$((3*$a*$a*$) wynik4=$(($b*$b*$) w=$(($wynik-$wynik2+$wynik3-$wynik4)) echo "wynik to $w";; esac Ok, a teraz glówny problem z potegami. Próbowalem pouzywac kilku sposobów, lecz wciaz nie dziala. Tu pokaze owoce moich dzialan. Prosze powiedzcie gdzie tkwi problem, albo go poprawcie: #!/bin/bash echo "!Witam w programie potegi!" echo "Podaj liczbe ktura chcesz podniesc do potegi" read liczba echo "Podaj potege do której chcesz podniesc liczbe" read potega $wynik bc 1; for $liczba=1 le $potega do $wynik=$(($wynik*$liczba)); echo "Wynikiem, $liczba, do potegi, $potega, jest, $wynik" done Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
morsik Napisano Grudzień 31, 2011 Zgłoszenie Share Napisano Grudzień 31, 2011 Poprawilem. Mam dzialajacy kod, ale pomecz sie jeszcze troche. Dowód: [morsik@vader Scripts]$ ./potega.sh 2 10 2 ^ 1 = 2 2 ^ 2 = 4 2 ^ 3 = 8 2 ^ 4 = 16 2 ^ 5 = 32 2 ^ 6 = 64 2 ^ 7 = 128 2 ^ 8 = 256 2 ^ 9 = 512 2 ^ 10 = 1024 [morsik@vader Scripts]$ ./potega.sh 3 6 3 ^ 1 = 3 3 ^ 2 = 9 3 ^ 3 = 27 3 ^ 4 = 81 3 ^ 5 = 243 3 ^ 6 = 729 Blad masz w linijce z forem, jest tam konstrukcja która po prostu nie istnieje... dodatkowo, linijka w której jest $wynik bc 1, jest jakas dziwna. Nie wiem zupelnie co ma tam oznaczac. W powyzszym wyjsciu lekko zmodyfikowalem program zeby mozna bylo podac liczby jako argumenty, zamiast w programie. Jako pomoc, podam Ci ta strone: http://www.cyberciti.../bash-for-loop/ (pomine fakt Twojego lenistwa, bo akurat po wpisaniu w Google "bash for loop" ta strone jest pierwszym wynikiem...) Na koniec... pisze sie "która" a nie "ktura". Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Facman Napisano Styczeń 1, 2012 Autor Zgłoszenie Share Napisano Styczeń 1, 2012 (edytowane) Mam jeszcze jeden problem z potegami. Liczby dodatnie to liczy, ale przy minusowych cos nie dziala wiecie o co w tym chodzi? #!/bin/bash echo "!Witam w programie potegi!" echo "Podaj podstawe potegi" read x echo "podaj wykladnik potegi" read y let potega=x**y #zamiast: potega=$[x**y] echo $potega Edytowane Styczeń 2, 2012 przez Facman Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Facman Napisano Styczeń 2, 2012 Autor Zgłoszenie Share Napisano Styczeń 2, 2012 odświeżam Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
andrew Napisano Styczeń 2, 2012 Zgłoszenie Share Napisano Styczeń 2, 2012 Z tego co pamiętam, to bash nie umożliwia obliczeń zmiennoprzecinkowych, stąd wykładnik potęgi musi być >=0 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Styczeń 2, 2012 Zgłoszenie Share Napisano Styczeń 2, 2012 Do jakichkolwiek obliczeń w powłoce powinno używać się bc. Ewentualnie można próbować zsh, ale i tak lepiej bc nawet pisząc w zsh. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Facman Napisano Styczeń 2, 2012 Autor Zgłoszenie Share Napisano Styczeń 2, 2012 Czyli nie mozna uzywac wykladników ponizej 0. No to by wiele wyjasnialo. Jestescie pewni, ze nie mozna dawac ponizej, bo mój wykladowca mi kazal napisac zeby dzialalo z minusowymi? Watpie, zeby zadal cos niemozliwego. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
andrew Napisano Styczeń 3, 2012 Zgłoszenie Share Napisano Styczeń 3, 2012 Zawsze możesz troszkę oszukać #!/bin/bash echo "!Witam w programie potęgi!" echo "Podaj podstawę potęgi" read x echo "podaj wykładnik potęgi" read y if [ $y -lt 0 ] then let potega=x**-y let wynik=1000000/potega echo "0."$wynik else let potega=x**y echo $potega fi "Analizę kodu " pozostawiam Tobie. Pozdrawiam, andrew Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Styczeń 4, 2012 Zgłoszenie Share Napisano Styczeń 4, 2012 Osobiście przychylam się do wersji thofa. Zamiast skomplikowanego kodu wystarczy: #!/bin/bash echo "${1}^${2}" | bc -l przykładowe wyniki bash-2.05a$ ./abc.sh 17 -15 .00000000000000000034 bash-2.05a$ ./abc.sh -17 -15 -.00000000000000000034 bash-2.05a$ Oczywiście parametry przekazywane do skryptu można zastąpić czytaniem zmiennej w skrypcie, ale i tak zapis z wykorzystaniem bc jest znacznie prostszy. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
andrew Napisano Styczeń 4, 2012 Zgłoszenie Share Napisano Styczeń 4, 2012 Przecież mój post to był żart! Nikt rozsądny nie liczy takich rzeczy w czystym bash Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Styczeń 4, 2012 Zgłoszenie Share Napisano Styczeń 4, 2012 Przecież mój post to był żart!No, bo już myślałem... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się