Help me please (cicle don't go)

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Help me please (cicle don't go)

davidedimauro82
Why my cicle print other result if i post it in the different location?


#include <cxcore.h>
#include <stdio.h>

int main(int argc, char ** argv)
{
    int i,j;
   
    CvMat *xuno = cvCreateMat(10, 1, CV_32FC1);
    printf("\nX size : %d per %d \n", xuno->rows, xuno->cols);
    cvSet(xuno,cvScalarAll(1),0);
   
    //primo ciclo di stampa
    for(i=0;i<xuno->rows;i++)
   
       for(j=0;j<xuno->cols;j++)
       {
               float *e= &CV_MAT_ELEM(*xuno,float,i,j);
               printf("%1.0f\n", e);
       }
   

   
    CvMat *mat = cvCreateMat(5, 5, CV_32FC1);
    cvSet(mat,cvScalarAll(0),0);
    float element_3_2 = 7;
    *( (float*)CV_MAT_ELEM_PTR( *mat, 3, 2 ) ) = element_3_2;
    printf("\n\n\n");
    printf("%1.0f ", CV_MAT_ELEM( *mat, float, 3, 2 ));
    printf("\n\n\n");
     
    //secondo ciclo uguale al primo ma con diversi risultati
    for(i=0;i<xuno->rows;i++)
   
       for(j=0;j<xuno->cols;j++)
       {
               float *e= &CV_MAT_ELEM(*xuno,float,i,j);
               printf("%1.0f\n", e);
       }
   
    cvReleaseMat(&xuno);
    cvReleaseMat(&mat);
    cvWaitKey(0);
    system("PAUSE");
    return 0;
}

Reply | Threaded
Open this post in threaded view
|

Re: Help me please (cicle don't go)

lordfinesse6
--- In [hidden email], "davidedimauro82" <davidedimauro82@...>
wrote:

>
> Why my cicle print other result if i post it in the different location?
>
>
> #include <cxcore.h>
> #include <stdio.h>
>
> int main(int argc, char ** argv)
> {
>     int i,j;
>    
>     CvMat *xuno = cvCreateMat(10, 1, CV_32FC1);
>     printf("\nX size : %d per %d \n", xuno->rows, xuno->cols);
>     cvSet(xuno,cvScalarAll(1),0);
>    
>     //primo ciclo di stampa
>     for(i=0;i<xuno->rows;i++)
>    
>        for(j=0;j<xuno->cols;j++)
>        {
>                float *e= &CV_MAT_ELEM(*xuno,float,i,j);
>                printf("%1.0f\n", e);
>        }
>    
>
>    
>     CvMat *mat = cvCreateMat(5, 5, CV_32FC1);
>     cvSet(mat,cvScalarAll(0),0);
>     float element_3_2 = 7;
>     *( (float*)CV_MAT_ELEM_PTR( *mat, 3, 2 ) ) = element_3_2;
>     printf("\n\n\n");
>     printf("%1.0f ", CV_MAT_ELEM( *mat, float, 3, 2 ));
>     printf("\n\n\n");
>      
>     //secondo ciclo uguale al primo ma con diversi risultati
>     for(i=0;i<xuno->rows;i++)
>    
>        for(j=0;j<xuno->cols;j++)
>        {
>                float *e= &CV_MAT_ELEM(*xuno,float,i,j);
>                printf("%1.0f\n", e);
>        }
>    
>     cvReleaseMat(&xuno);
>     cvReleaseMat(&mat);
>     cvWaitKey(0);
>     system("PAUSE");
>     return 0;
> }
>

You are doing very strange things with pointers :) Try to correct your
loops like this:

>     for(i = 0; i  <xuno->rows; i++){
>    
>        for( j = 0;j< xuno->cols ; j++)
>        {
>                float e = CV_MAT_ELEM(*xuno,float,i,j);
>                printf("%1.0f\n", e);
>        }
>     }

Ciao
Giulio