Programowanie i algorytmy

Wartość bezwzględna z liczby

Zad. 4. Napisz pogram, który obliczy wartość bezwzględną z liczby rzeczywistej.

Rozwiązanie

Zacznę najpierw od definicji wartości bezwzględnej. 

Def. Wartością bezwzględną liczby rzeczywistej {tex}x{/tex} nazywamy odległość tej liczby na osi liczbowej od 0. Oznacza to, że wartość bezwzględna jest zawsze liczbą nieujemną. Inna nazwa - moduł z liczby {tex}x{/tex} . Wartość bezwzględną zapisujemy w nawiasach pionowych "|liczba|".

Matematycznie zapiszemy to tak:

wartość bezwzględna

Przeanalizujmy kilka przykładów:

Przykład 1

{tex}|3|=3{/tex}

ponieważ:

wartość bezwzględna z 3

Przykład 2

{tex}|-3,5|=3,5{/tex}

ponieważ:

wartość bezwzględna z -3,5

Przykład 3

{tex}\left|1-\sqrt{5}\right|=\sqrt{5}-1{/tex}

wartość bezwzględna z dwóch liczb

Podsumowując:  

Jeśli mamy liczbę dodatnią lub równą 0, wtedy wynik jest taki sam jak liczba w wartości bezwzględnej, w przeciwnym wypadku zmieniamy znak liczby na przeciwny. (gdy liczba składa się z kilku członów - tak jak w przykładzie trzecim, znaki trzeba zmienić każdej liczbie)

 Rozwiązanie 1

#include<iostream>
#include<cstdlib>
 
using namespace std;
 
int main()
{
  double x;
  cout<<"Podaj liczbę: ";
  cin>>x;
 
  cout<<"|"<<x<<"| = ";
 
  if(x<0) //jesli jest ujemna, należy zmienić znak
    cout<<-x<<endl; 
  else //w przeciwnym razie nic się nie zmienia
    cout<<x<<endl; 
 
  system("pause");
  return 0;
}
 

 

Rozwiązanie 2

#include<iostream>
#include<cstdlib>
 
using namespace std;
 
double modul(double x)
{
  if(x<0) //jesli jest ujemna, to zmieniamy znak
    return -x;
  //else możemy opuscić
  return x; //w przeciwnym razie nic nie zmieniami
}
 
int main()
{
  double x;
  cout<<"Podaj liczbę: ";
  cin>>x;
 
  cout<<"|"<<x<<"| = "<<modul(x)<<endl;
 
  system("pause");
  return 0;
}
 

 

Rozwiązanie 3

#include<iostream>
#include<cstdlib>
 
using namespace std;
 
double modul(double x)
{
  //wykorzystanie trójargumentowego operatora
  return x<0?-x:x; 
}
 
int main()
{
  double x;
  cout<<"Podaj liczbę: ";
  cin>>x;
 
  cout<<"|"<<x<<"| = "<<modul(x)<<endl;
 
  system("pause");
  return 0;
}