Need help making a module that sorts 4 arrays this how it started out

void dataSort (float sLengthArray[],float rSlopeArray[],float speedArray[], float size)
{
    void swap (int *x,int *y);
    int pass,j;

    for (pass=0;pass < size-1; pass++)
    {
        for (a = 0;j< size-1; j++)
        {
            if (slengthArray[j] > slengthArray[j + 1])
            {
            swap(&slengthArray[j],&slengthArray[j+1]);
            }
        }


    }
}

void swap ( int *x,int *y)
{
    int hold=*x;
    *x = *y;
    *y = hold;
}

Recommended Answers

All 8 Replies

Could you explain your problem and your code more clearly...
What exactly is the output you want to achieve?
Can you give us an idea of what you want to do next or are you asking for suggestions for what to do next?

for (a = 0;j< size-1; j++)

What is 'a' ? I think it should be j ?

void swap (int *x,int *y);

You have written a function prototype inside another function. That is wrong

void dataSort (float sLengthArray[],float rSlopeArray[],float speedArray[], float size)

I find only three arrays here,not 4

Could you explain your problem and your code more clearly...
What exactly is the output you want to achieve?
Can you give us an idea of what you want to do next or are you asking for suggestions for what to do next?

As zeroliken said, now let us know what exactly you want..

Could you explain your problem and your code more clearly...
What exactly is the output you want to achieve?
Can you give us an idea of what you want to do next or are you asking for suggestions for what to do next?

I just would like to know if i am on the right track in sorting three arrays at once or how to do that becuz i only know how to sort one array.

What is 'a' ? I think it should be j ?


You have written a function prototype inside another function. That is wrong


I find only three arrays here,not 4


As zeroliken said, now let us know what exactly you want..

Actually you can declare a prototype within a module if itz the only module calling that function and yh itz three arrays my bad i just want to know if im on the right track or if im not or do i sort three arrays in one sort module

for (a = 0;j< size-1; j++)

Did you already fix this? like DJSAN10 suggested

Well you're current code is swapping only the values inside an 1 array only?
Maybe a good sorting algorithm will help you clear some things out
note: you can find more better examples if you search on google

Well you're current code is swapping only the values inside an 1 array only?
Maybe a good sorting algorithm will help you clear some things out
note: you can find more better examples if you search on google

yh i made the correction ive decided that the best way to sort the three arrays is to make bubble sort module and make a file that stores the data and and let the sort module sort it something like this:

#include<stdio.h>
#include<conio.h>

int bubble (int* ,int);
void filewrite();
void avgmarks();
void fileprint();
void filesort();
void rollin();

/***********************SORTING FUNCTION*********************/

int bubble(int x[],int n)
{
    int hold,j,pass,switched = 1;

    for (pass=0;pass < n-1 && switched==1;pass++)
    {
        switched = 0;
        for (j=0;j<n-pass-1;j++)
        {
            if(x[j]>x[j+1])
            {
                switched = 1;
                    hold = x[j];
                    x[j] = x[j+1];
                    x[j+1] = hold;
            }
        }
    }
    return 0;
}
/***********************FILE WRITING FUNCTION************************/

void filewrite()
{
    int roll,ch,mark;
    char nam[50];
    FILE *fp;
    fp = fopen("student.txt","a");
    printf("ENTER ROLL NUMBER, NAME, MARKS\n");
    ch= 1;
    while(ch)
    {
        scanf("%d%s%d",&roll,&nam,&mark,"a");
        fprintf(fp,"%d %s %d\n",roll,nam,mark);
        printf("\n\n press 1 to continue, 0 to stop");
        scanf("%d",&ch);
    }
    fclose(fp);
}
/************************OUTPUTTING DATA ON SCREEN*********************/

void fileprint()
{
    int marks[100], rollno[100],i;
    char name[100] [50];
    FILE *fp;

    fp = fopen("student.txt","r");
    i=0;
    printf("ROLLNO\tNAME\tMARK\n");
    while (!feof(fp))
    {
        fscanf(fp,"%d %s %d\n", &rollno[i],&name[i],&marks[i]);
        printf("%d\t%s\t%d\n",rollno[i],name[i],marks[i]);
        i++;
    }
    fclose(fp);
    printf("\n\n\nPRESS ANY KEY");
    getch();
}

/************************SORTING FILE**************************/
void filesort()
{
    int marks[100],rollno[100],x[100],n,i,j;
    char name[100][50];
    FILE *fp, *fm;
    fp=fopen ("student.txt","r");
    fm=fopen("marks.txt","w");
    i = 0;
    while (!feof(fp))
    {
        fscanf (fp,"%d %s %d\n",&rollno[i],&name[i],&marks[i]);
        x[i] = marks[i];
        i=i+1;
    }
    n=i;
    bubble (x,n);
    for (i=0;i<n;i++)
        {
            printf("%d\t",x[i]);
        }
        for(i=0;i<n;i++)
            {
            for(j=0;j<n;j++)
                {
                    if(x[i]==marks[j])
                    {
                        fprintf(fm,"%d %s %d\n",rollno[j],name[j],marks[j]);
                    }
                }

            }
        fclose(fm);
        fclose(fp);
        printf("\n\nPRESS ANY KEY");
        getch();
}

/***************************DATA USING ROLLNO***************************/

void rollin()
{
    int i,roll,ch,mark,roll1;
    char nam[50];
    FILE *fm;
    ch=1;
    while(ch)
    {
        fm = fopen("marks.txt","r");
        printf("\n ENTER ROLL NUMBER -");
        scanf("%d",&roll1);
        i=0;
        while (!feof(fm))
        {
            fscanf(fm,"%d %s %d\n",&roll,&nam,&mark);
            if (roll1==roll)
            {
                printf("\nROLLNO.NAME MARKS\n");
                printf("%d %s %d\n",roll,nam,mark);
                break;
            }
            else
            i++;
        }
         printf("\n\npress 1 to see student info,0 to return to main menu\n");
         scanf("%d",&ch);
         fclose(fm);
    }
}

void avgmarks()
{
    int marks[100],rollno[100],n,i;
    float avg,x=0;
    char name[100][50];
    FILE *fm;
    fm = fopen("marks.txt","r");
    i=0;
    while (!feof(fm))
    {
        fscanf (fm,"%d %s %d\n",&rollno[i],&name[i],&marks[i]);
        x+=marks[i];
        i++;
    }
    n = i;
    avg = x/n;

    printf("AVERAGE MARKS OF %d STUDENTS ARE - %f",n,avg);
    fclose(fm);
    printf("\n\nPRESS ANY KEY");
    getch();
}
/**********************FUNCTION ENDS****************/
void main()
{
    int c;

    c = 0;
    while (c!=6)
    {
        printf("PLEASE SELECT A CHOICE FROM THE MENU--\n");
        printf("1 TO ENTER STUDENT INFO.\n");
        printf("2 TO SEE STUDENT.TXT FILE\n");
        printf("3 TO SORT FILE ON BASIS OF MARKS\n");
        printf("4 TO PRINT STUDENT INFO. USING ROLL NO\n");
        printf("5 TO FIND AVERAGE OF MARKS\n");
        printf("6 TO EXIT\n\n--");
        scanf("%d",&c);

        switch(c)
        {
        case 1:
            filewrite();
            break;

        case 2:
            fileprint();
            break;

        case 3:
            filesort();
            break;

        case 4:
            rollin();
            break;
        case 5:
            avgmarks();
            break;

        case 6:
            break;

        default:
            break;
        }
    }
}

Does that mean you've finished your program and have no more questions... if so then you mark this thread as solved
oh and next time don't forget to wrap your codes in code tags to make it more presentable and readable in your posts :)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.