Wartość bezwględna liczby

0

Witajcie.

Pierwszy raz potrzebna mi w C funkcja wyrzucająca wartość bezwzględną.

Znalazłam, spróbowałam użyć (pewnie błędnie) i chociaż szukałam, nie wiem czemu program wywala mi całego code blocks.
Proszę o pomoc

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int a,y;
    double b,o;
    printf("Podaj a\n");
    scanf("%d",a);
    printf("Podaj b\n");
    scanf("%f",b);
    y=abs(a);
    o=abs(b);
    printf("bezwgledna z a %d\n",y);
 
    printf("bezwgledna z b %f\n",o);
 
}
1

scanf przyjmuje jako argumenty wskaźniki na obiekty.
http://en.cppreference.com/w/c/io/fscanf
scanf("%d", &a);

0

A ok widzę czego nie przekleiłam ale to nie to. Przepraszam w programie mam normalnie poprawnie składniowo czyli scanf("%d",&a);
po prostu myślałam, że może to kwestia projektu, że go wyrzuca, że coś się przycięło więc przepisałam kod jeszcze raz.
Ale problem wyrzucania całego programu zostaje

edit.

wyłączyłam na chwilę część z double. Dla int poszło normalnie i wyczytało poprawnie.

Po włączeniu double i wyłączeniu int też program idzie, ale wyczytuje 0 dla każdej wpisanej liczby. Oba na raz wywalają program

1

bo do double musisz uzyc %lf

    scanf("%lf", &b);
0

Funkcja (dokładniej makro) abs() w math.h ma sygnaturę: int abs(int x), więc próby wysłania lub zwrócenia z niej double sie nie powiodą. Jak Potrzebujesz, to łatwo można zaimplementować swoją funkcję.

0
lion137 napisał(a):

więc próby wysłania lub zwrócenia z niej double sie nie powiodą

kompilujac jako c++ powioda sie ;)
a w c zamiast pisac swoja jest http://www.cplusplus.com/reference/cmath/fabs/

0

Pewnie chodzi o coś takiego:

double abs(double a){
id(a>=0) {return a;}
else {return (-1)*a;}
}

Pisane z palca, nie siedzę w C, ale powinno zadziałać.

0

Przeinstalowałam codeblocks. Przestało wywalać program. Działa.
Dziękuję wszystkim za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1