Wątek przeniesiony 2017-11-06 19:40 z C/C++ przez Patryk27.

Zamiana st. Fahrenheita na st. Celsjusza

0

Mam pewien problem z napisanym kodem. Miał być to program zamieniający temperatury z F na C. Problem polega na tym że temperatury w C są równe 0 a nie przypisywane są im wartości z funkcji powyżej.

#include "stdafx.h"
#include <stdio.h>

#define MIN 0
#define WZROST 20
#define MAX 300
int fahr;
// formuła zamiany z F na C
double ZamianaZ_FnaC(int fahr){
		int a = (5.0 / 9.0);
		int b = (fahr - 32.0);
		int p;
		p = (a*b);
		return p;
}
// Wywołanie funkcji ZmianaZ_FnaC
int main()
{
	int fahr;
	for (fahr = MIN; fahr <= MAX; fahr = fahr + WZROST) {
		printf("Temperatura w F=%d Temperatura w stopniach=%6.2f\n", fahr,ZamianaZ_FnaC(fahr) );
	}
 
}
2

To dlatego że robisz:

int a = (5.0 / 9.0);
// a = 0

A = 0? Ale to jak?
A no dlatego że chcesz przypisać 0.55555... to int a tak nie można. Tzn można, ale ignorowane jest wszystko po kropce.
Wystarczy więc zmienić int na coś co obsługuje takie liczby czyli float albo double.

I tak musisz zrobić dla każdej zmiennej w której spodziewasz się liczb bo przecinku (kropce).

Przy okazji zobacz że robisz zmienną globalną ale jej nie używasz (i w sumie dobrze, bo zmienne globalne to zło)

int fahr;
// A później
int main()
{
    int fahr; // To po co globalna?
    //... dalsza część kodu
}

Przy okazji @Kaban934, zobacz że można zrobić konwersję w jednej linijce:

return (fahr - 32) * 5 / 9;

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