C, bląd programu?

0

Hej mam na zadanie zrobienie programu w jezyku C który będzie obliczał działanie y=1/((aa) + (1/(aa) + (1/((a*a)+1)))) (w zalaczniku jest przedstawione to dzialanie wyrazniej (ogryginał)

Zrobiłem taki kod:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{ int a;
double y;
printf("Podaj wartosc a: ");
scanf("%d", &a);
y=1/((aa) + (1/(aa) + (1/((a*a)+1))));
printf("wynik działania to y=%f",y);

return 0;

}

Program za kazdym razem podaje wynik działania "0" . Kiedy podstawilem y=a w ramach testu to przypisywalo wartosci dobrze. Ale kiedy dalem y=1/a to znowy za kazdym razem byl wynik zero.

Mógłby mi ktoś pomóc , jak to zrobic dobrze?
z jezykiem c mam pierwszy raz w zyciu do czynienia.

Pozdrawiam
Gregg95

1

Zmień int a; na double a; oraz scanf("%d", &a); na scanf("%lf", &a);

Jeżeli a będzie typu int to wszystkie operacje będą wykonane na liczbach całkowitych. To znaczy, że 1/a da zero jeżeli a będzie inne niż 1 (po prostu część ułamkowa jest obcinana).

0

Wynik działania gdy obydwa operandy są typu całkowitego jest konwertowany do typu całkowitego. A część ułamkowa jest obcinana. Czyli 1 -> int , zmienna a -> int ->> wynik operacji 1/a to int. Podmień 1 na 1.0 -> double i zobacz co się stanie.

0

faktycznie, logiczne :) dziękuje bardzo za odpowiedzi, program działa poprawnie.

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