Program zamieniający cm na cale i na odwrót

0

Witam!
Próbuje zrobić program przeliczający cm na cale i na odwrót za pomocą switcha. Program sie kompiluje, ale za każdym razem jak wchodze w któregoś switcha zwraca wynik 0. Ktoś znajdzie błąd?

int main() {

int liczba;
float cale = (liczba*0.39);
int cal;
float licz = (cal*2,54);
int prog = 0;
printf("cm na cale(0) czy cale na cm?(1)\n");
scanf("%d", &prog);
switch(prog){
	case 0:
	printf("Podaj liczbe w cm\n");
	scanf("%d", &liczba);
	printf("%d cm to %d cali",liczba,cale);
	break;
	case 1:
	printf("Podaj liczbe w calach\n");
	scanf("%d",&cal);
	printf("%d cali to %d cm\n", cal,licz);	
	break;	
}		

return 0;
} 
1

Wykonujesz obliczenia ZANIM wczytasz dane. To jest język imperatywny i wykonuje operacje tam gdzie je deklarujesz, po kolei, z góry na dół.

float cale = (liczba*0.39);

To NIE JEST funkcja tylko instrukcja która wykonuje sie OD RAZU.

2
#include <stdio.h>


int main() {

	int liczba;
	float cale;
	int cal;
	float licz;
	int prog = 0;
	printf("cm na cale(0) czy cale na cm?(1)\n");
	scanf("%d", &prog);
	switch (prog){
	case 0:
		printf("Podaj liczbe w cm\n");
		scanf("%d", &liczba);
		printf("%d cm to %f cali", liczba, liczba*0.39);
		break;
	case 1:
		printf("Podaj liczbe w calach\n");
		scanf("%d", &cal);
		printf("%d cali to %f cm\n", cal, cal * 2.54);
		break;
	}
}

Błędów w tym kodzie jest więcej poczynając od tego, że nie możesz zainicjalizować na starcie cale i licz skoro nie wiadomo ile wynosi liczba i cal. Ogólnie w programowaniu przyjmuje się, że liczby zmiennoprzecinkowe piszemy z kropką. Jak wyświetlasz w printf liczbę typu float to piszesz %f a nie %d.

0

Dzięki, jeszcze nie jestem biegły więc jakiś głupi bład może sie wkraść. Temat do zamknięcia

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