Bubble sort 2D int array with c

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
1 reply · 9K views
clope023
Messages
990
Reaction score
130
hi, I'm not sure if there is a homework forum for programming but I thought I'd post my problem here; I'm supposed to bubble sort a 2d integer array with elements 15 and 2; this is what my code looks like so far:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define cards 15
#define sides 2

void bubblesort(int items[cards][sides]);

int main()
{
int i, stime;
long ltime; ltime = time(NULL);
stime = (unsigned)ltime/2;
srand(stime);
int deck[cards][sides];

for(i=1;i<=15;i++)
{ deck[0]=i;
deck[1]=rand();
printf("%d ", deck[0]);
printf("%d\n", deck[1]);
bubblesort(deck[0]);
}

return 0;
}void bubblesort(int items[cards][sides])
{
int a,b,c,d,t;

for(a=1;a<=cards;a++)
for(b=0;b<sides;b++)
{
for(c=cards-1; c>=cards;c--)
{
for(d=sides-1; c>=sides;d--)
if(items[c-1][d-1] > items[c][d])
t=items[c-1][d-1];
items[c-1][d-1] = items[c][d];
items[c][d] = t;
}
}
}

it keeps on returning the same 2 errors

initializing argument 1 of void bubblesort(int (*)[2])
and invalid conversion from int to int(*)[2]

I'm not sure what kind of 'conversion' is going on; I've tried changing the variable array for bubblesort to pointer and to memory address but that gave extra errors; any help on what I might be doing wrong is appreciated
 
Physics news on Phys.org
On this line of your code
Code:
bubblesort(deck[i][0]);
You are sending an int to your bubblesort function, when your prototype says you are expecting a pointer to a pointer (int **). Try changing it to
Code:
bubblesort(deck)
But from looking at the way you have used memory, you are bound to have more problems.