Yessssssssssss!!! It works for 3 names!!!!!!! I'm so happy!!
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]);
}
// 3 lower names
printf("\nFIRST 3 NAMES THE USER WROTE\n");
for (i=0; i<3; i++)
{
ret0 = strcmp(name[i], name[i+1]);
if (ret0 > 0)
{
strcpy(aux[i], name[i]);
strcpy(name[i], name[i+1]);
strcpy(name[i+1], aux[i]);
}
}
printf("\n%s ", &name[0]);
printf("\n%s ", &name[1]);
printf("\n%s ", &name[2]);
printf("\n3 LOWER NAMES (ALPHABETICALLY)\n");
for(i=3; i<N; i++)
{
if ((ret1 = strcmp(name[0], name[i])) > 0 && (ret2 = strcmp(name[1], name[i])) > 0 && (ret3 = strcmp(name[2], name[i])) > 0)
{
strcpy(aux[0], name[0]);
strcpy(name[0], name[i]);
strcpy(aux[1], name[1]);
strcpy(name[1], aux[0]);
strcpy(name[2], aux[1]);
}
if ((ret1 = strcmp(name[0], name[i])) < 0 && (ret2 = strcmp(name[1], name[i])) > 0 && (ret3 = strcmp(name[2], name[i])) > 0)
{
strcpy(name[2], name[i]);
}
if ((ret1 = strcmp(name[0], name[i])) > 0 && (ret2 = strcmp(name[1], name[i])) < 0 && (ret3 = strcmp(name[2], name[i])) > 0)
{
strcpy(aux[0], name[1]);
strcpy(name[1], name[i]);
strcpy(aux[1], name[2]);
strcpy(name[2], aux[0]);
}
}
printf("\n%s \n%s \n%s", name[0], name[1], name[2]);
return 0;
}
(it has 4 errors that says something about pointers)
Now, I have to improve it to read the names from a .txt and to print the first 100 names (for 3 names, I used a for and some if, but for 100 it's going to be impossible)
Can you continue helping me, please?