Funkcja math.h nie chce dzialac

Funkcja math.h nie chce dzialac
M9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

Witam,

nie mogę dodać funkcji math.h. wyskakuje błąd że nie ma takiego pliku.

Dodaje:

Kopiuj
#include <studio.h>
#include <math.h>

Int main(void){
  Double a,b,wynik;
  Printf("Podaj a:");
  Scanf("%f", &a);
  Printf("Podaj b:");
  Scanf("%f", &b);
  wynik=pow(a,b);
  Printf("\nwynik to:%f", wynik);
  Return 0;
}

Czy ktoś by pomógł? Poprosze

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0

W jaki sposób kompilujesz program?

Manna5
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 667
7

W tym programie jest kilka błędów. Po pierwsze nie studio.h tylko stdio.h, bez "u", tak właśnie ma być. Słowa int, double, printf, scanf, return trzeba pisać z małej litery. Kod %f dla funkcji scanf oznacza wczytywanie liczby typu zwykłego float, a dla liczby zmiennoprzecinkowej o podwójnej dokładności czyli double właściwy kod konwersji to %lf. Akurat w dołączeniu math.h nie ma błędu, ale jeśli kompilujesz to za pomocą kompilatora GCC w systemie Linux, może być potrzebne dopisanie przełącznika -lm do polecenia kompilacji, żeby funkcje z math.h były dostępne.

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

int main(void){
  double a,b,wynik;

  printf("Podaj a:");
  scanf("%lf", &a);
  printf("Podaj b:");
  scanf("%lf", &b);
  wynik=pow(a,b);
  printf("\nwynik to:%f", wynik);
  return 0;
  }
MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
4

Jeśli używasz gcc lub clang to koniecznie dodaj opcje kompilatora: -Wall -Wextra -pedantic.
Kompilator ładnie tłuymaczy wszystkie błędy jakie robisz:

Kopiuj
<source>:1:10: fatal error: studio.h: No such file or directory
    1 | #include <studio.h>
      |          ^~~~~~~~~~
Kopiuj
<source>:4:1: error: unknown type name 'Int'; did you mean 'int'?
    4 | Int main(void){
      | ^~~
      | int
<source>: In function 'main':
<source>:5:3: error: unknown type name 'Double'; did you mean 'double'?
    5 |   Double a,b,wynik;
      |   ^~~~~~
      |   double

Po poprawieniu tych dziwnych kapitalików, wyskakują ostrzeżenia o format stringu:

Kopiuj
<source>: In function 'main':
<source>:7:11: warning: format '%f' expects argument of type 'float *', but argument 2 has type 'double *' [-Wformat=]
    7 |   scanf("%f", &a);
      |          ~^   ~~
      |           |   |
      |           |   double *
      |           float *
      |          %lf
<source>:9:11: warning: format '%f' expects argument of type 'float *', but argument 2 has type 'double *' [-Wformat=]
    9 |   scanf("%f", &b);
      |          ~^   ~~
      |           |   |
      |           |   double *
      |           float *
      |          %lf

Tu masz jakiś kompilator online z włąściwymi ustawienaimi: https://godbolt.org/z/TvYTca8se

DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 87
1

Wiadomo, że math.h to już leciwa biblioteka i żeby ją wykorzystać choćby w gcc, trzeba przy kompilacji podlinkować całość znacznikiem -lm. Interesuje mnie czy jeszcze w czystym C robi i przpeprowadza się masowo jakieś skomplikowane obliczenia naukowe, czy tworzy się jakieś współczesne algorytmy matematyczne , czy też pierwszeństwo daje się językom obiektowym czy środowiskom obliczeniowym, a C do tego typu rzeczy przez archaiczmość strukturalną i prostą składnie już się nie używa?

M9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

Zadzialalo wystarczylo dodac -lm

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
4
Matx91 napisał(a):

Zadzialalo wystarczylo dodac -lm

jakbyś od razu skopiował treść błędu to dostałbyś pożądaną odpowiedź od razu

I następnym razem pilnuj, by jakieś narzędzie nie masakrowało ci kodu, przed wklejeniem na forum, (te kapitaliki to pewnie coś ci dodało, gdzieś pomiędzy skopiowaniem kodu z pliku, a wklejeniem na stronie forum).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.