Perfect! Now, I has no errors and no warnings, but it doesn't work! When I compile the program, it has an error and stop working
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int N;
printf("\nNumber of names: ");
scanf("%d", &N);
char name[N][20];
char aux[N][20];
int i, ret0=0, ret1=0, ret2=0, ret3=0;
for(i=0; i<N; i++)
{
printf("\nName: ");
scanf("%s", &name[i][20]);
}
// 3 lower names
printf("\nFIRST 3 NAMES SORTED ALPHABETICALLY\n");
for (i=0; i<3; i++)
{
ret0 = strcmp(name[i][20], name[i+1][20]);
if (ret0 > 0)
{
strcpy(aux[i][20], name[i][20]);
strcpy(name[i][20], name[i+1][20]);
strcpy(name[i+1][20], aux[i][20]);
}
}
printf("\n%s ", &name[0][20]);
printf("\n%s ", &name[1][20]);
printf("\n%s ", &name[2][20]);
printf("\n3 LOWER NAMES\n");
for(i=3; i<N; i++)
{
if ((ret1 = strcmp(name[0][20], name[i][20])) > 0 && (ret2 = strcmp(name[1][20], name[i][20])) > 0 && (ret3 = strcmp(name[2][20], name[i][20])) > 0)
{
name[0][20] = name[i][20];
name[1][20] = name[0][20];
name[2][20] = name[1][20];
}
if ((ret1 = strcmp(name[0][20], name[i][20])) < 0 && (ret2 = strcmp(name[1][20], name[i][20])) > 0 && (ret3 = strcmp(name[2][20], name[i][20])) > 0)
{
name[2][20] = name[i][20];
}
if ((ret1 = strcmp(name[0][20], name[i][20])) > 0 && (ret2 = strcmp(name[1][20], name[i][20])) < 0 && (ret3 = strcmp(name[2][20], name[i][20])) > 0)
{
name[1][20] = name[i][20];
name[2][20] = name[1][20];
}
}
printf("\n%s \n%s \n%s", name[0][20], name[1][20], name[2][20]);
return 0;
}
The part that is not working is this:
Code:
printf("\nFIRST 3 NAMES SORTED ALPHABETICALLY\n");
for (i=0; i<3; i++)
{
ret0 = strcmp(name[i][20], name[i+1][20]);
if (ret0 > 0)
{
strcpy(aux[i][20], name[i][20]);
strcpy(name[i][20], name[i+1][20]);
strcpy(name[i+1][20], aux[i][20]);
}
}
printf("\n%s ", &name[0][20]);
printf("\n%s ", &name[1][20]);
printf("\n%s ", &name[2][20]);
Thanks!