• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Język C Szkoła programowania S. Prata Wyd. VI - Problem z zadaniem 9 rozdziału 5

VPS Starter Arubacloud
0 głosów
589 wizyt
pytanie zadane 3 grudnia 2018 w C i C++ przez vog Początkujący (370 p.)

Nie potrafię poprawnie wykonać zadania z książki Język C, Szkoła Programowania, Stephena Prata Wydanie VI z rozdziału 5 zadanie 9. Proszę o pomoc.

Napisz program, który pobiera wartość temperatury w stopniach Farenheita. Program powinien pobierać wartość typu double i pokazywać ją(jako argument) własnej funkcji użytkownika o nazwie Temperatura(). Funkcja ta powinna obliczyć odpowiednią wartość w skalach Celsjusza i Kelwina, a następnie wyświetlić wszystkie trzy wartości ze skali. Oto formuła zamieniająca stopnie w skali Farenheita na stopnie w skali Celsjusza:

Celsjusz = 5.0 / 9.0 * (Farenheit - 32.0)

Kelwin = Celsjusz + 273.16

Funkcja Temperatura()  powinna używać słowa kluczowego const dla symboli reprezentujących stałe występujące w powyższych  formułach. Natomiast main() powinna stosować pętle, aby umożliwić użytkownikowi  wielokrotne  zastosowanie funkcji konwertującej. Pętla kończy swój cykl, gdy użytkownik wprowadzi zamiast temperatury literę lub inną wartość nie będącą liczbą. Wykorzystaj fakt, że funkcja scanf() zwraca liczbę wczytanych elementów , więc zwróci 1 po wczytaniu liczby, ale nie zwróci 1, kiedy użytkownik wpisze np k. Do porównania wartości zwracanej przez scanf() z 1 użyj operatora porównania ==.

#include <stdio.h>
Temperatura(double n);

int main(void)
{
    double Farenheit;

    printf("Podaj jaka jest temperatura w st. Farenheita: ");
    scanf("%f", &Farenheit);

    while(Farenheit == 1)
    Temperatura(Farenheit);


    return 0;
}
Temperatura(double n)
{
    const double Celsjusz, Kelwin;

    Celsjusz = 5.0 / 9.0 * (n - 32.0);
    Kelwin = Celsjusz + 273.16;


    printf("Jest to %.2f stopni Celsjusza\n", Celsjusz);
    printf("Jest to %.2f stopni Kelwina\n", Kelwin);
    printf("Jest to %.2f stopni Farenheita\n", n);
}

 

1 odpowiedź

+1 głos
odpowiedź 3 grudnia 2018 przez PanRik Gaduła (4,510 p.)
edycja 3 grudnia 2018 przez PanRik
Temperatura(double n);

1. Deklaracja funkcja składa się: _zwracany_typ_ nazwa_funkcji ( _typ_ nazwa_zmiennej );
Czego Tobie brakuje?

1.1 Defiinicja funkcji składa się: 
_zwracany_typ_ nazwa_funkcji ( _typ_ nazwa_zmiennej ){ ciało funkcji }
Czego Tobie brakuje?

 

while(Farenheit == 1)

2. Co robi ta linijka?

 

const double Celsjusz, Kelwin;

3. const oznacza, że zmienna jest tylko do odczytu. Nie można do niej przypisać żadnej wartości. Wartość do takiej zmiennej można przypisać tylko i wyłącznie podczas jej inicjalizacji  deklaracji( noo, nie tylko ale nie wchodźmy tak głęboko ;) ).

const double Celsjusz, Kelwin;
 
Celsjusz = 5.0 / 9.0 * (n - 32.0);
Kelwin = Celsjusz + 273.16;

Co jest nie tak w tych linijkach?

 

komentarz 6 grudnia 2018 przez vog Początkujący (370 p.)

Ok dzięki za podpowiedzi, ale niestety wciąż nie mogę sobie poradzić z tym zadaniem. W tym rozdziale funkcje nie zostały wystarczająco opisane i nie ogarniam jak to wykonać poprawnie. A while(Fahrenheit == 1) to miała być pętla tj w treści zadania, jednak nie ważne bo sama funkcja ciągle nie działa. Moja funkcja nie chce pobierać Fahr, kompilator na ekran wyrzuca mi losowe wartości ze znakiem #. :( Oto kod, proszę o wyjaśnienie i dalszą pomoc jak to zrobić bo chcę to zrozumieć. Oto kod zmieniony: 

#include <stdio.h>
double Temperatura(double a);


int main()
{
    double Fahr;

    printf("Podaj temp. w stopniach Fahrenheita: ");
    scanf("%f:", &Fahr);

    Temperatura(Fahr);

    return 0;
}
double Temperatura(double a)
{
    double Cels;
    double Kelw;

    Cels = 5.9 / 9.0 * (a - 32.0);
    Kelw = Cels + 273.16;

    printf("Temperatura w st. Fahr. -- %.2f \n", a);
    printf("Temperatura w st. Cels. -- %.2f \n", Cels);
    printf("Temperatura w st. Kelw. -- %.2f \n", Kelw);
}

 

Podobne pytania

0 głosów
2 odpowiedzi 327 wizyt
0 głosów
4 odpowiedzi 887 wizyt

92,830 zapytań

141,771 odpowiedzi

320,817 komentarzy

62,159 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...