Reputation: 5
#include <stdio.h>
#include <stdlib.h>
int main(void) {
float dlvelox;
float dlveloy;
float lvelox[1000] = {};
float lveloy[1000] = {};
float xcord[1000] = {};
float ycord[1000] = {};
float length;
float breadth;
int id;
int j;
int k;
int stepcount;
int step = 0;
/* Obtaining velocity */
{
printf("Enter the initial h velocity of the ball:\n");
scanf("%f", &dlvelox);
printf("Enter the initial v velocity of the ball:\n");
scanf("%f", &dlveloy);
}
for (int i = 0; i < 1000; i++)
lvelox[i] = dlvelox;
for (int i = 0; i < 1000; i++)
lveloy[i] = dlveloy;
/* Initializing box lock */
{
printf("Enter the length of box:\n");
scanf("%f", &length);
printf("Enter the breadth of box:\n");
scanf("%f", &breadth);
}
/* Obtain number of steps */
{
printf("Enter the number of steps wanted:\n");
scanf("%d", &stepcount);
}
/* Initial console display */
{
printf("\n");
printf("X-coordinate, Y-coordinate, Ball ID, Step\n");
printf("\n");
}
/* Loop method */
while ( step < stepcount )
{
j = id;
k = id;
for(id = 0; id < 1000; id++)
{
lveloy[id] = lveloy[id] - 9.81;
xcord[id] = xcord[id] + lvelox[id];
ycord[id] = ycord[id] + lveloy[id];
printf("%f, %f, %d, %d\n", xcord[id], ycord[id], id, step);
if ( ycord[id] < 0 )
{
lveloy[id] = (lveloy[id] * -1);
xcord[id] = xcord[id] + lvelox[id];
ycord[id] = ycord[id] + lveloy[id];
printf("%f, %f, %d, %d\n", xcord[id], ycord[id], id, step);
}
if ( ycord[id] > breadth )
{
lveloy[id] = (lveloy[id] * -1);
xcord[id] = xcord[id] + lvelox[id];
ycord[id] = ycord[id] + lveloy[id];
printf("%f, %f, %d, %d\n", xcord[id], ycord[id], id, step);
}
if ( xcord[id] < 0 )
{
lvelox[id] = (lvelox[id] * -1);
xcord[id] = xcord[id] + lvelox[id];
ycord[id] = ycord[id] + lveloy[id];
printf("%f, %f, %d, %d\n", xcord[id], ycord[id], id, step);
}
if ( xcord[id] > length )
{
lvelox[id] = (lvelox[id] * -1);
xcord[id] = xcord[id] + lvelox[id];
ycord[id] = ycord[id] + lveloy[id];
printf("%f, %f, %d, %d\n", xcord[id], ycord[id], id, step);
}
if ( xcord[j] == xcord[k] )
{
lvelox[j] = (lvelox[j] * -1);
xcord[j] = xcord[j] + lvelox[j];
ycord[j] = ycord[j] + lveloy[j];
printf("%f, %f, %d, %d\n", xcord[j], ycord[j], j, step);
lvelox[k] = (lvelox[k] * -1);
xcord[k] = xcord[k] + lvelox[k];
ycord[k] = ycord[k] + lveloy[k];
printf("%f, %f, %d, %d\n", xcord[k], ycord[k], k, step);
}
if ( ycord[j] == ycord[k] )
{
lvelox[j] = (lvelox[j] * -1);
xcord[j] = xcord[j] + lvelox[j];
ycord[j] = ycord[j] + lveloy[j];
printf("%f, %f, %d, %d\n", xcord[j], ycord[j], j, step);
lvelox[k] = (lvelox[k] * -1);
xcord[k] = xcord[k] + lvelox[k];
ycord[k] = ycord[k] + lveloy[k];
printf("%f, %f, %d, %d\n", xcord[k], ycord[k], k, step);
}
if ( step == stepcount )
{
return 0;
}
}
step = step + 1;
}
}
This program simulates 1000 particles colliding in a box of user-defined dimensions. This code doesn't seem to work. It produces random coordinates that are outside the dimension of the box, and also does not show the coordinates of all the particles. This only occurred after inserting the collision section of the code.
j = id
k = id
if ( xcord[j] == xcord[k] )
{
lvelox[j] = (lvelox[j] * -1);
xcord[j] = xcord[j] + lvelox[j];
ycord[j] = ycord[j] + lveloy[j];
printf("%f, %f, %d, %d\n", xcord[j], ycord[j], j, step);
lvelox[k] = (lvelox[k] * -1);
xcord[k] = xcord[k] + lvelox[k];
ycord[k] = ycord[k] + lveloy[k];
printf("%f, %f, %d, %d\n", xcord[k], ycord[k], k, step);
}
if ( ycord[j] == ycord[k] )
{
lvelox[j] = (lvelox[j] * -1);
xcord[j] = xcord[j] + lvelox[j];
ycord[j] = ycord[j] + lveloy[j];
printf("%f, %f, %d, %d\n", xcord[j], ycord[j], j, step);
lvelox[k] = (lvelox[k] * -1);
xcord[k] = xcord[k] + lvelox[k];
ycord[k] = ycord[k] + lveloy[k];
printf("%f, %f, %d, %d\n", xcord[k], ycord[k], k, step);
}
Upvotes: 0
Views: 168
Reputation: 802
#include <stdio.h>
main()
{
int xcord[] = {1, 2, 3, 5, 5, 6, 7};
int arrlength= sizeof(xcord)/sizeof(xcord[0]);
int i,j,tmp;
for(i=0; i<arrlength; i++) {
tmp = xcord[i];
for (j=i+1; j<arrlength; j++) {
if(xcord[i] == xcord[j]) {
printf("same value %d \n",xcord[j]);
}
}
}
}
Hope it will solve your problem.
Upvotes: 0
Reputation: 182743
It's not clear what you're trying to do, but this line doesn't make any sense at all:
if ( xcord[id] = xcord[id = 0; id < 1000; id++] )
There is no C syntax that looks even remotely like that. This looks like half if
and half for
. Pick one or the other.
Upvotes: 1
Reputation: 1597
Ok you did something really strange. Read first about loops and then try again. What I mean is you have to use
for(id = 0; id < 1000; id++) {
//your code here
}
Upvotes: 0