Jump to content



Recommended Posts

Δεν ξέρω καθόλου C#. .Πρώτη φορά που ασχολούμαι  με προγραμματισμο.Σαν πρώτη εργασία έχω  αυτήν  την εργασία. Δεν  ξέρω πώς να την λύσω.  Μπορείτε να μου δώσετε κάποιες οδηγίες για το πώς να  την λύσω.

 

 

Θα δημιουργήσετε μια εφαρμογή κονσόλας που θα δεχθεί τους βαθμούς των μαθητών και να παράγει στατιστικά αποτελέσματα.Θα πρέπει να χειριστείτε 6 μαθητές με τα ονόματα stud0 - stud5 και 3 μαθήματα με τα ονόματα course0, course1 και course2.Μετά την είσοδό του βαθμού κάθε φοιτητή και για τις τρεις σειρές μαθημάτων θα πρέπει να δημιουργήσει τον απαραίτητο κώδικα για να παράγουν τα στατιστικά αποτελέσματα που θα περιγραφούν παρακάτω.Θα πρέπει να χρησιμοποιήσετε 4 συστοιχίες των 6 στοιχείων για να αποθηκεύσετε τα ονόματα των μαθητών και των βαθμών μαθημάτων.Θα χρησιμοποιήσετε ένα βρόχο για να εισάγετε τα ονόματα των φοιτητών σε μια σειρά από 6 στοιχεία.Ο χρήστης εισέρχεται σε έναν βαθμό για κάθε μάθημα και για κάθε μαθητή. Η προτροπή θα είναι sth σαν αυτό: "εισάγετε βαθμού για stud3 και course0" (18 συμμετοχές συνολικά).

 

Στατιστικά αποτέλεσμα

Μετά την ολοκλήρωση της εισαγωγής των στοιχείων τα ακόλουθα αποτελέσματα θα παραχθεί και θα εκτυπωθεί στην κονσόλα

1. Ελάχιστη - Μέγιστη βαθμολογία των φοιτητών (που θα δείξει ο μαθητής που πήρε το ελάχιστο βαθμό και ο μαθητής που πήρε τη μέγιστη βαθμολογία)

2. Ελάχιστη - Μέγιστη μέσος μαθητής (που θα δείξει ο φοιτητής που πέτυχαν το ελάχιστο μέσο όρο βαθμολογίας των τριών μαθημάτων και ο μαθητής που επιτευχθεί η μέγιστη μέση βαθμολογία για τα τρία μαθήματα)

3. Ελάχιστη - Μέγιστη Βαθμός μαθήματος (θα δείξει την πορεία που δήλωσε το ελάχιστο βαθμό και την πορεία που δήλωσε τη μέγιστη βαθμολογία για αυτό το εξάμηνο)

4. Ελάχιστη - Μέγιστη μέση πορεία (θα δείξει την πορεία με το ελάχιστο μέσο όρο βαθμολογίας και την πορεία με το μέγιστο μέσο όρο βαθμολογίας)

 

Η έξοδος του προγράμματος θα είναι κάτι σαν αυτό

 

Φοιτητής που πέτυχε τη μέγιστη βαθμολογία είναι stud2

Φοιτητής που πέτυχε το λεπτό βαθμός είναι stud3

Φοιτητής που πέτυχε τη μέγιστη μέση τιμή είναι stud2

Φοιτητής που πέτυχε ο μέσος min είναι stud3

Η πορεία στην οποία η μέγιστη βαθμού γκολ είναι course2

Η πορεία στην οποία το λεπτό βαθμού γκολ είναι course1

Η πορεία στην οποία η μέγιστη μέση βαθμού γκολ είναι course2

Η πορεία στην οποία ο μέσος βαθμός λεπτά βαθμολογείται είναι course0

Link to comment
Share on other sites

Πως είναι δυνατόν να σου δίνει κάποιος εργασία σε γλώσσα προγραμματισμού που δεν έχεις διδαχθεί και δεν έχεις τα κατάλληλα εργαλεία για edit/compile ;

Η εργασία αυτή είναι για κάποιον που έχει κάνει χοντρικά 10 ώρες πάνω στη γλώσσα και γνωρίζει τουλάχιστον τα βασικά (εντολές, arrays, build, κλπ)

Link to comment
Share on other sites

Ναι δυστυχώς  μου έδωσε αυτή την εργασία και ένα βιβλιο.Με το βιβλίο δεν βγάζω άκρη, δεν έχει πολλά παραδείγματα. Γι’αυτο και δεν ξέρω πώς να την αρχίσω, Διάβασα πολλά παραδείγματα από αλλά βιβλία και πάλι δεν βγάζω άκρη .

Link to comment
Share on other sites

Είναι C#.Μπορει καποιος να μου δωσει μερικες οδηγιες για το πώς να την λυσω.Απο διαφορα βιβλια που διαβασα και sites με εργασιες εχω κανει αυτό :

namespace project1{var minvar maxvar average    public class project    {        public int students { get; set; }        public int grades { get; set; }        public int courses { get; set; }        public int results{ get; set; }    }    string students(int count)    {        if (count == 0) return "";        string st = "*";        for (int i = 1; i < count; i++)        {            st += " *";        }        return st;    }    class Program    {        public static void Main(string[] args)        {// arrayint[] students = new students [18]; int[] courses = new courses [18];            for (int i = 0; i <= 2; i++)            {                Console.Write("enter grades for studnet and courses ");// 18 times the same                students[18] = Console.ReadLine();                Console.Write("student {1}, enter ", student[5]);                courses[3] = Convert.ToInt32(Console.ReadLine());                courses[3] = Console.ReadLine();                Console.Write("courses {2}, enter ", courses[3]);                courses [3] = Convert.ToInt32(Console.ReadLine());            }            // Print the array data to the screen            for (int i = 0; i <= 2; i++)            {                Console.WriteLine(students[18] + " : " + courses[3]);            }            //elements            int[] studnets = new students[6];            {                new students() { stud = 0, studentName = "stud0", courseName = 1 },           new students() { stud = 1, studentName = "stud1", courseName = 2 },           new students() { stud = 2, studentName = "stud2", courseName = 3 },           new students() { stud = 3, studentName = "stud3", courseName = 4 },           new students() { stud = 4, studentName = "stud4", courseName = 5 },           new students() { stud = 5, studentName = "stud5", courseName = 6 },           Random students = new student();                for (int j = 0; j < 17; j++)                    grades[j] = grade.Next(0, 5);                foreach (int student in array)                    studnet += grades;            };            int[] courses = new courses[3];            {                new courses() { course0, coursename = "course0", coursename = 1 },           new courses() { course1, coursename = "course1", coursename = 2 },             new courses() { course2, coursename = "course2", coursename = 3 },            new courses() { course3, coursename = "course3", coursename = 4 }, Random courses = new courses();                for (int j = 0; j < 17; j++)                    grades[j] = grade.Next(0, 3);                foreach (int courses in array)                    studnet += courses;            };            int[] grades = new grades[18];            {                new grades() { grades1, gradesname = "1", gradesname = 1 },          new grades() { grades2, gradesname = "2", gradesname = 2 },          new grades() { grades3, gradesname = "3", gradesname = 3 },          new grades() { grades4, gradesname = "4", gradesname = 4 },          new grades() { grades5, gradesname = "5", gradesname = 5 },          new grades() { grades6, gradesname = "6", gradesname = 6 },          new grades() { grades7, gradesname = "7", gradesname = 7 },          new grades() { grades8, gradesname = "8", gradesname = 8 },          new grades() { grades9, gradesname = "9", gradesname = 9 },          new grades() { grades10, gradesname = "10", gradesname = 10 },           new grades() { grades11, gradesname = "11", gradesname = 11 },          new grades() { grades12, gradesname = "12", gradesname = 12 },          new grades() { grades13, gradesname = "13", gradesname = 13 },          new grades() { grades14, gradesname = "14", gradesname = 14 },          new grades() { grades15, gradesname = "15", gradesname = 15 },          new grades() { grades16, gradesname = "16", gradesname = 16 },           new grades() { grades17, gradesname = "17", gradesname = 17 },new grades() { grades18, gradesname = "18", gradesname = 18 },Random grades = new grades();                for (int j = 0; j < 17; j++)                    grades[j] = grades.Next(0, 3);                foreach (int grades in array)                    studnet += grades;            };            int[] results = new results[18];            {                new results() { results1...18, resultsname = "fail,pass", resultname = 1..18 }           foreach (int results in array)                    studnet += results;            }        }// Print the array data to the screenfor (int i = 0; i <= 2; i++){Console.WriteLine(student[18] + " : " + course[3]);}    max[] grade = new max[2]; //maximum    max total; //Will be used to add up all the grades    max average; //will be used to divide total by the number of grades    Console.WriteLine("The average of three grades application");for (int i = 0; i< 3; i++){Console.Write("Enter in a grade ");grade[18] = Convert.ToDouble(Console.ReadLine());}total = grade[0] + grade[1] + grade[2];average = total / 3;Console.WriteLine("Your average grade is " + average);max[] grade = new max[2]; //maximumstring exitmax = "0"; // exit while loopint i = 0;max average = 0; // +=string input;int coursesofgrades;while (exitmax != "exit") {Console.Write("Enter  or push exit  to quit. ");input = Console.ReadLine();if (input != "exit"){grade[18] = Convert.ToDouble (input);i++;Array.Resize(ref grade, i + 1);} else{exitmax = "exit";}}foreach (max courses in grade){average += courses;}coursesofgrades = grades.Length - 1;max/= coursesofgrades;Console.WriteLine("There were " + coursesofgrades + " max " + average);                          //Read and show the array's elements            for (int j = 0; j< 17; j++)                Console.WriteLine("Students {0} and courses: {0} : {17} ", j , student[j], students(student[j]));// Print the array  to the screenConsole.WriteLine("stud0[0] + " : " + course0[0]");Console.WriteLine("stud0[1] + " : " + course0[1]);Console.WriteLine(stud0[2] + " : " + course0[2]);Console.WriteLine(stud1[3] + " : " + course1[3]);Console.WriteLine(stud1[4] + " : " + course1[4]);Console.WriteLine(stud1[5] + " : " + course1[5]);Console.WriteLine(stud2[6] + " : " + course2[6]);Console.WriteLine(stud2[7] + " : " + course2[7]);Console.WriteLine(stud2[8] + " : " + course2[8]);Console.WriteLine(stud3[9] + " : " + course3[9]);Console.WriteLine(stud3[10] + " : " + course3[10]);Console.WriteLine(stud3[11] + " : " + course3[11]);Console.WriteLine(stud4[12] + " : " + course4[12]);Console.WriteLine(stud4[13] + " : " + course4[13]);Console.WriteLine(stud4[14] + " : " + course4[14]);Console.WriteLine(stud5[15] + " : " + course5[15]);Console.WriteLine(stud5[16] + " : " + course5[16]);Console.WriteLine(stud5[17] + " : " + course5[17]);      }}    }    }    }
Link to comment
Share on other sites

Είναι C#.Μπορει καποιος να μου δωσει μερικες οδηγιες για το πώς να την λυσω.Απο διαφορα βιβλια που διαβασα και sites με εργασιες εχω κανει αυτό :

Το γενικό σκεπτικό, με μια πρόχειρη ματιά είναι σωστό.

Όμως για να τρέξεις τον κώδικα βήμα-βήμα, πρέπει να έχεις κάποιο εργαλείο για debug. Έχεις εγκαταστήσει το Visual Studio πχ; Αν όχι, υπάρχει δωρεάν έκδοση που μπορείς να κατεβάσεις.

  • Like 1
Link to comment
Share on other sites

Θα πρέπει να χρησιμοποιήσετε 4 συστοιχίες των 6 στοιχείων για να αποθηκεύσετε τα ονόματα των μαθητών και των βαθμών μαθημάτων

 

Συστοιχίες = arrays δηλαδή πίνακες ή λίστες ?

Link to comment
Share on other sites

Ναι το έχω εγκαταστήσει το visual studio.Αλλά ο κώδικας δεν τρέχει. Δείχνει  όλο το κώδικα  με  κοκκινίλες και δεν μπορώ να καταλάβω που είναι το λάθος για να τα διορθώσω.

 

Συστοιχίες ειναι  arrays δηλαδή πίνακες.

Έγινε επεξεργασία από sssasassas
Link to comment
Share on other sites

Απο την αρχη λοιπόν

string[] studentNames = new string[6];int[] course0Grades = new int[6];int[] course1Grades = new int[6];int[] course2Grades = new int[6];//input gradesfor (int i = 0; i < 6; i++){  string studentName = string.Format("stud{0}", i);  studentNames[i] = studentName;  for (int j = 0; j < 3; j++)  {    string courseName = string.Format("course{0}", j);    Console.WriteLine("Eισάγετε βαθμό για τον μαθητή {0} και μάθημα {1}",studentName,courseName);    if(j == 0)    {      course0Grades[i] = int.Parse(Console.ReadLine());    }    else if(j == 1)    {      course1Grades[i] = int.Parse(Console.ReadLine());    }    else    {      course2Grades[i] = int.Parse(Console.ReadLine());    }  }}for (int i = 0;i < 6; i++){  Console.WriteLine("Student {0} Grades: Course0={1}  Course1={2}  Course2={3}", studentNames[i], course0Grades[i], course1Grades[i], course2Grades[i]);}

studentNames  πίνακας απο strings για τα ονόματα των students

course0Grades πίνακας από ints για τους βαθμούς για το course0

course1Grades πίνακας από ints για τους βαθμούς για το course1

course2Grades πίνακας από ints για τους βαθμούς για το course2

 

Το όνομα του κάθε μαθητή βρίσκεται στο αντίστοιχο index του studentNames πχ studentNames[1] το όνομα του stud1

To ίδιο ισχύει και για τους βαθμούς

πχ για τον stud1 οι βαθμοί του είναι

για το course0 είναι στην course0Grades[1],

για το course1 είναι στην course1Grades[1],

για το course2 είναι στην course2Grades[1]

 

Έτσι πρέπει να είναι αποθηκευμένα? Δοκίμασε μια τον παραπάνω κώδικα για να δεις τα δεδομένα

Έγινε επεξεργασία από nucleus
  • Like 1
Link to comment
Share on other sites

Ναι τρεχει ο κωδικας.Ευχαριστω πολύ.

 

 

using System;

namespace project1

{

 

    public class project

    {

        public int students { get; set; }

        public int grades { get; set; }

 

        public int courses { get; set; }

 

        public int results { get; set; }

 

 

    }

 

    class Program

    {

        public static void Main(string[] args)

        {

 

 

            //array

            string[] studentNames = new string[6];

            int[] course0Grades = new int[6];

            int[] course1Grades = new int[6];

            int[] course2Grades = new int[6];

 

            //input grades

            for (int i = 0; i < 6; i++)

            {

                string studentName = string.Format("stud{0}", i);

                studentNames = studentName;

                for (int j = 0; j < 3; j++)

                {

                    string courseName = string.Format("course{0}", j);

                    Console.WriteLine("Eισάγετε βαθμό για τον μαθητή {0} και μάθημα {1}", studentName, courseName);

                    if (j == 0)

                    {

                        course0Grades = int.Parse(Console.ReadLine());

                    }

                    else if (j == 1)

                    {

                        course1Grades = int.Parse(Console.ReadLine());

                    }

                    else

                    {

                        course2Grades = int.Parse(Console.ReadLine());

                    }

                }

            }

        }

    }

}

 

Μόνο αυτά μένουν .Και εδώ χαμός γίνεται από τα λάθη

 

 

Στατιστικά αποτέλεσμα

Μετά την ολοκλήρωση της εισαγωγής των στοιχείων τα ακόλουθα αποτελέσματα θα παραχθεί και θα εκτυπωθεί στην κονσόλα

1. Ελάχιστη - Μέγιστη βαθμολογία των φοιτητών (που θα δείξει ο μαθητής που πήρε το ελάχιστο βαθμό και ο μαθητής που πήρε τη μέγιστη βαθμολογία)

2. Ελάχιστη - Μέγιστη μέσος μαθητής (που θα δείξει ο φοιτητής που πέτυχαν το ελάχιστο μέσο όρο βαθμολογίας των τριών μαθημάτων και ο μαθητής που επιτευχθεί η μέγιστη μέση βαθμολογία για τα τρία μαθήματα)

3. Ελάχιστη - Μέγιστη Βαθμός μαθήματος (θα δείξει την πορεία που δήλωσε το ελάχιστο βαθμό και την πορεία που δήλωσε τη μέγιστη βαθμολογία για αυτό το εξάμηνο)

4. Ελάχιστη - Μέγιστη μέση πορεία (θα δείξει την πορεία με το ελάχιστο μέσο όρο βαθμολογίας και την πορεία με το μέγιστο μέσο όρο βαθμολογίας)

 

Η έξοδος του προγράμματος θα είναι κάτι σαν αυτό

 

Φοιτητής που πέτυχε τη μέγιστη βαθμολογία είναι stud2

Φοιτητής που πέτυχε το λεπτό βαθμός είναι stud3

Φοιτητής που πέτυχε τη μέγιστη μέση τιμή είναι stud2

Φοιτητής που πέτυχε ο μέσος min είναι stud3

Η πορεία στην οποία η μέγιστη βαθμού γκολ είναι course2

Η πορεία στην οποία το λεπτό βαθμού γκολ είναι course1

Η πορεία στην οποία η μέγιστη μέση βαθμού γκολ είναι course2

 

Η πορεία στην οποία ο μέσος βαθμός λεπτά βαθμολογείται είναι course0

Link to comment
Share on other sites

Για να βρεις την ελάχιστη και την μέγιστη βαθμολογία που έχουν όλοι οι μαθητές πρέπει να δεις με την σειρά τις τιμές των arrays  course0Grades,course1Grades,course2Grades και να κρατήσεις το index που έχει η ελάχιστη και η μέγιστη βαθμολογία.

 

            int minGrade = 0;            int minGradeIndex = 0;            int maxGrade = 0;            int maxGradeIndex = 0;            //course0Grades            for (int i = 0; i < course0Grades.Length; i++)            {                int currentGrade = course0Grades[i];                if(currentGrade < minGrade)                {                    minGrade = currentGrade;                    minGradeIndex = i;                }                if(currentGrade > maxGrade)                {                    maxGrade = currentGrade;                    maxGradeIndex = i;                }            }            //course0Grades            for (int i = 0; i < course1Grades.Length; i++)            {                int currentGrade = course1Grades[i];                if (currentGrade < minGrade)                {                    minGrade = currentGrade;                    minGradeIndex = i;                }                if (currentGrade > maxGrade)                {                    maxGrade = currentGrade;                    maxGradeIndex = i;                }            }            //course2Grades            for (int i = 0; i < course2Grades.Length; i++)            {                int currentGrade = course2Grades[i];                if (currentGrade < minGrade)                {                    minGrade = currentGrade;                    minGradeIndex = i;                }                if (currentGrade > maxGrade)                {                    maxGrade = currentGrade;                    maxGradeIndex = i;                }            }            Console.WriteLine("min Grade Student name = {0}", studentNames[minGradeIndex]);            Console.WriteLine("max Grade Student name = {0}", studentNames[maxGradeIndex]);


 
Αρχικά ορίζουμε 4 μεταβλητές.
minGrade         ελάχιστη βαθμολογία
minGradeIndex θέση της ελάχιστης βαθμολογίας στον πίνακα που βρέθηκε
maxGrade         μέγιστη βαθμολογία
maxGradeIndex θέση της μέγιστης βαθμολογίας στον πίνακα που βρέθηκε
 
Μετά για κάθε πίνακα με τους βαθμούς
 

            for (int i = 0; i < course0Grades.Length; i++)            {                int currentGrade = course0Grades[i];                if(currentGrade < minGrade)                {                    minGrade = currentGrade;                    minGradeIndex = i;                }                if(currentGrade > maxGrade)                {                    maxGrade = currentGrade;                    maxGradeIndex = i;                }            }

currentGrade βαθμός που ελέγχουμε. Αν ο βαθμός που ελέγχουμε είναι μικρότερος από την ελάχιστη βαθμολογία που έχουμε βρει μέχρι τότε κάνουμε αυτή την βαθμολογία την νέα ελάχιστη αποθηκεύοντας και την θέση που την βρήκαμε. Αν είναι μεγαλύτερος από την μέγιστη βαθμολογία που έχουμε βρει μέχρι τότε την αποθηκεύουμε σαν νέα μέγιστη βαθμολογία. Στο τέλος αφού έχουμε ελέγξει και τους τρεις πίνακες χρησιμοποιούμε τις μεταβλητές minGradeIndex και maxGradeIndex για να εκτυπώσουμε τα ονόματα των students.
 

            Console.WriteLine("min Grade Student name = {0}", studentNames[minGradeIndex]);            Console.WriteLine("max Grade Student name = {0}", studentNames[maxGradeIndex]);

Οπότε λύσαμε το 1 νομίζω. Με μια μικρή αλλαγή στο παραπάνω μπορείς να λύσεις και το 3. Αν βάλεις 2 ακόμα μεταβλητές που κρατάνε και το όνομα του course που βρέθηκε η μικρότερη και η μεγαλύτερη βαθμολογία. Και όταν είναι να αλλάξεις την ελάχιστη και την μέγιστη βαθμολογία αλλάζεις και αυτές τις 2 μεταβλητές.
 
Για το 2. Σκέψου ότι οι βαθμολογίες του κάθε μαθητή βρίσκονται στην ίδια θέση των πινάκων course0Grades,course1Grades,course2Grades. Δηλαδή οι βαθμολογίες του stud0 βρίσκονται ως εξής course0Grades[0],course1Grades[0],course2Grades[0] για να βρεις τον μέσο όρο του stud0 απλώς προσθέτεις τις βαθμολογίες του και διαιρείς με το 3 μιας και έχεις τρία μαθήματα.
 
 

                        double minAverageGrade = 0;            int minAverageGradeIndex = 0;            double maxAverageGrade = 0;            int maxAverageGradeIndex = 0;            for (int i = 0; i < 6; i++)            {                double currentAverage = (course0Grades[i] + course1Grades[i] + course2Grades[i])/3;                if(currentAverage < minAverageGrade)                {                    minAverageGrade = currentAverage;                    minAverageGradeIndex = i;                }                if (currentAverage > maxAverageGrade)                {                    maxAverageGrade = currentAverage;                    maxAverageGradeIndex = i;                }            }            Console.WriteLine("min average Grade Student name = {0}", studentNames[minAverageGradeIndex]);            Console.WriteLine("max average Grade Student name = {0}", studentNames[maxAverageGradeIndex]);

 

Για να βρεις τον ελάχιστο και την μέγιστο μέσο όρο βαθμολογίας ακολουθούμε την ίδια διαδικασία όπως και πριν.

 

Για το 4. πρέπει απλώς να βρεις τον μέσο όρο όλων των βαθμολογιών για κάθε μάθημα ως εξής πχ για το course0

double course0Average = (course0Grades[0] + course0Grades[1] + course0Grades[2] +course0Grades[3] + course0Grades[4] + course0Grades[5]) / 6

Μετά απλώς πρέπει να βρεις ποιός μέσος όρος βαθμολογίας είναι ο μεγαλύτερος και ο μικρότερος.

 

  • Like 2
Link to comment
Share on other sites

Ευχαριστώ πολύ, ναι τρέχει ο κώδικας .Θέλω να δοκιμάσω κάτι  άλλο με την ίδια σκεπτική για την ίδια εργασία. Με την μόνη διάφορα να χρησιμοποιήσω structs αντί παράλληλες arrays.Θέλοντας να δημιουργήσω ένα struct  για να αντιπροσωπεύουν ένα μαθητή. Χρησιμοποίησα   αυτό το struct για  να δημιουργηθούν όλοι  οι  άλλοι μαθητές σε μια σειρά  του array για να τους κρατήσει.O  κώδικας τρέχει αλλά είναι σωστό σαν σκέψη αυτός ο κώδικας. Έτσι πρέπει να τρέχει ή υπάρχει άλλος τρόπος;

 

using System;
namespace project1
{
 
    public class project
    {
        public int students { get; set; }
        public int grades { get; set; }
 
        public int courses { get; set; }
 
        public int results { get; set; }
 
    }
    struct student
    {
        public int students;
        public String studentName, courseName;
    }
    class Program
    {
 
        private static int currentcourseAverage;
        private static int mincourseAverageGrade;
        public static void Main(string[] args)
        {
            //array
            string[] studentNames = new string[6];
            int[] course0Grades = new int[6];
            int[] course1Grades = new int[6];
            int[] course2Grades = new int[6];
            student[] arr = new student[6];
            //input grades
            for (int i = 0; i < 6; i++)
            {
                string studentName = string.Format("stud{0}", i);
                studentNames = studentName;
                for (int j = 0; j < 3; j++)
                {
                    string courseName = string.Format("course{0}", j);
                    Console.WriteLine("Eισάγετε βαθμό για τον μαθητή {0} και μάθημα {1}", studentName, courseName);
                    if (j == 0)
                    {
                        course0Grades = int.Parse(Console.ReadLine());
                    }
                    else if (j == 1)
                    {
                        course1Grades = int.Parse(Console.ReadLine());
                    }
                    else
                    {
                        course2Grades = int.Parse(Console.ReadLine());
                    }
 
                    {
                        Console.WriteLine("Please enter StudentName, CourseName");
                        arr.students = Int32.Parse(Console.ReadLine());
                        arr.studentName = Console.ReadLine();
                        arr.courseName = Console.ReadLine();
                    }
 
                }
            }
 
            double courseAverageGrade = 0;
            int mincourseAverageGradeIndex = 0;
            double maxcourseAverageGrade = 0;
            int maxcourseAverageGradeIndex = 0;
 
 
            for (int i = 0; i < 6; i++)
            {
                double currentAverage = (course0Grades[0] + course0Grades[1] + course0Grades[2] + course0Grades[3] + course0Grades[4] + course0Grades[5]) / 6;
                if (currentcourseAverage < mincourseAverageGrade)
                {
                    mincourseAverageGrade = currentcourseAverage;
                    mincourseAverageGradeIndex = i;
                }
                if (currentcourseAverage > maxcourseAverageGrade)
                {
                    maxcourseAverageGrade = currentcourseAverage;
                    maxcourseAverageGradeIndex = i;
                }
            }
 
            Console.WriteLine("min course average Grade Student name = {0}", studentNames[mincourseAverageGradeIndex]);
            Console.WriteLine("max course average Grade Student name = {0}", studentNames[maxcourseAverageGradeIndex]);
 
        }
    }
}
Link to comment
Share on other sites

Είναι C# τι structs ? η C# είναι αντικειμενοστρεφής (object oriented) :S Αν είναι να το κάνεις με κάποιο άλλο τρόπο χωρίς arrays θα το κάνεις με classes (objects) και λίστες.

    public class StudentCourse    {        public string CourseName { get; set; }        public int Grade { get; set; }    }
    public class Student    {        public Student()        {            StudentCourses = new List<StudentCourse>();        }        public string StudentName { get; set; }        public IList<StudentCourse> StudentCourses { get; set; }    }

To πρώτο class είναι το Course. Έχει 2 properties το όνομα του και τον βαθμό, CourseName και Grade αντίστοιχα.

 

Το δεύτερο class είναι το Student. Έχει επίσης 2 properties. StudentName το όνομα του μαθητή και το StudentCourses. Το StudentCourses είναι μια λίστα από StudentCourse και περιέχει τα μαθήματα και τους βαθμούς του μαθητή, το αρχικοποιείς στον constructor του Student.

 

Με βάση τα παραπάνω μέσα στην main σου αρχικά ορίζεις μια λίστα από Student αντικείμενα (οι μαθητές σου) και μετά βάζεις τους βαθμούς

 

O κώδικας της main ενδεικτικά

              IList<Student> students = new List<Student>();            //make the students            for (int i = 0; i < 6; i++)            {                string studentName = string.Format("stud{0}", i);                Student newStudent = new Student()                {                    StudentName = studentName                };                for (int j = 0; j < 3; j++)                {                    string courseName = string.Format("course{0}", j);                    Console.WriteLine("Eισάγετε βαθμό για τον μαθητή {0} και μάθημα {1}",studentName,courseName);                    StudentCourse newCourse = new StudentCourse()                    {                        CourseName = courseName,                        Grade = int.Parse(Console.ReadLine())                    };                    newStudent.StudentCourses.Add(newCourse);                }                students.Add(newStudent);            }            //Debug            foreach (var student in students)            {                Console.WriteLine("Student {0} Grades:", student.StudentName);                foreach (var course in student.StudentCourses)                {                    Console.WriteLine("{0} = {1}", course.CourseName,course.Grade);                }            }

Μπορείς να το κάνεις ακόμα καλύτερο προσθέτωντας properties στα δύο classes Student και StudentCourse. πχ μπορείς να προστέσεις τον μέσο όρο βαθμολογίας σαν property στο class Student και μόλις τελειώσει την εισαγωγή των βαθμών των μαθημάτων που του αντιστοιχούν πριν το προστέσει στην λίστα students και πάει στον επόμενο να υπολογίσει τον μέσο όρο και να το βάλει στο κατάλληλο property

 public class Student    {        public Student()        {            StudentCourses = new List<StudentCourse>();        }        public string StudentName { get; set; }        public IList<StudentCourse> StudentCourses { get; set; }        public double GradeAverage { get; set; }    }

Και ο κώδικας για την main αλλάζει ως εξής

            IList<Student> students = new List<Student>();            //make the students            for (int i = 0; i < 6; i++)            {                string studentName = string.Format("stud{0}", i);                Student newStudent = new Student()                {                    StudentName = studentName                };                for (int j = 0; j < 3; j++)                {                    string courseName = string.Format("course{0}", j);                    Console.WriteLine("Eισάγετε βαθμό για τον μαθητή {0} και μάθημα {1}",studentName,courseName);                    StudentCourse newCourse = new StudentCourse()                    {                        CourseName = courseName,                        Grade = int.Parse(Console.ReadLine())                    };                    newStudent.StudentCourses.Add(newCourse);                }                double gradeSum = 0;                foreach (var course in newStudent.StudentCourses)                {                    gradeSum = gradeSum + course.Grade;                }                newStudent.GradeAverage = gradeSum / newStudent.StudentCourses.Count;                students.Add(newStudent);            }            //Debug            foreach (var student in students)            {                Console.WriteLine("Student {0} Grades:", student.StudentName);                foreach (var course in student.StudentCourses)                {                    Console.WriteLine("{0} = {1}", course.CourseName,course.Grade);                }                Console.WriteLine("Grade Average = {0}", student.GradeAverage);            }

Θα μπορούσες να γλυτώσεις αρκετά foreach χρησιμοποιώντας Linq αλλά αυτό είναι αρκετά προχωρημένο οπότε foreach και μόνο.

Έγινε επεξεργασία από nucleus
  • Like 2
Link to comment
Share on other sites

  • 2 weeks later...

 

Πως μπορώ να χρησιμοποιήσω τις λίστες δημιουργώντας  πρώτα απ 'όλα ένα class να εκπροσωπεί «student». Επίσης δημιουργώντας  τις αναγκαίες μεθόδους ώστε να διαβάζει  και να δείχνει τις βαθμολογίες. Χρησιμοποιώντας  τη λίστα <student> για να κρατήσει τους μαθητές τις  πληροφορίες,Με  αυτό το τρόπο χρησιμοποιείται η ίδια  list για να δείξει όλα τα αποτελέσματα .???

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.