Zwykłe dzielenie liczb

Zwykłe dzielenie liczb
D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Witam,
mam takie pytanie, dlaczego wynik poniższego kodu to 0.0000000.

Kopiuj
 
#include <stdio.h> 
int main()
{
   int a=3
   int b=100; 
   float wynik; 

   wynik=a/c; 

   printf("Wynik działania to: %f", wynik); 

return 0; 
}

Co robię nie tak ?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
wynik=a/c;  // dzielisz liczbę całkowita przez całkowitą wynik wychodzi całkowity z odrzuceniem reszty po czym konwertujesz go na typ zmiennoprzecinkowy.
// użyj jednego z dwóch: 
wynik=a/(float)c;
wynik=(float)a/c;
Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6969
0

To się nawet nie kompiluje :D Nie ma zmiennej c.

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

OK, a założmy taką sytuację.

Podany wynik chcę podać w procentach, mam to przemnożyć razy 100 żeby przesunąć przecinek o 2 miejsca? Czy użyć jakiejś funkcji ?

przykładowo:

Kopiuj
#include <stdio.h> 

int main()
{
int a,b; 
float wynik; 

wynik=(float(a/b)) * 100; 

printf("Uzyskaleś %f %", wynik); 

return 0; 
}

**Chodziło o zmienną b. ** Czeski błąd.

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6969
0

No cóż... najkrótszy sposób to przemnożenie. Trochę dłuższy to użycie sprintf do konwersji float'a na łańcuch i przesunięcie kropki o te 2 znaki w prawo. W sprintf zamiast samego %f możesz sobie formatować "wygląd liczby". Zamiast %f spróbuj sobie napisać np. %.02f. Ale wątpię, żeby się dało tak przesunąć kropkę.

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Ale właśnie przemnożenie jakoś nie działa ;/

Z resztą możecie sami spróbować wkleić ten kod i zobaczyć nie nic z tego nie wyniknie :(

SI
  • Rejestracja: dni
  • Ostatnio: dni
0

A co w zasadzie ma liczyć? bo doprowadziłem do stanu używalności zmieniając int na float,teraz wygląda tak
#include <stdio.h>

int main()
{
float a=3,b=100;//zakładam że wartości będziesz jakoś wczytywał
float wynik;

wynik=(a/b) * 100;

printf("Uzyskaleś %f %", wynik);

return 0;
}
I dostaję: Uzyskaleś 3.000000.

D1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

No przypuścmy że mamy dwie liczby typu całkowitego a i b.
Chcemy sprawdzić jaki procent liczby a stanowi liczba b.
No to wydaję mi się że wynik trzeba ustawić na float i zrobić proste dzielenie, ale ja chcę wynik otrzymać w procentach a nie w ułamku dziesiętnym.
Może istnieje jakaś funkcja z bibliotek która by to zrobiła a o której nie mam pojęcia ?

Dzieki za dotychczasowe odpowiedzi!

HF
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0
Kopiuj
#include <cstdio>

int main()
{
	int a = 3;
	int b = 8;
	
	float wynik = ((float) a / (float) b) * 100.0f;
	
	printf("Liczba %d to %.0f%% liczby %d\n", a, wynik, b);
	
	return 0;
}

Ewentualnie w printfie zmieniasz %.0f na %.xf, gdzie x to liczba miejsc po przecinku, które wyświetlamy.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
#include <cstdio>
 
int main()
  {
   int a = 3,b = 8;
 
   float wynik = 100.0*a/b; 
   printf("Liczba %d to %.0f%% liczby %d\n", a, wynik, b);
   return 0;
  }

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.