Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C] Problem z wykorzystaniem funkcji

Ostatnio zmodyfikowano 2011-11-26 12:41
Autor Wiadomość
Matti
Temat założony przez niniejszego użytkownika
[C] Problem z wykorzystaniem funkcji
» 2011-11-26 12:11:28
C/C++
#include <stdio.h>
int main()
{
    double r, h, wynik;
    printf( "Podaj dlugosc promienia podstawy stozka: " );
    scanf( "\n%lf", & r );
    printf( "Podaj dlugosc wysokosci stozka: " );
    scanf( "\n%lf", & h );
    wynik = objetosc( r, h );
    printf( "Objetosc stozka wynosi: %lf", wynik );
    return;
}
double objetosc( double r, double h )
{
    return( 0.33 ) *( r * r *( 3.14 ) * h );
}

Kod oto taki. Jak zmienię wszędzie z double na int i dam jakiś prosty return typu r * h, to program działa. Z double / float mam problem tego typu, że kompilować mi nie chce. Na początku zamiast 0,33 i 3,14 wstawiłem 1/3 i 22/7, ale chyba aż takie ułamki nie mogą być przechowywane w double, więc uogólniłem. ;P Sądziłem, że to rozwiąże problem, ale jednak programowi chodziło o coś innego. Teraz zmieniłem typ funkcji objetosc z double na int i program odpalił, tyle że wynik przy danych 5 i 8 wynosi 207.000000, a nie 207, 24 jak to powinien. Ktoś może mi napisać czemu moja funkcja nie może być typu zmiennoprzecinkowego? Jak uzyskać wynik zmiennoprzecinkowy tego programu?

|13|error: conflicting types for 'objetosc'|
|9|note: previous implicit declaration of 'objetosc' was here|
||=== Build finished: 1 errors, 0 warnings ===|
P-44718
malan
» 2011-11-26 12:16:19
Skąd kompilator ma wiedzieć co to jest objetosc?
P-44719
Matti
Temat założony przez niniejszego użytkownika
» 2011-11-26 12:27:29
A czy to nie zostało zadeklarowane?
P-44720
malan
» 2011-11-26 12:29:39
Zostało zadeklarowane, ale po miejscu, w którym używasz funkcji pierwszy raz, a nie przed, więc kompilator tego nie widzi.
P-44721
Matti
Temat założony przez niniejszego użytkownika
» 2011-11-26 12:39:24
Już zrozumiałem o co chodzi, głupi błąd, dzięki. :) Tylko dziwi mnie czemu program działał dla innych typów funkcji...
P-44722
malan
» 2011-11-26 12:41:50
Nie mógł działać dla innych typów funkcji :)
P-44724
« 1 »
  Strona 1 z 1