Небольшой практикум по C#

«Услышанное  — забывается, увиденное –запоминается, сделанное –помнится»

Китайская народная  мудрость

Ну вот мы с вами быстренько пробежались по синтаксису языка C#. Не знаю, был ли он вам полезен, но тем не менее, я сторонник последовательного изложения. Кроме того, при изучении второй части  я буду отталкиваться прежде всего от предыдущих своих уроков.

Несмотря на то, что предыдущие уроки можно было назвать очень примитивными, тем не менее, для тех кто делает первые шаги в мире программирования, они были очень важными. Поэтому, чтобы закрепить в памяти изученное, нужна практика.

Честно говоря, я уже несколько «опопсился» на техзаданиях от заказчика и поэтому мне сложно на лету придумать очередные задания, причем, абсолютно непохожие на практические материалы по другим языкам, о которых я пишу в этом блоге. Поэтому прошу не судить меня строго за данные задания.

Итак, давайте приступим. Как и всегда, я дам вам список заданий, которые вам нужно будет проделать самостоятельно. Местами я буду делать небольшие дополнения, чтобы вы могли решить ту или иную задачу.

  1. Одна из самых простейших задач. Выведите на консоль список чисел от 1 до n, где n вам нужно запросить у пользователя.  Важная особенность данной задачи – четные и нечетные числа должны выделяться разными цветами. Кроме того, вы должны на выбор реализовать возможность записи в массив либо четных, либо нечетных чисел. Все это мы уже делали.  Сложности это вызвать не должно.
  2. Напишите небольшую консольную игру типа «камень-ножницы-бумага». Суть игры очень проста – мы пишем  в консоли слово, например, камень, а компьютер, используя генератор случайных чисел, генерирует свой ход, например, бумага. После ответа компьютера программа решает, кто победил или объявляет ничью. Вообще, написание игр очень плодотворно влияет на навыки программирования.  При решении этой задачи вам придется использовать массив с постусловием, оператор switch, if и т.д. Единственное, что пока вас может ввести в ступор – как использовать генератор случайных чисел. Для этой цели нам понадобится класс Random.  У него есть метод Next (), который нам как раз и понадобится. В общем случае, вам нужно сделать так:
Random  random= new Random ();

int  answerCPU= random.Next (3); //метод нам вернет случайное число от 0 до 2

Теперь вам просто остается через switch или if назначить каждому варианту  цифры строковый эквивалент (допустим, 0 – это камень и т.д), который вы будете сравнивать уже со своим ответом. Кроме того, не помешает ввести также счетчик выигрышей (опять разных цветов).  В общем, игра должна повоторяться до тех пор, пока вы не захотите выйти (придумайте, как организовать данный выход из цикла с постусловием). В любом случае, постарайтесь решить эту задачу. Если у вас что-то не получится, лучше спросите у меня. Кроме того, данную игру гораздо проще организовать с помощью классов и методов. Во второй части своего курса я расскажу вам, как это можно сделать.

До встречи во второй части уроков по C#!
<<Предыдущий урок                                             Следующий урок >>

Рубрика: Уроки по C#

Комментарии

36 коммент. на “Небольшой практикум по C#”
  1. Гость:

    Random на этапе обучения ещё допустимо, но даже тут по сравнею с аналогичной возможностью в Си, он не настолько Random. Если кто-то в рамках WinForms попробует с поимощью этой функции взять рандом значения для цветов то наглядно это заметит.

    • Вячеслав "VeGA" Головлев:

      Скажите, как Вы себе представляете использование абстрактных классов новичками, которые только знают самые азы? Кроме того, для данной задачи класса Random хватит с головой. Им сейчас важно научиться думать. Я понимаю, что местами мои выкладки выглядят, по меньшей мере, нелепо, но только так я могу научить людей программировать. А что до деталей -если программист хочет оптимизировать свой код, до него это дойдет со временем. Но, повторюсь, на этапе того, что читатели моего курса пока знают, Random им будет вполне достаточно

      • Гость:

        Вячеслав в вашем примере безусловно не выплевет не настолько случайность Random, так как пользователь просто не сможет так быстро нажать клавиши, что б внутринее состояние в классе Random не успело изменится. Ваш пример не выглядит не лепо, скорей класс Random в определённых сценариях использования будет не лепым. Я собственно и начал комментарий с того, что как для учебного применения и в данном примере использования этого класса оправданно.
        Дело в другом, если в другой какой-то ситуации учасщийся вдруг захочет применить Random и не получив разительно отличающихся значений, он должен понять, что это происходит не по его вине, а из-за особенностей реализации Random в .NET, и что в фреймерко есть так же абстрактный класс RandomNumberGenerator.

  2. Phoercz:

    Vot moj kod :]]

    Random random = new Random();

    String[] items = new String[3];
    items[0] = «Stone»;
    items[1] = «Scissors»;
    items[2] = «Paper»;

    int coincidental = random.Next(items.Length);
    string coincidental2 = items[coincidental];

    Console.WriteLine(«1. Stone»);
    Console.WriteLine(«2. Scissors»);
    Console.WriteLine(«3. Paper»);

    Console.Write(«Your choice is ? — «);
    int Choice = int.Parse(Console.ReadLine());

    switch(Choice)
    {
    case 1:
    Console.WriteLine(«Stone vs {0}», coincidental2);

    if (coincidental2 != items[0] && coincidental2 != items[2])
    Console.WriteLine(«You Win.»);
    else if (coincidental2 != items[0] && coincidental2 != items[1])
    Console.WriteLine(«You Lose.»);
    else
    Console.WriteLine(«You Draw.»);

    break;
    case 2:
    Console.WriteLine(«Scissors vs {0}», coincidental2);

    if (coincidental2 != items[1] && coincidental2 != items[0])
    Console.WriteLine(«You Win.»);
    else if (coincidental2 != items[1] && coincidental2 != items[2])
    Console.WriteLine(«You Lose.»);
    else
    Console.WriteLine(«You Draw.»);
    break;
    case 3:
    Console.WriteLine(«Paper vs {0}», coincidental2);
    if (coincidental2 != items[2] && coincidental2 != items[1])
    Console.WriteLine(«You Win.»);
    else if (coincidental2 != items[2] && coincidental2 != items[0])
    Console.WriteLine(«You Lose.»);
    else
    Console.WriteLine(«You Draw.»);
    break;
    }

    Console.ReadKey();

    • admin:

      Ну что ж, для данного уровня уроков (точнее, для практической работы) вполне неплохо, хотя в некоторых местах я бы написал несколько иной код. Но программирование на то и есть программирование, что можно решать задачу разными способами.
      Почитайте уроки по ООП и поймете, как было проще реализовать некоторые вещи.
      Кроме того, когда я наконец доберусь до уроков по WindowsForms , то напишем такую же игру, но уже с использованием картинок, выдаваемых на экране.

  3. Катрин:

    Спасибо вам за уроки, все понятно и доступно :) вот что у меня получилось со второй задачкой)

    public static void Main()
    {
    //приветствуем пользователя и даем понять, что его ждет впереди
    Console.WriteLine(«Привет! Сыграем в одну игру?»);
    //начинаем выполнение цикла, который закончится только если пользователь введет слово выход или нажмет enter
    do
    {
    Console.WriteLine(«Выбирай — камень, ножницы или бумага? Если надоело играть, введи — \»выход\»»);
    string userChoise=Console.ReadLine();//переменная содержащая выбор пользователя
    //прописываем завершение программы
    if (userChoise==»выход») break;
    if (userChoise==»») break;
    //имитация ИИ :)
    Console.Write(«А я выбираю «);
    string aiChoise=» «;
    Random ran=new Random();
    int ai=ran.Next(3);
    switch (ai){
    case 0: aiChoise=»камень»;
    break;
    case 1: aiChoise=»ножницы»;
    break;
    case 2: aiChoise=»бумагу»;
    break;
    }
    Console.WriteLine(aiChoise);
    //сверяем ответы и выводим результат
    switch (userChoise)
    {
    case «камень»:
    if (aiChoise == «камень») Console.WriteLine(«Ничья.»);
    if (aiChoise == «бумагу») Console.WriteLine(«Увы. Ты проиграл!»);
    if (aiChoise==»ножницы») Console.WriteLine(«Поздравляю. Ты победил!»);
    break;

    case «ножницы»:
    if (aiChoise == «ножницы») Console.WriteLine(«Ничья.»);
    if (aiChoise==»камень») Console.WriteLine(«Увы. Ты проиграл!»);
    if (aiChoise == «бумага») Console.WriteLine(«Поздравляю. Ты победил!»);
    break;
    case «бумага»:
    if (aiChoise == «бумагу») Console.WriteLine(«Ничья.»);
    if (aiChoise == «ножницы») Console.WriteLine(«Увы. Ты проиграл!»);
    if (aiChoise == «камень») Console.WriteLine(«Поздравляю. Ты победил!»);
    break;
    }
    }
    while(true);
    }

    • 7lito7@ джымаил:

      » //имитация ИИ :) » — это вы хорошо придумали

      спасибо за подсказку, как использовать цикл do — while

  4. Катрин:

    И еще вопрос. Поначалу оператор switch был таким:

    switch (userChoise)
    {
    case «камень»:
    if (aiChoise == «камень») Console.WriteLine(«Ничья.»);
    if (aiChoise == «бумагу») Console.WriteLine(«Увы. Ты проиграл!»);
    else Console.WriteLine(«Поздравляю. Ты победил!»);
    break;
    ,,,,,,,,,,,}
    Но, почему-то, если выпадала ничья, то появлялась надпись «Ничья» и ниже еще и «Поздравляю! Ты победитель!» При проигрыше, все было нормально. Как это можно объяснить? Или просто в switch нельзя использовать else?

    • Chatlaninn:

      У тебя перед вторым if должен стоять else, иначе получается два разных условия, и второе условие выполняется независимо от первого. Соответственно «Поздравл…» будет выскакивать в любом случае если аiChoise != «бумагу».

  5. Хасан:

    Че-то я и первую никак не могу решить(

  6. 7lito7:

    Мой пример выполнения первого задания:
    // на это ушло 3 дня , за что очень стыдно ))

    Console.Title= » Домашняя рaбота «;
    Console.ForegroundColor = ConsoleColor.Green;
    Console.Write(«\n\t\t\t Введите число от 1 до 255 :»); int n = int.Parse (Console.ReadLine());

    int c = (n%2==0) ? (n/2) : ((n+1)/2); //ищем количество Непарных элементов в массиве
    int a = (n%2==0) ? (n/2) : ((n-1)/2); //ищем количество парных элементов в массиве

    int size1 = c; // количество Hепарных чисел
    int size2 = a; // количество парных чисел

    int[] masiv1 = new int[size1]; // масив c Непарними елементами
    int[] masiv2 = new int[size2]; // масив c парними елементами

    int b=-1; int z=0; Console.ForegroundColor=ConsoleColor.Cyan;
    for (; b<=(n-2); b=(b+=2), Console.Write(" "+b+","), masiv1[z] = b, z++) //виводить на екран НЕпарные числа
    {;} Console.WriteLine("\n"); Console.WriteLine("здесь всего " +c+" НЕпарных чисел\n\n");

    int b2=0; int i=0; Console.ForegroundColor=ConsoleColor.Yellow;
    for (; b2<=(n-2); b2=(b2+=2), Console.Write(" "+b2+","), masiv2[i] = b2, i++) //виводить на екран парные числа
    {;} Console.WriteLine("\n"); Console.WriteLine("здесь всего " +a+" парных чисел\n\n");

    Console.WriteLine("чтобы записать в массив НЕпарные числа нажмите — 1, парные — 2");

    char otvet=char.Parse(Console.ReadLine()); Console.WriteLine("\n\n");

    if (otvet =='2' || otvet =='1')
    {
    if (otvet =='1')
    {
    Console.WriteLine("созданий массив состоит из:");
    for (int s=0; s<size1; s++)
    Console.Write(masiv1[s] + " ");
    }
    else
    {
    Console.WriteLine("созданий массив состоит из:");
    for (int s=0; s<size2; s++)
    Console.Write(masiv2[s] + " ");
    }
    }
    else
    {
    Console.WriteLine(" Ви зробили помилку! Вводити можно лише 1 або 2 ");
    }

    Console.Write("\n \n\n Press any key to continue . . . ");
    Console.ReadKey(true);

    • admin:

      Честно говоря, даже не могу ничего прокомментировать. Вообще, я имел в виду нечто подобное:
      нам нужен n, который мы получили у пользователя.
      Имея n, введем счетчики четных и нечетных чисел: k1 и к2
      Теперь мы можем спокойно высчитать количество четных чисел в диапазоне например так:

      for (int i=0;i<n;i+=2)
      {
      k++;
      Console.ForegroundColor=ConsoleColor.Green; 
      }
      

      Кроме того, эти числа можно сразу бросать тут же в массив, который нужно было инициализировать еще до этого.
      А правильнее было бы в цикле ввести условие, где нужно было бы проверять деление по модулю и делать выборку.
      Писать полный код неохота. Пишется все за 10-11 минут.
      Попробуйте переделать код программы с учетом моих советов.

  7. 7lito7@ джымаил:

    а это мой пример выполнения второго задания
    подскажите пожалуйста, как можно было упростить запись программы, используя «else if» вместо «if» (я имею в виду, цикл в конце программы)

    Console.Title= «GAME»;
    Console.WriteLine(«\n \t \t\t хотите сыграть с роботом?»);
    int vsegopobed =0;
    int vsegogames =0;

    do{
    Console.ForegroundColor=ConsoleColor.Green;
    Console.Write(«\n \n Cделайте выбор, напишите \»камень\» \»ножницы\» \»бумага\» или \»выход\» : «);

    Console.ForegroundColor=ConsoleColor.Yellow;
    string vibor =(Console.ReadLine());
    int a=0;
    vsegogames++;
    Random random= new Random ();
    int answerCPU= random.Next (3);

    switch (vibor)
    {
    case «камень» : a=1; break;
    case «ножницы»: a=2; break;
    case «бумага»: a=3; break;
    case «выход»: a=4; break;
    default:
    Console.WriteLine(«Вы сделали ошибку!!!»);
    continue;
    }

    if ( a>3)
    {
    Console.WriteLine(» Программа должна закрыться, но я не знаю как это сделать))) продолжим:»);
    break;
    }

    if (a==answerCPU)
    {
    Console.WriteLine(» У нас поровну, давай сыграем еще раз.»);
    continue;
    }

    if ((a==1) && (answerCPU==3))
    {
    Console.WriteLine(» Робот выиграл, у него была бумага \n»);
    continue;
    }

    if ((a==2) && (answerCPU==1))
    {
    Console.WriteLine(» Робот выигралл, у него бил камень\n»);
    continue;
    }
    if ((a==3) && (answerCPU==2))
    {
    Console.WriteLine(» Робот выиграл, у него были ножницы\n»);
    continue;
    }
    if (a==100)
    {;}
    else
    {
    vsegopobed++;
    Console.WriteLine(«Поздравляю вы выиграл. У Вас было {0} попиток, но выиграли — {1} игр.»,vsegogames ,vsegopobed);
    continue;
    }

    }

    while(true);

  8. Erick:

    Спасибо за уроки! Сделал первое задание — ничего себе легкое, я потратил часа 4. Я наверное все усложнил?) Сразу говорю, я новичок, с ваших уроков начал знакомство с программированием, т.к мне нужен С# для движка Unity)

    int n, a;
    int CHET = 0, NECHET = 0;
    Console.WriteLine («Введите последнее число»);
    n = Convert.ToInt32(Console.ReadLine()); // Увидал это в интернетах, не мог присвоить к n число.
    for (int k = 0; k <= n; k++) // Перебор всех чисел
    {
    a = k % 2; // Отбирает четные
    if (a == 0)
    {
    Console.BackgroundColor = ConsoleColor.Green;
    CHET++; // Добавил счетчик для размера памяти будущего массива
    }
    else // Все остальные соответственно нечетные
    {
    Console.BackgroundColor = ConsoleColor.Red;
    NECHET++; // Добавил счетчик для размера памяти будущего массива
    }
    Console.WriteLine(k); // Печатает каждое число со своим цветом
    }
    Console.BackgroundColor = ConsoleColor.Black; // Возвращает черный цвет
    Console.WriteLine("Какие числа вы бы хотели внести в массив (четные/нечетные)?");
    string word = Console.ReadLine(); // Считывает, что написали
    word=word.ToLower().Trim(); // Приводит к нижнему регистру, убирает пробелы
    if (word == "четные") {
    int[] MASS = new int[CHET]; // Создаю массив с известной выделенною памятью
    int l=0; // Ввел переменную для строки массива
    for (int k = 0; k <= n; k++) { // СНОВА перебираю все числа
    a = k % 2;
    if (a == 0) {
    MASS[l] = k;
    l++;
    }
    }
    foreach (int k in MASS)
    Console.WriteLine(k); // Вывожу массив на экран
    }
    else if (word == "нечетные")
    {
    int[] MASS = new int[NECHET]; // Создаю массив с известной выделенною памятью
    int l = 0;
    for (int k = 0; k <= n; k++) // СНОВА перебираю все числа
    {
    a = k & 1; // СНОВА отбираю, правда уже нечетные
    if (a == 1)
    {
    MASS[l] = k;
    l++;
    }
    }
    foreach (int k in MASS)
    Console.WriteLine(k); // Вывожу массив на экра
    }
    else
    Console.WriteLine("некорректный ввод");
    Console.ReadKey();

    • admin:

      Хм, я опять поставлен в тупик…
      Лично я сделал бы несколько иначе. Но если программа правильно работает, то, соответственно, к ней претензий нет.

  9. Erick:

    И снова спасибо за уроки! Сделал вторую задачу, так и не додумался как объединить все в одно условие с сравнением 0 1 и 2, пошел по легкому пути)

    int Z;
    int P=0; int L=0;
    string word, EX;
    bool Выход = false;
    Console.WriteLine(«Добро пожаловать в игру Камень-Ножницы-Бумага!»);

    while (!Выход) {
    Console.WriteLine(«Что у вас? (ножницы/бумага/камень)? Для выхода наберите (выход).»);
    word = Console.ReadLine();
    word = word.ToLower().Trim();
    if (word == «выход») goto FINISH;

    Random random = new Random();
    Z = random.Next(3);
    switch (Z)
    {
    case 0: Console.WriteLine(«Компьютер выбрал — камень!»); break;
    case 1: Console.WriteLine(«Компьютер выбрал — ножницы!»); break;
    default: Console.WriteLine(«Компьютер выбрал — бумага!»); break;
    }
    if (word == «камень»)
    {
    Console.WriteLine(«Ваш выбор — » + word);
    if (Z == 0) { Console.BackgroundColor = ConsoleColor.Blue; Console.WriteLine(«Ничья»); }
    else if (Z == 1) { Console.BackgroundColor = ConsoleColor.Green; Console.WriteLine(«Вы победили»); P++; }
    else { Console.BackgroundColor = ConsoleColor.Red; Console.WriteLine(«Вы проиграли»); L++; }
    }
    else if (word == «ножницы»)
    {
    Console.WriteLine(«Ваш выбор — » + word);
    if (Z == 1) { Console.BackgroundColor = ConsoleColor.Blue; Console.WriteLine(«Ничья»); }
    else if (Z == 2) { Console.BackgroundColor = ConsoleColor.Green; Console.WriteLine(«Вы победили»); P++; }
    else { Console.BackgroundColor = ConsoleColor.Red; Console.WriteLine(«Вы проиграли»); L++; }
    }
    else if (word == «бумага»)
    {
    Console.WriteLine(«Ваш выбор — » + word);
    if (Z == 2) { Console.BackgroundColor = ConsoleColor.Blue; Console.WriteLine(«Ничья»); }
    else if (Z == 0) { Console.BackgroundColor = ConsoleColor.Green; Console.WriteLine(«Вы победили»); P++; }
    else { Console.BackgroundColor = ConsoleColor.Red; Console.WriteLine(«Вы проиграли»); L++; }
    }
    else
    {
    Console.WriteLine(«Ваш выбор — неизвестен программе. Хотите выйти (да/нет)?»);
    EX = Console.ReadLine();
    EX = EX.ToLower().Trim();
    if (EX == «да») Выход = true;
    }
    Console.BackgroundColor = ConsoleColor.Black;
    }

    FINISH:
    Console.BackgroundColor = ConsoleColor.Green;
    Console.WriteLine(«Вы победили » + P + » раз!»);
    Console.BackgroundColor = ConsoleColor.Red;
    Console.WriteLine(«Вы проиграли » + L + » раз!»);
    Console.BackgroundColor = ConsoleColor.Black;
    Console.WriteLine(«Осуществляется выход, нажмите любую клавишу . . .»);
    Console.ReadKey();

  10. Владимир:

    Спасибо за «пинок»! Сегодня делать было нечего на работе. Вот за час написал логику работы. Потом часа за два

    
    
    namespace ConsoleApplication1
    {
        class CInterface  //класс отрисовки интерфеса
        {
            public string name;
            public string Title;
            public string Query;
            public string[] face;
            public CInterface()
            {
                Title = "Игра: камень-ножницы-бумага";
                Query = "Нажмите любую клавишу чтобы повторить игру или Esc, чтобы выйти...";
                face = new string[21];
                face[0] =  " -----------------------------------------------------------";
                face[1] =  "|           Игра: камень ножницы бумага                      |";
                face[2] =  " -----------------------------------------------------------";
                face[3] =  "| Введите слово: камень, ножницы или бумага..                |";
                face[4] =  "|            Ваш ход     vs     Компьютер                    |";
                face[5] =  "|                                                            |";
                face[6] =  "|                                                            |";
                face[7] =  "|                                                            |";
                face[8] =  "|                                                            |";
                face[9] =  "|                                                            |";
                face[10] = "|                                                            |";
                face[11] = "|                                                            |";
                face[12] = "|                                                            |";
                face[13] = "|                                                            |";
                face[14] = "|                                                            |";
                face[15] = "|                                                            |";
                face[16] = "|                                                            |";
                face[17] = "|           © 2014 Дементьев Владимир                        |";
                face[18] = " ------------------------------------------------------------";
                face[19] = "|                                                            |";
                face[20] = " ------------------------------------------------------------";
            }  
            public void draw()  //функция рисования пустого поля
            {
                 Console.SetCursorPosition(0, 0);
                 Console.Clear();
                for (int i=0;i<=20;i++)
                {
                    Console.WriteLine(face[i]);
                };
                
            }
        }
    
        class CObject
        {
            public string[] obj = {"камень","ножницы","бумага"};
            public string user = null;
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                CInterface iFace = new CInterface();
                Console.Title = iFace.Title;
                Console.ForegroundColor = ConsoleColor.Yellow;
      
                ConsoleKeyInfo keyCode = new ConsoleKeyInfo(); //начинаем обрабатывать нажатия клавиш
                
                CObject game = new CObject();
                
                while (keyCode.Key != ConsoleKey.Escape)
               {
                  
                   Console.Clear();
                   iFace.draw();
                   Console.SetCursorPosition(13, 6);
                   game.user = Console.ReadLine();
                   Random rand = new Random();
                   int i = rand.Next(3);
                   Console.SetCursorPosition(33, 6);
                   Console.Write(game.obj[i]);
                   Console.SetCursorPosition(21, 10);
                   switch (game.user)
                   {
                       case "камень":
                           if (game.obj[i]=="камень")
                           {
                               Console.Write("Ничья...");
                           }
                           if (game.obj[i] == "ножницы")
                           {
                               Console.Write("Вы победили..");
                           }
                           if (game.obj[i] == "бумага")
                           {
                               Console.Write("Вы проиграли...");
                           }
                       break;
     
                       case "ножницы":
                       if (game.obj[i] == "камень")
                       {
                           Console.Write("Вы проиграли...");
                       }
                       if (game.obj[i] == "ножницы")
                       {
                           Console.Write("Ничья..");
                       }
                       if (game.obj[i] == "бумага")
                       {
                           Console.Write("Вы победили...");
                       }
                       break;
     
                       case "бумага":
                       if (game.obj[i] == "бумага")
                       {
                           Console.Write("Ничья...");
                       }
                       if (game.obj[i] == "ножницы")
                       {
                           Console.Write("Вы проиграли..");
                       }
                       if (game.obj[i] == "камень")
                       {
                           Console.Write("Вы победили...");
                       }
                       break;
    
                       default:
                       {
                           Console.SetCursorPosition(7, 10);
                           Console.Write("Вы набрали неправильно слово. Попробуйте заново.");
                       } 
                       break;
                   }
    
    
                   Console.SetCursorPosition(3,19);
                   Console.WriteLine("Для повтора нажмите любую клавишу. Еsc - выход");
                   keyCode = Console.ReadKey(true);             
                 
                };
    
            }
        }
    }
    
  11. Кос:

    Console.WriteLine(«Введите число:»);
    int count = Convert.ToInt32(Console.ReadLine());
    for (int i = 1; i <= count; i++)
    {
    if (i % 2 == 0)
    Console.ForegroundColor = ConsoleColor.Yellow;
    else if (i % 2 == 1)
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine(i);
    }
    Console.WriteLine("…");
    Console.ReadKey();

    первое задание, никак не могу понять, как сохранить числа в массиве, можете дать наводку?

  12. Кос:

    string answer;
    string cpuanswer = «»;
    int rndcpu;
    Random rnd = new Random();
    rndcpu = rnd.Next(3);
    Console.WriteLine(«Камень, ножницы или бумага?»);
    answer = Console.ReadLine();
    if (rndcpu == 0)
    cpuanswer = «Камень»;
    else if (rndcpu == 1)
    cpuanswer = «Ножницы»;
    else if (rndcpu == 2)
    cpuanswer = «Бумага»;
    Console.WriteLine(«У вас {0} — у компьютера {1}», answer, cpuanswer);
    answer = answer.ToLower().Trim();
    switch (answer)
    {
    case «камень»:
    if (rndcpu == 0)
    Console.WriteLine(«Ничья»);
    else if (rndcpu == 1)
    Console.WriteLine(«Вы выиграли»);
    else if (rndcpu == 2)
    Console.WriteLine(«Вы проиграли»);
    break;
    case «ножницы»:
    if (rndcpu == 0)
    Console.WriteLine(«Вы проиграли»);
    else if (rndcpu == 1)
    Console.WriteLine(«Ничья»);
    else if (rndcpu == 2)
    Console.WriteLine(«Вы выиграли»);
    break;
    case «бумага»:
    if (rndcpu == 0)
    Console.WriteLine(«Вы выиграли»);
    else if (rndcpu == 1)
    Console.WriteLine(«Вы проиграли»);
    else if (rndcpu == 2)
    Console.WriteLine(«Ничья»);
    break;
    }
    Console.ReadKey();

    решение второй задачи

  13. Сергей:

    Привожу свой вариант решения первой задачи:
    Console.Title = «Задание из практикума N1»;
    Console.WriteLine(«Введите верхнюю границу перечисления:»);
    int n = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine(«Сохранить четные/нечетные значения? (0 — нечетные 1 — четные)»);
    int chot = Convert.ToInt32(Console.ReadLine());
    int[] numbers = new int[n];
    int[] chotnumbers = new int[n/2];
    int[] nechotnumbers = new int[(n/2)+1];
    int j = 0;
    int jj = 0;
    int ij = n % 2;

    for (int i = 0; i < n; i++)
    {
    numbers[i] = i + 1;
    }

    foreach (var i in numbers)
    {
    if (i % 2 != 0)
    {
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine(i);
    if (chot == 0)
    {
    nechotnumbers[j] = i;
    j++;
    }
    }
    else
    {
    Console.ForegroundColor = ConsoleColor.Yellow;
    Console.WriteLine(i);
    if (chot == 1)
    {
    chotnumbers[jj] = i;
    jj++;
    }
    }
    }
    Console.WriteLine();
    Console.WriteLine("Хотите ли Вы вывести содержимое сохраненного массива на экран? (да/нет)");
    string lookarray = Console.ReadLine();
    lookarray = lookarray.ToLower().Trim();
    if (lookarray == "да")
    {
    switch (chot)
    {
    case 0: foreach (var k in nechotnumbers)
    {
    Console.WriteLine(k);
    }; break;
    case 1: foreach (var k in chotnumbers)
    {
    Console.WriteLine(k);
    }; break;
    }
    }
    Console.ReadKey();

  14. Александр:

    class task1
    {
    static void Main(string[] args)
    {
    Console.WriteLine(«——Задача №1:Создать массив——«);
    Console.WriteLine(«Условие: — Выведите на консоль список чисел от 1 до n, где n вам нужно запросить у пользователя. \nВажная особенность данной задачи – четные и нечетные числа должны выделяться разными цветами. \nКроме того, вы должны на выбор реализовать возможность записи в массив либо четных, либо нечетных чисел.»);
    Console.WriteLine();
    Console.WriteLine(«Решение задачи:»);
    Console.WriteLine(«Введите размерность массива..(но не больше 255!!)»);
    int sizeArray = int.Parse(Console.ReadLine());
    int[] @Array = new int[sizeArray];
    for (int index = 0; index < sizeArray; index++)
    {
    @Array[index] = index;
    }
    Console.WriteLine("Если вы хотите вывести все — нажмите 0…");
    Console.WriteLine(" Если вы хотите вывести только Непарные числа — нажмите 1…");
    Console.WriteLine(" Если вы хотите вывести только Парные числа — нажмите 2…");
    int vybor = int.Parse(Console.ReadLine());
    foreach (int objectArray in @Array)
    {
    if (objectArray == 0)
    continue;
    if (objectArray % 2 == 1)
    if ((vybor == 0) || (vybor == 1))
    {
    Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine(objectArray);
    continue;
    }
    if (objectArray % 2 == 0)
    if ((vybor == 0) || (vybor == 2))
    {
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine(objectArray);
    continue;
    }
    }
    Console.ReadKey();
    }
    }

  15. Александр:

    + к пред комментарию:

    Спасибо автору за уроки. Т.к. я новичек в этом деле — мне все понятно и просто.

  16. admin:

    Да, давно я не вел свой блог, за что мне стыдно даже. Я отдавал его во «владение» своему знакомому, чтобы тот хотя бы чем-то наполнял его, дабы не уронить его в поисковой выдаче. В итоге, здесь появилось куча хлама в виде беспонтовых статей…
    Сейчас я вновь админ своего блога и многое исправлю в нем.
    Я был весьма поражен тому энтузиазму, с которым вы, уважаемые читатели, ринулись выполнять поставленные когда-то мною учебные задачи. Спасибо вам, за то, что читаете мои уроки.
    Я был одно время сильно загружен работой, потом скатился в депрессию. Мне все было безразлично. Теперь же я вернулся к нормальной функциональности и буду продолжать уроки, благо уже куча стандартов поменялось за это время.
    Также я просмотрел ссылки, кто ссылается на меня и был неприятно удивлен тому. что меня ругают за «приучение» учеников к кириллице в своих уроках.
    Честно говоря, мне даже в голову не приходило ни тогда, ни сейчас, что я приучаю использовать кириллицу. Что же, впредь буду вести уроки иначе, раз народ так требует…
    Также были замечания по поводу ошибок в коде, в результате набора которого он не компилировался. Как ни странно, код рабочий, скопирован из среды разреботки в word, видно там и произошла засада, а я не проверяю, что пишу на блоге. Теперь буду более внимательно просматривать опубликованные статьи.
    Что ж, ждите следуюзих уроков и подписывайтесь на них )))

  17. Sl:

    Добрый вечер.
    По счастливой случайности наткнулся на ваши уроки ,которые очень понравились.
    С первым заданием проблем не было,кроме как записи в массив четных и нечетных чисел.
    Хотелось,по возможности,получить краткое объяснение.
    Вот мой код:
    namespace lesson11._1
    {
    class Program
    {
    static void Main(string[] args)
    {
    int chet = 0, nechet = 0;
    Console.WriteLine(«Введите количество чисел,которое необходимо ввести»);
    int n = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine(«Введите элементы массива»);
    double [] arr = new double [n];
    for (int i = 0; i < n; i++)
    {
    arr[i] = Convert.ToDouble(Console.ReadLine());
    }
    for (int i = 0; i < n; i++)
    {

    if (arr[i] % 2 == 0)
    {
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine("Число " + arr[i] + " является четным");
    Console.ResetColor();
    chet++;
    }
    else
    {
    Console.ForegroundColor = ConsoleColor.Blue;
    Console.WriteLine("Число " + arr[i] + " является нечетным");
    Console.ResetColor();
    nechet++;

    }

    }
    Console.WriteLine("Количество четных чисел в массиве = " + chet);
    Console.WriteLine("Количество нечетных чисел в массиве = " + nechet);
    Console.ReadKey();

    }
    }
    }

    Спасибо.

    • admin:

      Ну здесь гораздо проще сделать два массива — для четных и нечетных чисел разные. А первый вообще убрать.
      Тогда при итерации цикла будет проверка на четность и нечетность числа и его размещение в нужном массиве.
      Переменные chet и nechet тогда вообще проще убрать, так как можно запросить свойство Length массива, тот сообщит сколько элементов в нем находится. Это лишняя нагрузка на процессор, пусть и такая маленькая.
      Попробуйте переписать код с моей поправкой, посмотрим, что получится 😉

      • Sl:

        Тогда у меня встречный вопрос,касающийся размера массивов для четных и нечетных чисел.
        Я не смог найти хорошей информации,описывающей создание динамических массивов.
        А еще возникла проблема с записью чисел в два массива,а именно,например,я ввел число,проверил его на четность/нечетность ,и,допустим, оно оказалось четным.
        Я присваиваю нулевому элементу массива четных чисел введенное мной значение.
        После ввожу другое,а оно нечетное,присваиваю нулевому элементу массива нечетных.
        Третье снова четное и как его записать на первый элемент массива четных чисел?
        Я ведь работаю в цикле и уже не получится заполнить весь массив подряд,как если заполняется один массив через цикл for.
        Надеюсь,что вы меня поймете)
        Вот код:
        namespace lesson11._1
        {
        class Program
        {
        static void Main(string[] args)
        {
        int c;
        double m;
        Console.WriteLine(«Введите количество чисел,которое необходимо обозначить»);
        int n = Convert.ToInt32(Console.ReadLine());
        double[] chetn = new double[n];
        double[] nechetn = new double[n];
        for (int i = 0; i < n; i++)
        {
        Console.WriteLine("Введите число");
        m = Convert.ToDouble(Console.ReadLine());
        if (m % 2 == 0)
        {
        Console.WriteLine("Какому по счету элементу массива четных чисел присвоить введенное значение?");
        int k = Convert.ToInt32(Console.ReadLine());
        chetn[k] = m;
        Console.Clear();
        }
        else
        {
        Console.WriteLine("Какому по счету элементу массива нечетных чисел присвоить введенное значение?");
        int k = Convert.ToInt32(Console.ReadLine());
        nechetn[k] = m;
        Console.Clear();
        }
        }
        Console.WriteLine("1-Вывести количество четных чисел");
        Console.WriteLine("2-Вывести количество нечетных чисел");
        c = Convert.ToInt32(Console.ReadLine());
        switch(c)
        {
        case 1:
        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine("Количество четных чисел равно {0}", chetn.Length);
        Console.ResetColor();
        break;
        case 2:
        Console.ForegroundColor = ConsoleColor.Blue;
        Console.WriteLine("Количество четных чисел равно {0}", nechetn.Length);
        Console.ResetColor();
        break;

        }
        Console.ReadKey();

        }
        }
        }

        Тем не менее,когда вывожу количество чисел,то он выводит неправильно,поскольку выводит общее количество чисел в массиве,а не количество записанных в него чисел.
        Прошу дать какую-нибудь наводку.
        И большое спасибо)

        • admin:

          Открою маленькую тайну — динамических массивов не бывает. Есть массив с объявленной размерностью и есть список, который как раз и можно использовать как динамический массив.
          В C# как раз подобным решением будет использование дженерика List . Его экземпляр и создаст список.

          • Sl:

            А больше уроков по С# не будет?

          • admin:

            Некогда. Я их начинал писать чисто из альтруистичных мыслей. К сожалению, уроки всегда трудозатратны и съедают много времени, тем более, что у меня свой собственный стиль изложения. Нужно написать так урок, чтобы его интересно было прочесть и максимально запомнить. А это не так просто как кажется.
            В итоге я трачу массу времени на непонятно что. Уроки нагло воруют, денег за них я не имею, блог приносит сущие копейки.
            Для тех, кому нравятся мои уроки и мой стиль изложения, я провожу платные обучающие вебинары.
            Это труд и труд должен быть оплачен. Иначе мотивация падает.
            Поэтому, скорее всего, именно статейных уроков больше не будет.
            Мне проще вести семинары, читать лекции и давать домашние задания за относительно небольшие деньги, сравнимые с покупкой бумажной версии книги того же Троелсена

  18. Sl:

    Тогда остается лишь поблагодарить вас,поскольку уроки было на самом деле интересные и простые для понимания)

  19. Георгий:

    N 1. А обязательно записывать числа в массив? Я вот уже написал код. А потом прочел, что нужно в «массив» :(.
    (Админ, если не трудно, дайте адрес e-mail или напиши как с вами связаться. Не буду назойлив. Только по делу. Исключительно по делу.)

  20. ученик:

    задание 1 без массивов

    static void Main(string[] args)
    {
    Console.WriteLine(«вывод чисел от 1 до n»);
    Console.WriteLine(«введите n: «);
    int n = Convert.ToInt32(Console.ReadLine());
    for (int i = 1; i < n; i++)
    {
    if (i%2==0) //проверка четности
    {
    Console.ForegroundColor = ConsoleColor.Yellow;
    Console.WriteLine(i);
    }

    else
    {
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine(i);
    }

    }
    Console.ResetColor();
    Console.WriteLine("\nнажмите аникей");
    Console.ReadKey(true);

  21. ученик:

    с массивами вопрос непонятен, откуда выводятся числа из массивов или нет, зачем нужны 2 массива если надо просто вывести числа…..

Добавить комментарий

Внимание! Не будут добавляться комментарии в виде откровенного спама или прямого анкора на свои сайты. Все спамеры будут передаваться в базу Akismet

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: