Program oblicza złe wyniki

0

Witam, mam do napisania prosty program który oblicza wyrażenie y=(a+b)/(c+d)

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

int main()

{
int a,b,c,d;
int mianownik=(c+d);
int wynik=(a+b)/mianownik;

printf("podaj liczbe a",a);
scanf("%d",&a);
printf("podaj liczbe b",b);
scanf("%d",&b);
printf("podaj liczbe c",c);
scanf("%d",&c);
printf("podaj liczbe d",d);
scanf("%d",&d);

if (mianownik=0)printf("nie mozna dzielic przez zero!!");

else printf("wynik wynosi  : %d ",wynik);

}

Po skompilowaniu cały czas wychodzi mi dla różnych liczb to samo, o co chodzi?

0

To akurat bardzo proste. Wyliczyłeś wynik ZANIM wczytałeś dane. Gdyby wynik był funkcją to mógłbyś tak zrobić, ale wynik nie jest funkcją!
Poza tym masz tam całą masę idiotycznych błędów typu: przypisanie zamiast porównania i dzielenie całkowitoliczbowe...

0

Czyli mam przenieść

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

int main()

{
int a,b,c,d;

printf("podaj liczbe a",a);
scanf("%d",&a);
printf("podaj liczbe b",b);
scanf("%d",&b);
printf("podaj liczbe c",c);
scanf("%d",&c);
printf("podaj liczbe d",d);
scanf("%d",&d);

int mianownik=(c+d);
int wynik=(a+b)/mianownik;

if (mianownik=0)printf("nie mozna dzielic przez zero!!");

else printf("wynik wynosi  : %d ",wynik);

}

?

0
  1. najpierw dzielisz a później sprawdzasz czy można?
  2. if (mianownik=0) - pojedynczy znak - to operator przypisania.
0

Tzn.co mam zmienić? Operator == już poprawiłem. @Shalom - jaki ustawić typ danych przy tym dzieleniu?

0

Nie sprawdzałem czy na pewno działa

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

int main()

{
int a,b,c,d;

printf("podaj liczbe a",a);
scanf("%d",&a);
printf("podaj liczbe b",b);
scanf("%d",&b);
printf("podaj liczbe c",c);
scanf("%d",&c);
printf("podaj liczbe d",d);
scanf("%d",&d);

int mianownik=(c+d);

if (mianownik==0)printf("nie mozna dzielic przez zero!!");
else 
{
           int wynik=(a+b)/mianownik;
           printf("wynik wynosi  : %d ",wynik);
          // ew w jednej linijce  printf("wynik wynosi  : %d ",(a+b)/mianownik);
}           
} 
0

Linijkę:

 int wynik=(a+b)/mianownik;

Zamieniłbym na:

 double wynik=(a+b)/(double)mianownik;

Wtedy wyniki nie będą obcinane do części całkowitej.
No i oczywiście wtedy przy wyświetlaniu nie będzie już %d tylko %f (czy jakoś tak, nie pamiętam nigdy tego)

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