I need help writing a program that takes in student info for three separate fields (ID Number, first name, last name)
. Then, sorts the table alphabetically based on the last name
field. The user will input the student data, then I would like it to separate the last name
data into two buckets which will then be put into a bubble sort. I am having trouble with adding the data into separate buckets.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _123_Assignment2
{
using System;
using static System.Console;
class Program
{
struct student
{
public int studentId;
public string firstName;
public string lastName;
};
static void Main(string[] args)
{
student[] studentInfo = new student[20];
string[] bucketLow = new string[0];
string[] bucketHigh = new string [0];
int x = 0;
int y = 0;
WriteLine("Enter student ID number:");
studentInfo[x].studentId = Convert.ToInt32(ReadLine());
while (studentInfo[x].studentId != 999)
{
WriteLine("Enter first name:");
studentInfo[x].firstName = ReadLine();
WriteLine("Enter last name:");
studentInfo[x].lastName = ReadLine();
x++;
WriteLine("Enter student ID number:");
studentInfo[x].studentId = Convert.ToInt32(ReadLine());
}
for (int j = 0; j < studentInfo.Length; j++)
{
if (studentInfo[j].lastName.CompareTo(studentInfo[j + 1].lastName) > 0)
bucketLow[y] = studentInfo[j].lastName;
else
bucketHigh[y] = studentInfo[j].lastName;
y++;
}
}
}
}
Try this code, you can check my comments for explanation:
student[] studentInfo = new student[20];
//Make sure you initialize the correct number of variables on your string
string[] bucketLow = new string[20];
string[] bucketHigh = new string[20];
int x = 0;
int y = 0;
//I commented out this line since you are already asking for inputs on without going on your counter scenario
//Console.WriteLine("Enter student ID number:");
//studentInfo[x].studentId = Convert.ToInt32(Console.ReadLine());
//I made changes on this line, since, you are doing a condition based on the number of increment on your counter
while (x <= 2)
{
//I put the enter student ID above since it will not be counted if it was put after the counter x
Console.WriteLine("Enter student ID number:");
studentInfo[x].studentId = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter first name:");
studentInfo[x].firstName = Console.ReadLine();
Console.WriteLine("Enter last name:");
studentInfo[x].lastName = Console.ReadLine();
x++;
}
for (int j = 0; j < x; j++)
{
//Make sure you put group all your conditions on round brackets to achieve your desired condition
if ((studentInfo[j].lastName.CompareTo(studentInfo[j + 1].lastName)) > 0)
bucketLow[y] = studentInfo[j].lastName;
else
bucketHigh[y] = studentInfo[j].lastName;
y++;
}