с# без использования условных операторов

Пользователь

от good20045 , в категории: Java , 2 года назад

Форумчане выручайте,не имею не малейшего понятия как это выполнить без условных операторов.

Полное задание:

Известны оценки по информатике каждого из 20 учеников класса.В начале списка перечислены все пятерки,затем

все остальные оценки.Сколько учеников имеют по информатике оценку 5?Условный оператор не использовать.Рассмотреть два

случая:

1)известно,что пятерки имеют не все ученики класса;

2)допускается,что пятерки могут иметь все ученики класса

Выполни на c# и обьясни каждую строчку.

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от Ekaterina_90 , 2 года назад

@good20045 Для решения задачи без использования условных операторов, можно воспользоваться логикой работы с индексами и массивами. Вот пример решения на языке C#:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;

class Program
{
    static void Main(string[] args)
    {
        int[] marks = { 5, 5, 5, 5, 5, 3, 4, 2, 3, 5, 4, 2, 1, 3, 5, 4, 5, 5, 3, 2 };

        // Первый случай: пятерки не имеют все ученики класса
        int totalStudents = marks.Length; // Общее количество учеников в классе
        int index = Array.LastIndexOf(marks, 5); // Индекс последней пятерки

        int studentsWithFive = totalStudents - index - 1;
        Console.WriteLine("Количество учеников с оценкой 5 (первый случай): " + studentsWithFive);

        // Второй случай: допускается, что пятерки могут иметь все ученики класса
        index = Array.IndexOf(marks, 6); // Индекс первого элемента со значением 6

        studentsWithFive = index == -1 ? totalStudents : index;
        Console.WriteLine("Количество учеников с оценкой 5 (второй случай): " + studentsWithFive);
    }
}

Объяснение:

  1. Создаем массив marks, в котором хранятся оценки учеников по информатике. В примере указаны оценки для 20 учеников.
  2. Первый случай: Задаем переменную totalStudents для хранения общего количества учеников в классе (равно длине массива marks).
  3. Используем метод Array.LastIndexOf() для поиска индекса последнего элемента со значением 5 в массиве marks. Этот индекс указывает на последнего ученика, получившего пятерку.
  4. Вычисляем количество учеников с оценкой 5 (studentsWithFive) путем вычитания индекса последней пятерки из общего количества учеников и вычитания 1 (так как индексация массива начинается с 0).
  5. Выводим результат на экран для первого случая.
  6. Второй случай: Используем метод Array.IndexOf() для поиска индекса первого элемента со значением 6 в массиве marks. Если такого элемента нет, метод возвращает -1.
  7. Если индекс равен -1, значит ни один ученик не получил оценку 6, и в этом случае присваиваем переменной studentsWithFive значение totalStudents, то есть все ученики получили пятерки.
  8. Если индекс не равен -1, то количество учеников с оценкой 5 (studentsWithFive) будет равно значению индекса.
  9. Выводим результат на экран для второго случая.

Обратите внимание, что в решении используются методы класса Array, такие как LastIndexOf() и IndexOf(), для выполнения поиска в массиве.

Пользователь

от hermina.hauck , 6 месяцев назад

@good20045 

Решение задачи можно упростить и сделать более элегантным с более ясными комментариями. Давайте посмотрим на предложенный код и объясним каждую строку:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;

class Program
{
    static void Main(string[] args)
    {
        // Создадим массив с оценками учеников
        int[] marks = { 5, 5, 5, 5, 5, 3, 4, 2, 3, 5, 4, 2, 1, 3, 5, 4, 5, 5, 3, 2 };

        // Первый случай: не все ученики имеют пятерки
        // Найдем общее количество учеников
        int totalStudents = marks.Length;

        // Найдем индекс последнего элемента со значением 5
        int index = Array.LastIndexOf(marks, 5);

        // Количество пятерок равно индексу последней пятерки плюс 1
        int studentsWithFive = index + 1;
        Console.WriteLine("Количество учеников с оценкой 5 (первый случай): " + studentsWithFive);

        // Второй случай: допускается, что пятерки могут иметь все ученики класса
        // Индекс элемента со значением, превышающим 5. Такого элемента не существует, используем -1
        index = Array.IndexOf(marks, 6);

        // Если все оценки пятерки, индекс будет -1, и тогда все ученики имеют пятерки
        studentsWithFive = index == -1 ? totalStudents : index;
        Console.WriteLine("Количество учеников с оценкой 5 (второй случай): " + studentsWithFive);
    }
}


Объяснение:

  1. Создание массива marks: int[] marks = { 5, 5, 5, 5, 5, 3, 4, 2, 3, 5, 4, 2, 1, 3, 5, 4, 5, 5, 3, 2 }; Массив целых чисел представляет оценки каждого из 20 учеников.
  2. Первый случай: int totalStudents = marks.Length; totalStudents хранит количество учеников, то есть длину массива marks. int index = Array.LastIndexOf(marks, 5); Метод LastIndexOf находит индекс последнего элемента со значением 5 в массиве marks. int studentsWithFive = index + 1; Количество учеников с пятерками равно индексу последней пятерки плюс один, так как индексация начинается с 0. Console.WriteLine("Количество учеников с оценкой 5 (первый случай): " + studentsWithFive); Вывод на экран количества учеников с оценкой 5 в первом случае.
  3. Второй случай: index = Array.IndexOf(marks, 6); Метод IndexOf пытается найти элемент со значением 6. Если такого элемента нет, возвращается -1. studentsWithFive = index == -1 ? totalStudents : index; Используется тернарный оператор для определения количества учеников с пятерками. Если индекс равен -1 (то есть оценка 6 не найдена), это означает, что все 20 учеников имеют пятерки, иначе ответ - индекс первого элемента, отличного от пятерки. Console.WriteLine("Количество учеников с оценкой 5 (второй случай): " + studentsWithFive); Выводит результат для второго случая.


Таким образом, данное решение без использования условных операторов эффективно определяет количество учеников с оценками 5 для обоих случаев.