Policzyć logarytm w języku C

Pytania o rozwiązania zadań.
Otrzymałeś(aś) rozwiązanie do zamieszczonego zadania? - podziękuj autorowi rozwiązania! Kliknij
jetaimecoma
Witam na forum
Witam na forum
Posty: 5
Rejestracja: 25 cze 2013, 14:46

Policzyć logarytm w języku C

Post autor: jetaimecoma »

Hej wam.
Mam problem z napisaniem programu w języku C który liczy logarytm. Nie mam pojęcia co robie źle, że program nie chce się skompilować, najpierw błąd jest przy samym 'log' potem pojawia sie na wstepie przy print...
Bardzo proszę o napisanie go. Treść :

Program liczący parametr x x=ln(a*a-b*b)*[(c+d)^n]/[c-d] dla c różnego od d
wynik powinien zawierać oznaczenie 'parametr'.

Bardzo proszę o pomoc

Paulina
Nienor
Dopiero zaczynam
Dopiero zaczynam
Posty: 19
Rejestracja: 10 maja 2013, 15:38
Otrzymane podziękowania: 3 razy
Płeć:

Post autor: Nienor »

Dołączyłeś biblioteki? Po drugie nie ma takiej funkcji jak ln().
Powinno być:
#include<math.h>
...
{
...
x = (log(a*a-b*b))*((pow(c+d,n))/(c-d));
...
}
jetaimecoma
Witam na forum
Witam na forum
Posty: 5
Rejestracja: 25 cze 2013, 14:46

Re: Policzyć logarytm w języku C

Post autor: jetaimecoma »

No ja właśnie nie wiedziałam jak ten logarytm wpisać. z 'log' też próbowalam. Ale teraz widze, że chyba potęgę źle wpisywałam :
zamiast pow to pisałam np 2^4.

Teraz skompilowałam jak wkleiłam to co napisałeś i działa!

Dziękuje :)
jetaimecoma
Witam na forum
Witam na forum
Posty: 5
Rejestracja: 25 cze 2013, 14:46

Post autor: jetaimecoma »

tylko kurcze wyniki wychodzą mi dziwne

np : x = 1#INF00
Nienor
Dopiero zaczynam
Dopiero zaczynam
Posty: 19
Rejestracja: 10 maja 2013, 15:38
Otrzymane podziękowania: 3 razy
Płeć:

Post autor: Nienor »

Wrzuć cały program, zobaczymy :D
jetaimecoma
Witam na forum
Witam na forum
Posty: 5
Rejestracja: 25 cze 2013, 14:46

Re: Policzyć logarytm w języku C

Post autor: jetaimecoma »

#include <stdio.h>
#include <conio.h>
#include <math.h>


int main(void)
{
float x=0, a=0, b=0, c=0, d=0, n=0 ;

printf("Prosze podac parametry a, b, c, d i n, dla nastepujacego wzoru : \n") ;
printf("x = ln(a^2 - b^2) * (c+d)^n / (c-d), dla 'c' roznego od 'd' \n") ;
scanf("%f%f%f%f%f", &a, &b, &c, &d, &n) ;

if(c==d)
{
printf("\nPodales bledne parametry, c musi byc rozne od d \n") ;
}
else
{
x = log(a*a - b*b) * ( pow(c+d, n) / (c-d) ) ;


}

printf("\nWyliczony parametr wynosi x = %f", x) ;


getch() ;
return 0 ;
}
jetaimecoma
Witam na forum
Witam na forum
Posty: 5
Rejestracja: 25 cze 2013, 14:46

Post autor: jetaimecoma »

i jeszcze chciałam się zapytać, dlaczego podanie int main (void) jest konieczne :P zawsze jak pisałam programy to wystarczyło samo main
Nienor
Dopiero zaczynam
Dopiero zaczynam
Posty: 19
Rejestracja: 10 maja 2013, 15:38
Otrzymane podziękowania: 3 razy
Płeć:

Post autor: Nienor »

Bo tak wygląda prawidłowo zdefiniowana funkcja.
Pierwszy człon - informuje komputer jakiego typu jest zmienna, którą funkcja zwraca.
Drugi - to nazwa funkcji.
Trzeci - w nawiasach, informuje jakiego typu argumenty pobiera funkcja. Void oznacza, że funkcja nie pobiera argumentów.
np. funkcja potęgowa:
double pow (double x, double y);
z tym że nawiasach możesz napisać bez x i y.

Nie wiem, u mnie działa bez problemów.
Jedynie kosmetycznie możesz pousuwać klamry przy if i else, bo one mają zasięg do pierwszego średnika, więc przy jedno komendowej instrukcji klamry są zbędne.
PS Na marginesie jaki mam znaczek przy płeć?? :wink:
ODPOWIEDZ