I been away from C programming for awhile now, and it's difficult for me to figure this out. The program itself works, however I am supposed to turn this code into an array of structures instead of having 3 parallel arrays.
I heard it doesn't take long if you already have a working set of code.
Code:
#include <stdio.h> // preprocessor directive to allow use of printf()/sca$
#include <string.h> //preprocessor directive to allow use of strings
//typedef below used to create a structure tag for structure definitions
typedef struct person { //Algorithm step 2
char first_name[20]; //array "first_name"element
//Algorithm step 3
char last_name[20]; //array "last_name"element
//Algorithm step 4
char age[4]; //array "age" element
}ppl ; //tag name
void populate (ppl []); //PCF populate prototype
void last_name_sort (ppl []); //PCF last_name_sort prototype
int main (void ) //Main function- returns and integer/ accepts no argumen$
{ //Marks beginning of the main function's statement
int i; //integer i created and initialized
//Algorithm step 1 completed in next four lines
printf("Hello! \nThe purpose of this program is to use parallel arrays $
printf("order the names aphabetically (by last name) without mixing the$
printf("names and ages. The newly sorted information will be printed to$
printf("screen. \n\n\n\n");
ppl person[7]; //defined structure "person"
populate (person); //defined structure passed to PCF populate
last_name_sort (person); //defined structure passed to PCF last_name_s$
printf("\n\n<-------------------------~SORTED LIST~-------------------$
for (i=0; i<= 6; i++)
{
//Algorithm step 8 in for loop
printf("%s %s %s\n", person[i].first_name , person[i].last_name, pe$
}
printf("\n\n\n");
printf("Thank you for using my program. I hope it was helpful!\n\n");
return (0) ;
}
void populate (ppl person[])
{
int i; //creation of integer variable i
printf("Please enter a first name, last name, and age with a space in b$
printf("and the first letter of the first and last name capitalized: \n$
printf("\n\n<-----------------------~UNSORTED LIST~--------------------$
for (i=0; i<= 6; i++)
{
scanf("%s %s %s",person[i].first_name , person[i].last_name, person[i].$
}
return;
}
void last_name_sort( ppl person[])
{
int i, j;
char temp[20]; //creation of first temporary array for 3way switch of las$
char temp_1[20]; //creation of first temporary array for 3way switch of f$
char temp_2[4]; //creation of first temporary array for 3way switchof age
for (i=0; i<=5; i++) //outer for loop
{
for(j=0; j<=5; j++) //inner "nested" for loop
{
if (strncmp(person[j].last_name, person[j+1].last_name, 7) >0)
{
//Algorithm for last name sorting
strcpy (temp, person[j].last_name);
strcpy (person[j].last_name, person[j+1].last_name);
strcpy (person[j+1].last_name, temp);
//Algorithm so first name follows where last name is sorted
strcpy (temp_1, person[j].first_name);
strcpy (person[j].first_name, person[j+1].first_name);
strcpy (person[j+1].first_name, temp_1);
//Algorithm so age follows where last name is sorted
strcpy (temp_2, person[j].age);
strcpy (person[j].age, person[j+1].age);
strcpy (person[j+1].age, temp_2);
}
}
return;
}
}
Any tip, help or comment would be great!
Thank you.