[C] Przeliczanie st. Celsjusza na Fahrenheita


(Artnew Des) #1

Witam!

Mam do napisania taki prosty program w języku C i zrobiłem go, wydaje mi się że dobrze, normalnie się kompiluje i nie zwraca żadnych błędów tylko że... Nie działa tak jak trzeba. Po pierwsze nie wyświetla w ogóle tekstu z formuły scanf tylko od razu trzeba wpisywać liczbę, a po drugie jako wynik zawsze zwraca 32. Podejrzewam, że coś przy tym scanf pomieszałem i program nie widzi wpisywanej liczby więc myśli, że jest to 0 :confused: Kompiluję to DevC++. Będzie miło jeśli ktoś zechce rzucić okiem i ewentualnie naprowadzić mnie na dobrą drogę!

#include 

float main()

{

	float a;

	float b;

	scanf("Podaj temperature w stopniach Celsjusza %f",&a);

	b=(5/9)*a+32;

	printf("Wartosc w stopniach Fahrenheita wynosi %f\n",b);

	system("PAUSE");

	return 0;

}

(Drobok) #2

scanf pobiera sformatowany ciąg znaków. Więc oczekuje na ten ciąg co mu tam podałeś :stuck_out_tongue:

printf do wyświetlania, a scanf do pobierania

A wyświetla 32 bo a zawsze jest null (ciąg w scanf) a 0*x=0+32=32 :stuck_out_tongue:


(Artnew Des) #3

Faktycznie, poprawiłem nieco ten kod i teraz działa jak powinien. Dzięki wielkie! Pojawił się natomiast nowy problem ponieważ chciałem jeszcze dodać taką opcję, że po przeliczeniu program pyta się nas czy liczymy od nowa czy wychodzimy z programu. Dodałem więc parę linijek kodu i problem jest taki, że w momencie kiedy wyskoczy wynik i pokazuje się zapytanie program od razu się kończy. Nie można wpisać wartości t/n. Jeśli typ zmiennej t zamienię na integer i zamiast t/n wpiszemy wartości 1/0 to wtedy działa bez problemu :confused:

#include 

#include 

float a,b;

char t;

main()

{

	printf("Podaj temperature w stopniach Celsjusza: ");

	scanf("%f",&a);

	b=9*a/5+32;

	printf("Wartosc w stopniach Fahrenheita wynosi: %f\n",b);

	printf("Czy chcesz podac nowe dane? t/n: ");

	scanf("%c",&t);

	switch(t)

		{

			case 'n':

				return 0;

				break;

			case 't':

				system("cls");

				return main();

				break;

		}

}

([alex]) #4
scanf(" %c",&t);

czyli zabrakło spacji. Nie wywołuj main()'a bo to źle z kilku przyczyn, zrób to za pomocą pętli np:

for(;;)

  {

  }