Ĺadny brzuch
Witam. Bardzo proszę o pomoc, przy jednym warunku w C++. Otóż zupełnie nie mam pomysłu jak zrobić warunek, dzięki któremu program zareagowałby, gdyby użytkownik wprowadził liczbę nienaturalną? Jeśli chodzi o liczby ujemne to sprawa jest prosta, ale jak to jest z rzeczywistymi, to znaczy z ułamkami? Proszę o pomoc ;)
Nie wiem czy skladnia ifa jest identyczna w c++ jak w c ale ja bym napisal cos takiego:
if(wprowadzonazmienna==floor(wprowadzonazmienna) && wprowadzonazmienna>=0) //wprowadzona jest liczba naturalna else //wprowadzona liczba nienaturalna
pierwsze wyrazenie w ifie sprawdza czy wartosc zmiennej jest rowna jej zaokragleniu do dolu
drugie wyrazenie sprawdza czy jest to liczba dodatnia lub rowna zero(przyjalem ze zero nalezy do naturalnych)
Dzięki za odpowiedź.
To trochę dziwne, ale zamiast sprawdzić ten warunek to program przypisuje mi do zmiennej to zaokrąglenie, tj. wpisuje 3.5,a obliczana jest silnia liczby 3.
Nie wiem czy dość jasno to opisałem, dlatego dam fragment kodu:
#include <stdio.h> #include <conio.h> #include <math.h> int main() { int n, liczba, wynik=1; char z; do { printf("Podaj liczbe naturalna (rozna od 0): "); scanf("%d",&liczba); if (liczba==floor(liczba) && liczba>=0) { if (liczba==0) printf("Silnia Twojej liczby jest rowna: 1"); else { for(n=1; n<=liczba; n++) wynik*=n; printf("Silnia Twojej liczby jest rowna: %d", wynik); }} else printf("Liczba nienaturalna"); n=1; wynik=1; printf("\n\nCzy chcesz kontynuowac (t/n)?: \n\n"); z=_getch(); } while (z == 't'); getch(); }
Zaokrąglanie i cały ten warunek nie ma sensu, ponieważ liczbę wczytujesz do int'a więc siłą rzeczy Twoja liczba będzie liczbą całkowitą nawet gdy podasz ułamek zostanie on zaokrąglony do całości
pomoże:
int main() { int n, wynik=1; float liczba; //TU zmiana char z; do { printf("Podaj liczbe naturalna (rozna od 0): "); scanf("%f",&liczba); //TU zmiana
Użytkownik DieM edytował ten post 19 październik 2009, 20:59
Tak, dzięki ;) Wszystko teraz gra ;)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Nie wiem czy skladnia ifa jest identyczna w c++ jak w c ale ja bym napisal cos takiego:
if(wprowadzonazmienna==floor(wprowadzonazmienna) && wprowadzonazmienna>=0) //wprowadzona jest liczba naturalna else //wprowadzona liczba nienaturalna
pierwsze wyrazenie w ifie sprawdza czy wartosc zmiennej jest rowna jej zaokragleniu do dolu
drugie wyrazenie sprawdza czy jest to liczba dodatnia lub rowna zero(przyjalem ze zero nalezy do naturalnych)
Dzięki za odpowiedź.
To trochę dziwne, ale zamiast sprawdzić ten warunek to program przypisuje mi do zmiennej to zaokrąglenie, tj. wpisuje 3.5,a obliczana jest silnia liczby 3.
Nie wiem czy dość jasno to opisałem, dlatego dam fragment kodu:
#include <stdio.h> #include <conio.h> #include <math.h> int main() { int n, liczba, wynik=1; char z; do { printf("Podaj liczbe naturalna (rozna od 0): "); scanf("%d",&liczba); if (liczba==floor(liczba) && liczba>=0) { if (liczba==0) printf("Silnia Twojej liczby jest rowna: 1"); else { for(n=1; n<=liczba; n++) wynik*=n; printf("Silnia Twojej liczby jest rowna: %d", wynik); }} else printf("Liczba nienaturalna"); n=1; wynik=1; printf("\n\nCzy chcesz kontynuowac (t/n)?: \n\n"); z=_getch(); } while (z == 't'); getch(); }
Zaokrąglanie i cały ten warunek nie ma sensu, ponieważ liczbę wczytujesz do int'a więc siłą rzeczy Twoja liczba będzie liczbą całkowitą nawet gdy podasz ułamek zostanie on zaokrąglony do całości
pomoże:
int main() { int n, wynik=1; float liczba; //TU zmiana char z; do { printf("Podaj liczbe naturalna (rozna od 0): "); scanf("%f",&liczba); //TU zmiana
Użytkownik DieM edytował ten post 19 październik 2009, 20:59
Tak, dzięki ;) Wszystko teraz gra ;)