Solved

retrieve data from simple mathematical function; store data in vector(array)

Posted on 2007-03-21
3
663 Views
Last Modified: 2013-12-14
Hello,
I am trying to implement a function that calculates the position for a counter of a motor. I would like to store the postion values for the different times in a vector (or array?). This is the function I implemented:

void main(void)
{      
      float pi=0; //initial position; later != 0
      float a=pi;
      float vi=0; //initial velocity
      float b=vi;
      float qf; //final position
      qf=8200; //approximately 2 turns
      float c=3*qf;
      float d=-2*qf;

      float Tf=1; //final time
      float Ti=0; //initial time
      float Ts=0.01; //sampling time
      float nmuestras = Tf/Ts;
      int i;

      for (i=1;i<=nmuestras;i++)
      {
            float tiempo=i*Ts; //real time
            float t=tiempo/Tf;
            
            /*
            float *ptr;
            float pos;
            ptr = &pos;
            *ptr = a+b*t+c*t^2+d*t^3;
            */


            //pos_final(t);
            float pos;
            pos = a+b*t+c*t^2+d*t^3;
            //float pos = a+b*t+c*t^2+d*t^3;
            int k;
            pos_vector[k] = pos;//put the counter value in the array for storing counter values
            
       
            k++;

            
      }            

I get the following errors and don´t know how to get rid of them:

ompiling...
test control2.cpp
C:\datos\judith\proyecto_judith\pci 1784\test control2.cpp(18) : warning C4305: 'initializing' : truncation from 'const double' to 'float'
C:\datos\judith\proyecto_judith\pci 1784\test control2.cpp(37) : error C2296: '^' : illegal, left operand has type 'float'
C:\datos\judith\proyecto_judith\pci 1784\test control2.cpp(37) : error C2297: '^' : illegal, right operand has type 'float'
C:\datos\judith\proyecto_judith\pci 1784\test control2.cpp(40) : error C2065: 'pos_vector' : undeclared identifier
C:\datos\judith\proyecto_judith\pci 1784\test control2.cpp(40) : error C2109: subscript requires array or pointer type
C:\datos\judith\proyecto_judith\pci 1784\test control2.cpp(40) : warning C4244: '=' : conversion from 'float' to 'int', possible loss of data
C:\datos\judith\proyecto_judith\pci 1784\test control2.cpp(40) : error C2106: '=' : left operand must be l-value
Error executing cl.exe.

test control2.obj - 5 error(s), 2 warning(s)


Do I maybe have to include libraries or introduce pointers?
Judith
0
Comment
Question by:jutzki
3 Comments
 
LVL 8

Accepted Solution

by:
KelvinY earned 500 total points
ID: 18763236
Hi jutzki

One of your main problems is that you do not seem to be aware that expressions involving mixed decimal types always result in a value of type double. To assign the result of such an expression to a float you need to perform a cast.

e.g.
float nmuestras = Tf/Ts;  //should change to float nmuestras = (float) (Tf/Ts);

You also have a problem with this expression,

pos = a+b*t+c*t^2+d*t^3

^ is the XOR operator in C++. If you want to raise numbers to certain powers you have to use the pow() function in the Math library.

e.g. pos = (float) (a+b*t+c*pow(t, 2)+d*pow(t, 3));
0

Featured Post

Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Programmer's Notepad is, one of the best free text editing tools available, simply because the developers appear to have second-guessed every weird problem or issue a programmer is likely to run into. One of these problems is selecting and deleti…
Update (December 2011): Since this article was published, the things have changed for good for Android native developers. The Sequoyah Project (http://www.eclipse.org/sequoyah/) automates most of the tasks discussed in this article. You can even fin…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
THe viewer will learn how to use NetBeans IDE 8.0 for Windows to perform CRUD operations on a MySql database.

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question