I just want to create a simple code of a moving ball colldiing to each other. I am able to print the results, however, my fprintf isn't working. I am quite new to this, so please help? Thank you in advance.
After running it just says "EASY.exe has stopped working..."
My compiler didnt show where the error either.
Code:#include <stdio.h> #include <math.h> #include <conio.h> typedef double real; typedef struct { real xpos; real ypos; real zpos; real uvel; real vvel; real wvel; real omegax; real omegay; real omegaz; real radius; real mass; } sphere; void update_position(sphere *ball, real dt) { //(*ball).xpos ball->xpos=ball->xpos + dt*ball->vvel; //ypos,zpos } void detect_ball(sphere *ball1, sphere *ball2, real *pdist) { *pdist=sqrt((ball2->xpos-ball1->xpos)*(ball2->xpos-ball1->xpos)+ (ball2->ypos-ball1->ypos)*(ball2->ypos-ball1->ypos)); // if ( dist<= (ball1->radius + ball2->radius) +0.0075 ) // { // if ( dist>= ball1->radius + ball2->radius -0.0075 ) // { // *ptime=0; // } // } } int main(int argc, char *argv) { real dt=0.01; real t, dist1, tmax=1, mlimit, firstvvel, gap=1.5, dist[2], ballmatxpos[101][2]; int nballs=1 ; int i,j,m,k; sphere *ball; ball=(sphere *)malloc(nballs*sizeof(sphere)); mlimit=tmax/dt; //initialise positions for(i=0;i<=nballs;i++) { ball[i].radius=0.5; ball[i].xpos=(real) i * (2*ball[i].radius + gap); ball[i].ypos=0.0; ball[i].uvel=1.0; ball[0].vvel=1.0; ball[1].vvel=0.0; } //pendulum to be released // ball[0].xpos=0; //ball[0].ypos=0; // firstvvel=0; //timestep loop t=0.0; dist1=0.0; while(t<tmax) { for(m=0;m<=mlimit;m++) { //update position for(i=0;i<=nballs;i++) { update_position(&(ball[i]), dt); } //collision detection for(i=0;i<=nballs;i++) { for(j=0;j<=nballs;j++) { detect_ball(&(ball[i]),&(ball[j]), &dist1); if ( dist1 <= (ball[i].radius + ball[j].radius) +0.075 ) { if ( dist1 >= (ball[i].radius + ball[j].radius) -0.075 ) { // ball2->uvel=ball1->vvel; //yes collision, modify velocities and rotation rates t=0; } } } } ballmatxpos[m][0]=t; ballmatxpos[m][1]=ball[0].xpos; printf("In this case, initial velocity= %3.4lf with t=%3.4lf \n", ballmatxpos[m][0], t ); t+=dt; } } // ---------------//------------------------- FILE *pFile1; FILE *pFile2; pFile1 = fopen("graphing3.txt", "w"); pFile2 = fopen("graphing4.txt", "w"); if (pFile1 != NULL) { for(m=0;m<=mlimit;m++) { fprintf( pFile1, " %3.4lf \n ", ballmatxpos[m][0]); } fprintf( pFile1,"\n"); fclose(pFile1); } if (pFile2 != NULL) { for(m=0;m<=mlimit;m++) { fprintf( pFile2, " %3.4lf \n", ballmatxpos[m][1]); } fprintf( pFile2,"\n"); fclose(pFile2); } else { printf("inda dapat print bro"); } // ----------------------------------------------------- getch(); return 0; }



6Likes
LinkBack URL
About LinkBacks
. I am quite new to this, so please help? Thank you in advance.


