Przechowuj dane wejściowe użytkownika w zmiennej


Zastanawiałem się, jak mogę zachęcić użytkownika końcowego mojego programu do wprowadzenia wartości, którą chcą przekonwertować z Fahrenheita na Celsjusza na C.
Zasadniczo, ponieważ jestem kompletnym n00b i piszę niesamowite "programy" takie jak ten:
//Simple program to convert Fahrenheit to Celsius int main (int argc, char *argv[])
{
double celsius, fahrenheit, resu< celsius = resu<
fahrenheit = 27;
result = (fahrenheit - 32)/1.8; printf("27 degress Fahrenheit is %g degrees Celsius!", result); return 0;
}

Chciałbym dodać do tego rzeczywistą "funkcjonalność", jeśli wiesz, o co mi chodzi. Zamiast robić z niego program testowy, w którym tak naprawdę demonstruje prostą arytmetyczną ocenę wyrażenia, chciałbym uczynić go nieco użytecznym.
W każdym razie zastanawiałem się, czy mogę użyć wskazanej funkcji

strona podręcznika scanf (3)
http://developer.apple.com/mac ... .html
aby pomóc mi w rozpoznawaniu danych wejściowych użytkownika, a następnie w jakiś sposób przechowywać je w zmiennej Fahrenheita.
Teraz byłoby naprawdę fajnie, gdyby program po uruchomieniu mógł podpowiedzieć użytkownikowi końcowemu, czy chce przejść z Celsjusza do Fahrenheita lub z Fahrenheita do Celsjusza, ale zróbmy to krok po kroku i czekam, aż przeczytam rozdział w mojej książce o „podejmowaniu decyzji”! :)

UPDATE

:
Usuwa bezużyteczny wynik zmiennej, jak wskazał kiamlaluno:
//Simple program to convert Fahrenheit to Celsius int main (int argc, char *argv[])
{
double fahrenheit, celsius; fahrenheit = 27;
celsius = (fahrenheit - 32)/1.8; printf("27 degress Fahrenheit is %g degrees Celsius!", celsius); return 0;
}


AKTUALIZACJA

:
Próbowałem zawrzeć wszystkie pomocne sugestie zamieszczone tutaj, ale mam więcej problemów z moim kodem:
//Simple program to convert Fahrenheit to Celsius and Celsius to Fahrenheitint main (int argc, char *argv[])
{
int celsius, fahrenheit, celsiusResult, fahrenheitResu<
celsiusResult = (fahrenheit - 32)*(5/9);
fahrenheitResult = (celsius*(9/5)) + 32;
int prompt;printf("Please press 1 to convert Fahrenheit to Celsius, or 0 to convert Celsius to Fahrenheit please:\n ");
scanf("%i", &prompt);
if(prompt == 1) {
printf("Please enter a temperature in Fahrenheit to be converted into Celsius!:\n");
scanf("%i", &fahrenheit);
printf("%i degress Fahrenheit is %i degrees Celsius!", fahrenheit, celsiusResult);}
else {
printf("Please enter a temperature in Celsius to be converted into Fahrenheit:\n");
scanf("%i", &celsius);
printf("%i degreses Celsius is %i degrees Fahrenheit", celsius, fahrenheitResult);
}return 0;
}

Wszystko działa dobrze, z wyjątkiem samych obliczeń, które okazują się całkowicie błędne.
Przez chwilę myślałem, że może to być spowodowane tym, że zmieniłem same liczby na typy całkowite, ale ponownie je podwoiłem i nadal było to trochę dziwne.
jakieś pomysły?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aby użyć
scanf ()
do odczytania znaku podwójnego, będziesz musiał użyć prawidłowego ciągu formatu. Będzie to
% lf
dla „long float” (gdzie tylko
% f
będzie czytać do float). Wtedy można było czytać bezpośrednio do podwójnej. To samo dotyczy drukowania.
int main (int argc, char *argv[])
{
double fahrenheit, celsius; printf("farenheit? ");/* write a prompt */
scanf("%lf", &fahrenheit);/* read a double into the fahrenheit variable */ celsius = (fahrenheit - 32)/1.8; printf("%lf degress Fahrenheit is %lf degrees Celsius!\n", fahrenheit, celsius); return 0;
}

Należy zauważyć, że w ogóle nie obsługuje to nieliczbowych danych wejściowych. Będziesz musiał użyć innych metod wprowadzania.
[edytować]
Oczywiście dokonujesz skoków w swoim kodzie i wygląda na to, że robisz duże postępy. :)
Jest kilka problemów, które wymagają rozwiązania ostatniej aktualizacji. Twój kod tak naprawdę nic nie oblicza, formuła została zastosowana zbyt wcześnie. Musisz poczekać, aż
fahrenheit
lub
celsius
uzyskają znaczące wartości (to znaczy po wprowadzeniu przez użytkownika wartości do konwersji). Fajnie byłoby przenieść te formuły do ​​funkcji w celu wykonania konwersji. Powinieneś także trzymać się podwójnych, a nie całkowitych. Nie uzyskasz wymaganej precyzji, używając liczb całkowitych.
double convert_fahrenheit_to_celsius(double fahrenheit)
{
return (fahrenheit - 32)*(5/9);
}double convert_celsius_to_fahrenheit(double celsius)
{
return (celsius*(9/5)) + 32;
}int main (int argc, char *argv[])
{
double celsius, fahrenheit, celsiusResult, fahrenheitResu<
int prompt; printf("Please press 1 to convert Fahrenheit to Celsius, or 0 to convert Celsius to Fahrenheit please:\n ");
scanf("%i", &prompt);
if(prompt == 1) {
printf("Please enter a temperature in Fahrenheit to be converted into Celsius!:\n");
scanf("%lf", &fahrenheit);/* now convert user-input fahrenheit to celsius */
celsiusResult = convert_fahrenheit_to_celsius(fahrenheit); printf("%lf degress Fahrenheit is %lf degrees Celsius!", fahrenheit, celsiusResult);
}
else {
printf("Please enter a temperature in Celsius to be converted into Fahrenheit:\n");
scanf("%lf", &celsius);/* now convert user-input celsius to fahrenheit */
fahrenheitResult = convert_celsius_to_fahrenheit(celsius); printf("%lf degreses Celsius is %lf degrees Fahrenheit", celsius, fahrenheitResult);
} return 0;
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ok, jeśli chcesz poprosić użytkownika o wprowadzenie danych, po prostu użyj scanf z tagiem% lf:
//Simple program to convert Fahrenheit to Celsiusint main (int argc, char *argv[])
{
double fahrenheit, resu< printf("Please enter a number for farenheit: ");
scanf("%lf", &fahrenheit);
result = (fahrenheit - 32)/1.8; printf("27 degress Fahrenheit is %g degrees Celsius!", result); return 0;
}

Jeśli chodzi o pytanie użytkownika, czy chce Celsjusza czy Fahrenheita, potrzebujesz czegoś, co nazywa się oświadczeniem A if i jeszcze oświadczeniem.
int main (int argc, char *argv[])
{
double celsius, fahrenheit, resu<
int ForC; printf("1 for Celsius or 0 for Fahrenheit plz: ");
scanf("%d", &ForC);
if(ForC == 1) {
scanf("%lf", &fahrenheit);
result = (fahrenheit - 32)/1.8;
printf("fahrenheit to celsius:%lf", result);
}
else {
scanf("%lf", &celsius);
result = (celsius*9.0)/5.0 + 32;
printf("celsius to farenheit:%lf", result);
} return 0;
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W przypadku aktualizacji aktualizacji: spróbuj wykonać obliczenia po otrzymaniu wartości od użytkownika. Jeśli nie, wynikowa wartość
Celsjusza, Fahrenheita, CelsjuszaResult, FahrenheitResult
jest nieznana.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Obsługę ewentualnych błędnych danych wejściowych użytkownika można wykonać, sprawdzając zwracaną wartość funkcji scanf (). Powinien być równy liczbie oczekiwanych wartości (w tym przypadku 1). W przeciwnym razie wpis należy powtórzyć.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się