Przypisanie wartości bezwzględnej do zmiennej – błąd kompilacji

Przypisanie wartości bezwzględnej do zmiennej – błąd kompilacji
J3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0
Kopiuj
#include <iostream>
#include <cmath>

using namespace std;

float a,b,c,d,e,m;

int main()
{
  cout<<"Podaj 5 liczb rozdzielonych spacją: ";
  cin>>a>>b>>c>>d>>e;

  float sr = (a+b+c+d+e)/5;
  abs(sr-a) = m; //tutaj błąd: Expression is not assignable

  cout<<"Liczba najbliższa średniej tych liczb to: "<<m<<endl;
  return 0;
}

Witam. Probuję przypisać wynik wartości bezwględnej z odejmowania dwóch zmiennych do innej zmiennej. Dlaczego nie mogę tego do siebie przypisać?

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
3

Bo próbujesz do funkcji przypisać m, Tobie chodziło o:

Kopiuj
m = abs(sr - a);
J3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

nie rozumiem za bardzo jaka jest roznica :(
jak dam wszystko w nawias to tez nie moge przypisac;
to m musi byc po prostu bezposrednio przypisane przed funkcja abs?

ZA
  • Rejestracja: dni
  • Ostatnio: dni
2

m musi być z lewej strony.
Kod a = b; oznacza "Weź wartość tego co jest po prawej stronie znaku równości i wpisz do tego, na co wskazuje lewa strona. Wynik funkcji abs() nie ma reprezentacji w kodzie i nie może być po lewej stronie przypisania.

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
3

Różnica jest taka że wartość po prawej jest przypisywana do zmiennej po lewej. Wyobraź sobie prosty kod

Kopiuj
int a = 5;
int b = 7;

b = a; // W tym momencie a oraz b mają wartość 5
// Ale gdyby zrobić na odwrót
a = b; // Wtedy a i b mają wartość 7

Oczywiście to są 2 zmienne więc oba zapisy są poprawne, w Twoim kodzie jednak próbujesz przypisać wartość do funkcji co nie ma sensu.

J3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

Dzięki bardzo :)

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12316
2
zagura napisał(a):

Kod a = b; oznacza "Weź wartość tego co jest po prawej stronie znaku równości […]

To nie jest znak równości, tylko operator przypisania.

W Pascalu oznacza równość, jednak nadal jest to operator, a nie po prostu znak. :P

koszalek-opalek
  • Rejestracja: dni
  • Ostatnio: dni
0
furious programming napisał(a):
zagura napisał(a):

Kod a = b; oznacza "Weź wartość tego co jest po prawej stronie znaku równości […]

To nie jest znak równości, tylko operator przypisania.

W Pascalu oznacza równość, jednak nadal jest to operator, a nie po prostu znak. :P

Czepiasz się, @furious programming... :)
@zagura dobrze napisał, miał na myśli znak pisarski (on sie nazywa "znak równości"), a nie operator w sensie funkcji języka programowania. :)

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.