sssasassas Δημοσιεύτηκε Ιανουάριος 20, 2016 #1 Κοινοποίηση Δημοσιεύτηκε Ιανουάριος 20, 2016 Δεν ξέρω καθόλου 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 More sharing options...
Wizard! Ιανουάριος 20, 2016 #2 Κοινοποίηση Ιανουάριος 20, 2016 Πως είναι δυνατόν να σου δίνει κάποιος εργασία σε γλώσσα προγραμματισμού που δεν έχεις διδαχθεί και δεν έχεις τα κατάλληλα εργαλεία για edit/compile ;Η εργασία αυτή είναι για κάποιον που έχει κάνει χοντρικά 10 ώρες πάνω στη γλώσσα και γνωρίζει τουλάχιστον τα βασικά (εντολές, arrays, build, κλπ) Link to comment Share on other sites More sharing options...
sssasassas Ιανουάριος 20, 2016 Author #3 Κοινοποίηση Ιανουάριος 20, 2016 Ναι δυστυχώς μου έδωσε αυτή την εργασία και ένα βιβλιο.Με το βιβλίο δεν βγάζω άκρη, δεν έχει πολλά παραδείγματα. Γι’αυτο και δεν ξέρω πώς να την αρχίσω, Διάβασα πολλά παραδείγματα από αλλά βιβλία και πάλι δεν βγάζω άκρη . Link to comment Share on other sites More sharing options...
deninho Ιανουάριος 20, 2016 #4 Κοινοποίηση Ιανουάριος 20, 2016 (edited) ποια σχολή είναι; τι μάθημα; εδιτ: και ποιο βιβλίο; Έγινε επεξεργασία Ιανουάριος 20, 2016 από deninho 1 Link to comment Share on other sites More sharing options...
sssasassas Ιανουάριος 20, 2016 Author #5 Κοινοποίηση Ιανουάριος 20, 2016 Είναι 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 More sharing options...
Wizard! Ιανουάριος 20, 2016 #6 Κοινοποίηση Ιανουάριος 20, 2016 Είναι C#.Μπορει καποιος να μου δωσει μερικες οδηγιες για το πώς να την λυσω.Απο διαφορα βιβλια που διαβασα και sites με εργασιες εχω κανει αυτό :Το γενικό σκεπτικό, με μια πρόχειρη ματιά είναι σωστό. Όμως για να τρέξεις τον κώδικα βήμα-βήμα, πρέπει να έχεις κάποιο εργαλείο για debug. Έχεις εγκαταστήσει το Visual Studio πχ; Αν όχι, υπάρχει δωρεάν έκδοση που μπορείς να κατεβάσεις. 1 Link to comment Share on other sites More sharing options...
unseen Ιανουάριος 20, 2016 #7 Κοινοποίηση Ιανουάριος 20, 2016 αυτο ηταν το πρωτο βιβλιο που διαβασα για c# Εχει και ενα παρομοιο παραδειγμα σε κονσολα με εισαγωγη δεδομενων 1 Link to comment Share on other sites More sharing options...
nucleus Ιανουάριος 20, 2016 #8 Κοινοποίηση Ιανουάριος 20, 2016 Θα πρέπει να χρησιμοποιήσετε 4 συστοιχίες των 6 στοιχείων για να αποθηκεύσετε τα ονόματα των μαθητών και των βαθμών μαθημάτων Συστοιχίες = arrays δηλαδή πίνακες ή λίστες ? Link to comment Share on other sites More sharing options...
sssasassas Ιανουάριος 20, 2016 Author #9 Κοινοποίηση Ιανουάριος 20, 2016 (edited) Ναι το έχω εγκαταστήσει το visual studio.Αλλά ο κώδικας δεν τρέχει. Δείχνει όλο το κώδικα με κοκκινίλες και δεν μπορώ να καταλάβω που είναι το λάθος για να τα διορθώσω. Συστοιχίες ειναι arrays δηλαδή πίνακες. Έγινε επεξεργασία Ιανουάριος 20, 2016 από sssasassas Link to comment Share on other sites More sharing options...
nucleus Ιανουάριος 20, 2016 #10 Κοινοποίηση Ιανουάριος 20, 2016 (edited) Απο την αρχη λοιπόν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 για τα ονόματα των studentscourse0Grades πίνακας από ints για τους βαθμούς για το course0course1Grades πίνακας από ints για τους βαθμούς για το course1course2Grades πίνακας από ints για τους βαθμούς για το course2 Το όνομα του κάθε μαθητή βρίσκεται στο αντίστοιχο index του studentNames πχ studentNames[1] το όνομα του stud1To ίδιο ισχύει και για τους βαθμούςπχ για τον stud1 οι βαθμοί του είναιγια το course0 είναι στην course0Grades[1],για το course1 είναι στην course1Grades[1],για το course2 είναι στην course2Grades[1] Έτσι πρέπει να είναι αποθηκευμένα? Δοκίμασε μια τον παραπάνω κώδικα για να δεις τα δεδομένα Έγινε επεξεργασία Ιανουάριος 20, 2016 από nucleus 1 Link to comment Share on other sites More sharing options...
sssasassas Ιανουάριος 21, 2016 Author #11 Κοινοποίηση Ιανουάριος 21, 2016 Ναι τρεχει ο κωδικας.Ευχαριστω πολύ. 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 More sharing options...
sssasassas Ιανουάριος 21, 2016 Author #12 Κοινοποίηση Ιανουάριος 21, 2016 (edited) ..... Έγινε επεξεργασία Ιανουάριος 21, 2016 από sssasassas Link to comment Share on other sites More sharing options...
nucleus Ιανουάριος 21, 2016 #13 Κοινοποίηση Ιανουάριος 21, 2016 Για να βρεις την ελάχιστη και την μέγιστη βαθμολογία που έχουν όλοι οι μαθητές πρέπει να δεις με την σειρά τις τιμές των 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. πρέπει απλώς να βρεις τον μέσο όρο όλων των βαθμολογιών για κάθε μάθημα ως εξής πχ για το course0double course0Average = (course0Grades[0] + course0Grades[1] + course0Grades[2] +course0Grades[3] + course0Grades[4] + course0Grades[5]) / 6Μετά απλώς πρέπει να βρεις ποιός μέσος όρος βαθμολογίας είναι ο μεγαλύτερος και ο μικρότερος. 2 Link to comment Share on other sites More sharing options...
sssasassas Ιανουάριος 22, 2016 Author #14 Κοινοποίηση Ιανουάριος 22, 2016 Ευχαριστώ πολύ, ναι τρέχει ο κώδικας .Θέλω να δοκιμάσω κάτι άλλο με την ίδια σκεπτική για την ίδια εργασία. Με την μόνη διάφορα να χρησιμοποιήσω 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 More sharing options...
nucleus Ιανουάριος 22, 2016 #15 Κοινοποίηση Ιανουάριος 22, 2016 (edited) Είναι 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 και μόνο. Έγινε επεξεργασία Ιανουάριος 22, 2016 από nucleus 2 Link to comment Share on other sites More sharing options...
sssasassas Ιανουάριος 31, 2016 Author #16 Κοινοποίηση Ιανουάριος 31, 2016 Πως μπορώ να χρησιμοποιήσω τις λίστες δημιουργώντας πρώτα απ 'όλα ένα class να εκπροσωπεί «student». Επίσης δημιουργώντας τις αναγκαίες μεθόδους ώστε να διαβάζει και να δείχνει τις βαθμολογίες. Χρησιμοποιώντας τη λίστα <student> για να κρατήσει τους μαθητές τις πληροφορίες,Με αυτό το τρόπο χρησιμοποιείται η ίδια list για να δείξει όλα τα αποτελέσματα .??? Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now