Выведите позицию массива C#
у меня возникла проблема с отображением правильного вывода для массива .... Это мой основной класс, использующий систему;
мне нужно, чтобы он хранил массив[индекс] по неправильным вопросам, а затем выводил каждый вопрос.... Пожалуйста, дайте мне знать, если мне нужно отредактировать этот вопрос или быть более глубоким в моей информации
private const string STR_RESOURCE_PATH = @"Resources\\"; static void Main(string[] args) { MultipleChoiceQuestion[] questionList = new MultipleChoiceQuestion[30]; int option; int correct = 0; int incorrect = 0; int index = 0; do { DisplayMenuOptions(); option = Valid.GetValidInteger("\nOption?", 0, 8); switch (option) { case 1: CreateNewQuestion(ref questionList); break; case 2: DisplayAllQuestions(ref questionList); break; case 3: EditQuestions(ref questionList); break; case 4: DeleteQuestion(ref questionList); break; case 5: ImportQuiz(ref questionList); break; case 6: ExportQuiz(ref questionList); break; case 7: TakeQuiz(ref questionList, ref correct, ref incorrect); break; case 8: MarkQuiz(ref questionList, ref correct, ref incorrect); break; } } while (option != 0); Console.ReadLine(); } private static void DisplayMenuOptions() { Console.WriteLine("Multiple Choice Exam"); Console.WriteLine("----------------------"); Console.WriteLine("Please enter: "); Console.WriteLine(" 1 - to create a new question"); Console.WriteLine(" 2 - to display all questions"); Console.WriteLine(" 3 - to edit question"); Console.WriteLine(" 4 - to delete question"); Console.WriteLine(" 5 - to import questions for a file"); Console.WriteLine(" 6 - to export questions to a file"); Console.WriteLine(" 7 - to start exam"); Console.WriteLine(" 8 - to mark exam"); Console.WriteLine(" 0 - to exit program"); } public static int GetNextArrayIndex(ref MultipleChoiceQuestion[] questionList) { int index = -1; for (int i = 0; i < questionList.Length; i++) { if (questionList[i] == null) { index = i; break; } } return index; } private static void CreateNewQuestion(ref MultipleChoiceQuestion[] questionList) { ; string question; string choice1; string choice2; string choice3; string choice4; char correctChoice; int index = GetNextArrayIndex(ref questionList); Console.WriteLine("Multiple Choice Exam - New Question"); Console.WriteLine("--------------------------------------"); Console.WriteLine("There are currently {0} questions in the exam.", index); if (index != -1) { Console.Write("Enter question: "); question = Console.ReadLine(); Console.Write("Enter Choice 1 for the question: "); choice1 = Console.ReadLine(); Console.Write("Enter Choice 2 for the question: "); choice2 = Console.ReadLine(); Console.Write("Enter Choice 3 for the question: "); choice3 = Console.ReadLine(); Console.Write("Enter Choice 4 for the question: "); choice4 = Console.ReadLine(); do { Console.Write("Enter the correct choice: (A, B, C or D): "); correctChoice = char.Parse(Console.ReadLine().ToUpper()); if (correctChoice == 'A' || correctChoice == 'B' || correctChoice == 'C' || correctChoice == 'D') { questionList[index] = new MultipleChoiceQuestion(question, choice1, choice2, choice3, choice4, correctChoice); Console.WriteLine("Successfully added question {0} to the exam\n", index); } else { Console.WriteLine("Sorry invalid input."); } } while (correctChoice != 'A' && correctChoice != 'B' && correctChoice != 'C' && correctChoice != 'D'); Console.WriteLine("Press any key to continue"); } } public static char TakeQuiz(ref MultipleChoiceQuestion[] questionList, ref int correct, ref int incorrect) { char answers = 'w'; //so the computer will not allow use to input a w int index = GetNextArrayIndex(ref questionList); for (int i = 0; i < questionList.Length; i++) { if (questionList[i] != null) { questionList[i].DisplayQuestion(); Console.Write("\nYour anwser (A,B,C,D): "); answers = char.Parse(Console.ReadLine().ToUpper());//Stores users answers to that question if (answers == 'A' || answers == 'B' || answers == 'C' || answers == 'D')//If these values are entered than will run next if else { if (answers == questionList[i].correctChoice)//If the user enters a value that matches its correct answers it will store in correct { correct++; } else { index = i; questionList[incorrect].question += index; incorrect++; if (questionList[index] == null) { for (int p = index; p < questionList.Length; p++) { if (i + 1 < questionList.Length) { questionList[i] = questionList[i + 1]; } } } } } else { Console.WriteLine("ERROR: Invalid input"); i = i - 1;//Gose back in array to give the user the ability to re-input there valid answers } } } return answers; } public static void MarkQuiz(ref MultipleChoiceQuestion[] questionList, ref int correct, ref int incorrect) { int index = ArrayIndex(ref questionList); double rightAnwser; double percent = 0.00; Console.WriteLine("Multiple Choice Exam - Mark Exam"); Console.WriteLine("---------------------------------------"); rightAnwser = correct; percent = (rightAnwser / (rightAnwser + incorrect)); if (percent >= .83) { Console.WriteLine("You got {0:P2}. You got {1} questions correct out of {2}", percent, correct, correct + incorrect); Console.WriteLine("You passed the exam."); Console.WriteLine("Press any key to continue."); } else { Console.WriteLine("You got {0:P2}. You got {1} questions correct out of {2}", percent, correct, correct + incorrect); Console.WriteLine("You failed the exam."); Console.WriteLine("The following questions were anwsered incorrectly: "); for (int n = 0; n < incorrect; n++)//Loops question numbers { if (index > 0) { Console.Write("{0}, ",n + index); } } } Console.Write("\b\b "); Console.ReadLine(); } } }
Что я уже пробовал:
у меня возникла проблема с отображением правильного вывода для массива .... Это мой основной класс, использующий систему;
мне нужно, чтобы он хранил массив[индекс] по неправильным вопросам, а затем выводил каждый вопрос.... Пожалуйста, дайте мне знать, если мне нужно отредактировать этот вопрос или быть более глубоким в моей информации
lw@zi
Из того, что я понял, у вас возникли проблемы с поиском вопросов с неправильными ответами. Это верно?
Member 12815488
массив.помощи indexOf()
кажется, может быть, было бы проще построить список неправильных вопросов и просто вывести этот список?