[C] Dwa typy zmiennych w jednym programie


(McDracullo) #1

Jest to chyba mój pierwszy post w tym dziale, więc nie krzyczcie jak coś źle. Wiem, że mój problem jest banalny, ale nie mam gdzie znaleźć odpowiedzi na niego. Otóż chodzi mi o dwa typy zmiennych w jednym programie. Co robie źle, że floaty cały czas są zaokrąglane. Chce wpisując dwie liczby całkowite uzyskać ich iloraz jako ułamek. Podaje tylko wywalający się fragment kodu (program jest tak prosty, że właściwie aż wstyd :slight_smile: ).

#include 

#include 


main()

{ int a, b, suma, roznica, iloczyn;

float iloraz;

printf ("podaj a:");

scanf ("%d", &a);

printf ("\npodaj b:");

scanf ("%d", &b);


iloraz=a/b;


printf("\niloraz %d i %d to %f", a, b, iloraz);

getch ();

return 0;

}

(Sawyer47) #2

Ponieważ w instrukcji iloraz = a/b wedle typów wygląda to tak: float = int/int; A dzielenie int przez int da również int i stąd to. Możesz zrobić tak: iloraz= 1.0 * a / b; dzięki czemu działania będą przeprowadzane na typie float/double.

PS Funkcja główna to int main(void). No i używania conio.h czyni twój program nieprzenośną, na początek nauki C radziłbym używać wyłącznie bibliotek standardowych.


(Wojtekt89) #3

albo

iloraz=(float)a/b;

(somekind) #4

Każdy od czegoś takiego zaczynał. Wstydem może być co najwyżej brak wcięć w kodzie i użycie getch zamiast getchar.


(McDracullo) #5

Tak mnie uczą.

PS. getcher działa w biblitekach standardowych?


(somekind) #6

No to uczą Cię trochę niefachowo, bo getch pochodzi z conio.h, zatem jest tylko na systemy M$, natomiast getchar jest uniwersalny.


(McDracullo) #7

A to niby polibuda (gość jest fanatykiem windy, stąd pewnie zapalenie do getcha).

Dzięki za wyjaśnienie.

Dzięki za pomoc :wink:


(somekind) #8

Taaa, polibuda... I co z tego? Jeśli sam się nie nauczysz, to nie będziesz wiedział. Zresztą, niedługo sam do tego wniosku dojdziesz :slight_smile:

Wcale bym się nie zdziwił, że używa getch, bo nie wie o istnieniu getchar :stuck_out_tongue_winking_eye:


([alex]) #9

Sądzę że wie, ale nie umie się posługiwać. Mam na myśli:

int n;

cin>>n;

//getchar(); // nie powstrzyma windows'a przed zamknięciem okna, więc funkcja do bani :lol:

getch(); // a ta powstrzyma więc jest dobra :smiley:


(McDracullo) #10

Doszedłem już do tego wniosku dawno. Ale jakoś nie wnikałem w to "co z tym getch", może dlatego, że to dopiero początek drogi z programowaniem.

Poszukuje dobrego kursu/książki/podręcznika do C. Możecie coś polecić?


(Sawyer47) #11

Ta nie jest zła: http://helion.pl/ksiazki/jcszpr.htm