Program oblicza złe wyniki

Program oblicza złe wyniki
MY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

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

Kopiuj
 #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?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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...

MY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Czyli mam przenieść

Kopiuj
#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);
	
	
	
	
}

?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
  1. najpierw dzielisz a później sprawdzasz czy można?
  2. if (mianownik=0) - pojedynczy znak - to operator przypisania.
MY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

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

SI
  • Rejestracja: dni
  • Ostatnio: dni
0

Nie sprawdzałem czy na pewno działa

Kopiuj
#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);
}           
} 
mar-ek1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 526
0

Linijkę:

Kopiuj
 int wynik=(a+b)/mianownik;

Zamieniłbym na:

Kopiuj
 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)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.