Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Valore assoluto
Forum - C/C++ - Valore assoluto

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Jenosky (Normal User)
Newbie


Messaggi: 11
Iscritto: 28/09/2012

Segnala al moderatore
Postato alle 17:20
Martedì, 06/11/2012
Salve ragazzi, sto usando nel mio programma la libreria math.h
Ora ho bisogno per una operazione della restituzione del valore assoluto, cosa sbaglio?
Codice sorgente - presumibilmente C#

  1. double robot::s (float t, float tf, double si, double sf){
  2.        double s;
  3.        double dds=4*abs(sf-si)/pow(tf,2); //sistemare valore assoluto METTERE VALORE ASSOLUTO
  4.        double tc=tf*0.5-0.5*sqrt((pow(tf,2)*dds-4*(sf-si))/dds);
  5.        if (t>=0 && t<=tc){
  6.                return s=si+dds*0.5*pow(t,2);
  7.                }
  8.        if (t>tc && t<=tf-tc){
  9.                 return s=si+dds*tc*(t-tc*0.5);
  10.                 }
  11.        if (t>tf-tc && t<=tf){
  12.                    return s=sf-0.5*dds*pow(tf-t,2);
  13.                    }
  14. }



PM Quote
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Segnala al moderatore
Postato alle 19:13
Martedì, 06/11/2012
prova a metterti nei panni di un qualsiasi utente e cerca di capire cosa hai scritto

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:33
Martedì, 06/11/2012
In effetti non si capisce molto ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Jenosky (Normal User)
Newbie


Messaggi: 11
Iscritto: 28/09/2012

Segnala al moderatore
Postato alle 10:08
Mercoledì, 07/11/2012
Vi chiedo scusa, avete ragione :(
Provo a spiegarmi meglio.

In pratica devo fare questa operazione matematica:
Codice sorgente - presumibilmente C/C++

  1. double dds=4*abs(sf-si)/pow(tf,2);


dove la quantità (di tipo double) sf-si deve essere in valore assoluto.
Mi da un errore dicendomi che non ci sono abbastanza elementi per definire la funzione abs.
Spero di essere stato più chiaro :)

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:17
Mercoledì, 07/11/2012
Puoi postare il messaggio d'errore completo e indicarci con quale compilatore lavori ?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Jenosky (Normal User)
Newbie


Messaggi: 11
Iscritto: 28/09/2012

Segnala al moderatore
Postato alle 11:52
Mercoledì, 07/11/2012
Uso Dev C++ (ultima versione)
E i messaggi sono:
296 C:\Documents and Settings\Administrator\Documenti\Università\Laurea\Robot\robot.cpp call of overloaded `abs(double)' is ambiguous
note C:\Programmi\Dev-Cpp\include\stdlib.h:365 candidates are: int abs(int)
note C:\Programmi\Dev-Cpp\include\stdlib.h:365                 long long int __gnu_cxx::abs(long long int)
note C:\Programmi\Dev-Cpp\include\stdlib.h:365                 long int std::abs(long int)

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 12:13
Mercoledì, 07/11/2012
Includi cmath con

#include <cmath>

e utilizza la funzione fabs e non abs

double dds=4*fabs(sf-si)/pow(tf,2);


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Jenosky (Normal User)
Newbie


Messaggi: 11
Iscritto: 28/09/2012

Segnala al moderatore
Postato alle 12:14
Sabato, 10/11/2012
Ti ringrazio ha funzionato bene, però mi si è generato un nuovo errore nelle righe in cui uso la potenza:

Codice sorgente - presumibilmente Delphi

  1. for (int i=0;i<n;i++){
  2.                       for (int p=0;p<n-1;p++){
  3.                           mq=0;
  4.                           for (int q=0;q<n-1;q++){
  5.                               if (q==i)
  6.                                  mq=1;
  7.                                  sup.mat[p][q]=A.mat[p+1][q+mq];
  8.                                  }
  9.                               }
  10.                           det=det+(A.mat[0][i]*pow(-1,i)*determinante(sup));
  11.                           }


Qui in particolare
det=det+(A.mat[0]*pow(-1,i)*determinante(sup));

Il messaggio di errore che mi da è il seguente:
131 C:\Documents and Settings\Administrator\Documenti\Università\Laurea\Braccio\matrix.cpp call of overloaded `pow(int, int&)' is ambiguous
note C:\Programmi\Dev-Cpp\include\math.h:150 candidates are: double pow(double, double)
note C:\Programmi\Dev-Cpp\include\math.h:150                 long double std::pow(long double, int)
note C:\Programmi\Dev-Cpp\include\math.h:150                 float std::pow(float, int)
note C:\Programmi\Dev-Cpp\include\math.h:150                 double std::pow(double, int)
note C:\Programmi\Dev-Cpp\include\math.h:150                 long double std::pow(long double, long double)
note C:\Programmi\Dev-Cpp\include\math.h:150                 float std::pow(float, float)

E lo stesso errore mi da ovunque usassi prima la funzione potenza (che andava bene)
Come posso sistemare?

Edit: risolto :)

Ultima modifica effettuata da Jenosky il 10/11/2012 alle 13:02
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 950
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 14:02
Sabato, 10/11/2012
Errore strano...
Io ho fatto alcune prove, e non ho avuto problemi. Prova a fare un cast:
Codice sorgente - presumibilmente Plain Text

  1. det=det+(A.mat[0][i]*pow((double)-1,(double)i)*determinante(sup));

:


Nulla va più veloce della luce, quindi rilassati.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo