C#   Уроки программирования с нуля. Си-шарп для чайников   C#

Здравствуйте, гость!
Вход
Регистрация


Методы в Си-шарп. Разница между простыми и статическими
Метод – это небольшая подпрограмма, которая выполняет, в идеале, только одну функцию. Методы позволяют сократить объем кода.

Методы вместе с полями, являются основными членами класса.

Ранее, мы уже рассматривали методы в уроке Функции в Си-шарп, но сейчас мы рассмотрим их под другим углом.

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

Статический метод – это метод, который не имеет доступа к полям объекта, и для вызова такого метода не нужно создавать экземпляр (объект) класса, в котором он объявлен.

Простой метод – это метод, который имеет доступ к данным объекта, и его вызов выполняется через объект.

Простые методы служат для обработки внутренних данных объекта.

Приведу пример использования простого метода. Класс Телевизор, у него есть поле switchedOn, которое отображает состояние включен/выключен, и два метода – включение и выключение:

class TVSet
{
   private bool switchedOn;

   public void SwitchOn()
   {
     switchedOn = true;
   }
   public void SwitchOff()
   {
     switchedOn = false;
   }
}
class Program
{
   static void Main(string[] args)
   {
     TVSet myTV = new TVSet();
     myTV.SwitchOn(); // включаем телевизор, switchedOn = true;
     myTV.SwitchOff(); // выключаем телевизор, switchedOn = false;
   }
}

Чтобы вызвать простой метод, перед его именем, указывается имя объекта. Для вызова статического метода необходимо указывать имя класса.

Статические методы, обычно, выполняют какую-нибудь глобальную, общую функцию, обрабатывают «внешние данные». Например, сортировка массива, обработка строки, возведение числа в степень и другое.

Пример статического метода, который обрезает строку до указанной длины, и добавляет многоточие:

class StringHelper
{
   public static string TrimIt(string s, int max)
   {
     if (s == null)
       return string.Empty;
     if (s.Length <= max)
       return s;

     return s.Substring(0, max) + "...";
   }
}
class Program
{
   static void Main(string[] args)
   {
     string s = "Очень длинная строка, которую необходимо обрезать до указанной длины и добавить многоточие";
     Console.WriteLine(StringHelper.TrimIt(s, 20)); //"Очень длинная строка…"
     Console.ReadLine();
   }
}

Статический метод не имеет доступа к нестатическим полям класса:

class SomeClass
{
   private int a;
   private static int b;

   public static void SomeMethod()
   {
     a=5; // ошибка
     b=10; // допустимо
   }
}

Домашнее задание

Создайте класс Телевизор. В нем есть поле текущий канал. Предусмотрите в нем возможность переключения каналов: следующий канал, предыдущий канал, переход к каналу по номеру. Учтите, что канал не может иметь отрицательный номер.

PS. Не забываем подписываться на обновления по электронной почте в форме ниже!
Понравилась статья? Подпишись на рассылку и узнавай первым о новых уроках по почте!


Поделиться с друзьями:
26 июн 2013 01:11
Avadim 13 окт 2018 14:34

class Tv
{
private int currentchannel = 1;

public int NextChannel()
{
currentchannel += 1;
return currentchannel;
}
public int PreviousChannel()
{
if ((currentchannel - 1) > 0)
{
currentchannel -= 1;
}
return currentchannel;
}
public int ChannelByNumber( int number)
{
if (number > 0)
{
currentchannel = number;
}
return currentchannel;
}
}
class Program
{
static void Main(string[] args)
{
int channel = 5;
int currentchannel;

Tv myTv = new Tv();
currentchannel = myTv.NextChannel();
Console.WriteLine("Текущий канал: " + currentchannel);
currentchannel = myTv.PreviousChannel();
Console.WriteLine("Текущий канал: " + currentchannel);
currentchannel = myTv.ChannelByNumber(channel);
Console.WriteLine("Текущий канал: " + currentchannel);
Console.ReadKey();
}
}

dwebm@mail.ru 21 сен 2018 15:28
Задание

Сделал 3 канала. Можно переключать вперед/назад. Каналы циклично замкнуты - после третьего попадаем на первый, а до первого идет третий.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ConsoleApp13
{
class TV
{
public int currentChannel;

public int Now()
{
currentChannel = 2;
return currentChannel;
}

public int Back()
{
currentChannel-=1;
if (currentChannel < 1)
currentChannel = 3;
return currentChannel;
}
public int Next()
{
currentChannel++;
if (currentChannel >3)
currentChannel = 1;
return currentChannel;
}
}

class Program
{
public static void Main()
{
TV channel = new TV();
channel.Now();
Console.WriteLine($"Вы смотрите {channel.currentChannel} канал");
channel.Back();
Console.WriteLine($"Вы смотрите {channel.currentChannel} канал");
channel.Next();
Console.WriteLine($"Вы смотрите {channel.currentChannel} канал");
channel.Next();
Console.WriteLine($"Вы смотрите {channel.currentChannel} канал");
channel.Next();
Console.WriteLine($"Вы смотрите {channel.currentChannel} канал");
channel.Back();
Console.WriteLine($"Вы смотрите {channel.currentChannel} канал");
}
}
}

Andy 02 авг 2018 12:49

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ConsoleApp2
{
class TV
{
public static int a;
public static int SwitchUp()
{
a++;
if (a > 10)
a = 0;
return a;
}
public static int SwitchDown()
{
a--;
if (a < 0)
a = 10;
return a;
}
public static int SwitchSelect()
{
try
{
Console.WriteLine("input channel");
a = Convert.ToInt32(Console.ReadLine());
while (a < 0 || a > 10)
{
Console.WriteLine("Incorrect channel. Please correct:");
a = Convert.ToInt32(Console.ReadLine());
}
}
catch (FormatException)
{
Console.WriteLine("ERROR. Please, repeate: ");
Menu();
}
return a;
}
public static void Menu()
{
Console.WriteLine("+: Channel Up");
Console.WriteLine("-: Channel Down");
Console.WriteLine("*: Select Channel");
Console.WriteLine("/: Exit");
}


}
class Program
{
static void Main(string[] args)

{
TV.Menu();
int i =0;
string g = "null";
while (g != "/")
{
g = Convert.ToString(Console.ReadLine());
if (g == "+")
i = TV.SwitchUp();
else
if (g == "-")
i = TV.SwitchDown();
else
if (g == "*")
i = TV.SwitchSelect();
else
if (g != "/")
{
Console.WriteLine("Incorrect action");
TV.Menu();
}

Console.WriteLine("Current channel: "+i);
}

Console.WriteLine("Exit");
Console.ReadKey();



}





}
}


Lemon Party 18 июл 2018 08:41

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp28
{
interface ISwitchable
{
void ON();
void OFF();
}
class TV : ISwitchable
{
public void ON()
{
Console.WriteLine("Телевизор включен");
Console.WriteLine("Нажмите 1 для выхода");
int a = Convert.ToInt32(Console.ReadLine());
if(a == 1)
Environment.Exit(0);
}
public void OFF()
{
Console.WriteLine("Телевизор выключен");
Console.WriteLine("Нажмите 1 для выхода");
int a = Convert.ToInt32(Console.ReadLine());
if (a == 1)
Environment.Exit(0);
}
}
class Mobile: ISwitchable
{
public void ON()
{
Console.WriteLine("Смартфон включен");
Console.WriteLine("Нажмите 1 для выхода");
int a = Convert.ToInt32(Console.ReadLine());
if (a == 1)
Environment.Exit(0);
}
public void OFF()
{
Console.WriteLine("Смартфон выключен");
Console.WriteLine("Нажмите 1 для выхода");
int a = Convert.ToInt32(Console.ReadLine());
if (a == 1)
Environment.Exit(0);
}
}
class Program
{
static void Main(string[] args)
{
TV TV = new TV();
Mobile Mobile = new Mobile();
Console.WriteLine(" взаимодействовать с:\n1 - Телевизором\n2 - телефоном\n3 - выйти");
int OfforOn = Convert.ToInt32(Console.ReadLine());
Console.Clear();
while (true)
{
switch (OfforOn)
{
case 1:
Console.WriteLine("1 - Включить\n2 - выключить");
int TVOffORON = Convert.ToInt32(Console.ReadLine());
Console.Clear();
if (TVOffORON == 1) TV.ON();
else if (TVOffORON == 2) TV.OFF();
else Console.WriteLine("Ошибка, возможно, вы вели не сущестующую команду ");
break;
case 2:
Console.WriteLine("1 - Включить\n2 - выключить");
int MobileOFFORON = Convert.ToInt32(Console.ReadLine());
Console.Clear();
if (MobileOFFORON == 1) Mobile.ON();
if (MobileOFFORON == 3) return;
else if (MobileOFFORON == 2) Mobile.OFF();
else Console.WriteLine("Ошибка, возможно, вы вели не сущестующую команду ");
break;
case 3:
Environment.Exit(0);
break;




}



}


}
}
}


Lemon Party 16 июл 2018 15:33
Все я исправил
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp14
{
class TVset
{
public int kanal = 1;
public void nextprew()
{
if (kanal > 100)
kanal = 1;
kanal++;
Console.WriteLine("Канал - " + kanal);

}
public void backward()
{
if (kanal < 2)
kanal = 100;
kanal--;
Console.WriteLine("Канал - " + kanal);
}
public void perekl()
{
int a = Convert.ToInt32(Console.ReadLine());
kanal = a;

if (kanal > 100)
{
Console.WriteLine("Вы ввели несуществующий номер канала");
}
else

Console.WriteLine("Канал - " + kanal);
}
}
class Program
{
static void Main(string[] args)
{

TVset TV = new TVset();


Console.WriteLine("1 - переключение канала вперед" + "\n" + "2 - переключение канала назад" + "\n" + "3 - переключение на выбранный канал" + "\n" + "4 - выход ");

while (true)
{
int a = Convert.ToInt32(Console.ReadLine());
switch (a)
{

case 1:
TV.nextprew();
break;
case 2:
TV.backward();
break;
case 3:
Console.WriteLine("Введите нужный канал и если захотите опять быстро переключиться нажмите снова 3 ");

TV.perekl();
break;
case 4:
Environment.Exit(0);
break;
}
}
}
}
}

Lemon Party 14 июл 2018 21:22

В мой программе есть 1 недочет, и я хотел бы, чтобы мне помогли его решить. Дело в том, что быстрое переключение каналов и просто переключение каналов на следущий или предыдущий не связаны друг с другом. То есть, если сразу ввести,например , канал 46, а потом попробовать отпуститься на канал ниже, то это не получится, будет 99, а должно быть 45. Помогите , пожалуйста, разобраться



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp14
{
class TVset
{
public int kanal = 1;
public void nextprew()
{
if (kanal > 100)
kanal = 1;
kanal++;
Console.WriteLine("Канал - "+kanal);

}
public void backward()
{
if (kanal < 2)
kanal = 100;
kanal--;
Console.WriteLine("Канал - " + kanal);
}
public void perekl(int kanal)
{


if (kanal>100)
{
Console.WriteLine("Вы ввели несуществующий номер канала");
}
else

Console.WriteLine("Канал - " + kanal);
}
}
class Program
{
static void Main(string[] args)
{

TVset TV = new TVset();


Console.WriteLine("1 - переключение канала вперед" + "\n" + "2 - переключение канала назад" + "\n" + "3 - переключение на выбранный канал" + "\n"+"4 - выход ");

while (true)
{
int a = Convert.ToInt32(Console.ReadLine());
switch (a)
{

case 1:
TV.nextprew();
break;
case 2:
TV.backward();
break;
case 3:
Console.WriteLine("Введите нужный канал и если захотите опять быстро переключиться нажмите снова 3 ");
int b = Convert.ToInt32(Console.ReadLine());
TV.perekl(b);
break;
case 4:
Environment.Exit(0);
break;
}
}
}
}
}


Lemon Party 14 июл 2018 21:21
В моей программе есть 1 недочет, и я хотел бы, чтобы мне помогли его решить. Дело в том, что быстрое переключение каналов и просто переключение каналов на следущий или предыдущий не связаны друг с другом. То есть, если сразу ввести,например , канал 46, а потом попробовать отпуститься на канал ниже, то это не получится, будет 99, а должно быть 45. Помогите , пожалуйста, разобраться



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp14
{
class TVset
{
public int kanal = 1;
public void nextprew()
{
if (kanal > 100)
kanal = 1;
kanal++;
Console.WriteLine("Канал - "+kanal);

}
public void backward()
{
if (kanal < 2)
kanal = 100;
kanal--;
Console.WriteLine("Канал - " + kanal);
}
public void perekl(int kanal)
{


if (kanal>100)
{
Console.WriteLine("Вы ввели несуществующий номер канала");
}
else

Console.WriteLine("Канал - " + kanal);
}
}
class Program
{
static void Main(string[] args)
{

TVset TV = new TVset();


Console.WriteLine("1 - переключение канала вперед" + "\n" + "2 - переключение канала назад" + "\n" + "3 - переключение на выбранный канал" + "\n"+"4 - выход ");

while (true)
{
int a = Convert.ToInt32(Console.ReadLine());
switch (a)
{

case 1:
TV.nextprew();
break;
case 2:
TV.backward();
break;
case 3:
Console.WriteLine("Введите нужный канал и если захотите опять быстро переключиться нажмите снова 3 ");
int b = Convert.ToInt32(Console.ReadLine());
TV.perekl(b);
break;
case 4:
Environment.Exit(0);
break;
}
}
}
}
}

Карабас 01 фев 2018 06:40
//Немного поправил...
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("Введите одну из 3-х операций:\n 1) На канал выше;\n 2) На канал ниже \n 3) Ввод канала вручную");
string theNumberEnter = Console.ReadLine();
int theNumber;

if (int.TryParse(theNumberEnter, out theNumber))
{
if (theNumber > 0 && theNumber < 4)
{
if (theNumber == 1)
{
TVSet.ChPlus();
}
else if (theNumber == 2)
{
TVSet.ChMinus();
}
else if (theNumber == 3)
{
TVSet.ChEnter();
}
}
else
{
Console.WriteLine("\t Вы ввели число вне диапазона!");
}
}
else
{
Console.WriteLine("\t Вы ввели не число!");
}
}
}
}
public class TVSet
{
public static int Chanel = 0;
public static void ChPlus()
{
Chanel++;
if (Chanel > 199)
{
Chanel = 199;
}
Console.WriteLine("\t Номер канала " + Chanel);
}
public static void ChMinus()
{
if (Chanel > 0)

Chanel = Chanel - 1;
else
{
var a = Chanel == 0;
}
Console.WriteLine("\t Номер канала " + Chanel);
}
public static void ChEnter()
{
Console.WriteLine("введите номер канала !");
string theNumberEnter = Console.ReadLine();
// int theNumber;
if (int.TryParse(theNumberEnter, out int theNumber))
{
Chanel = theNumber;
if (Chanel> 199)
{
Chanel = 199;
}
else if (Chanel<0)
{
Chanel = 0;
}
}
else
{
Console.WriteLine("\t Вы ввели не число!");
}
Console.WriteLine("\t Номер канала "+ Chanel);
}
}

Карабас 12 янв 2018 06:48
class TVSet
{
private int ThisChannel;
public int Ch()
{
Console.Write("Номер канала - ");
ThisChannel = ThisChannel + 1;
return ThisChannel;
}
public int ChMinus()
{
Console.Write("Номер канала - ");
ThisChannel = ThisChannel - 1;
if (ThisChannel<0)
{
ThisChannel = 0;
}
return ThisChannel;
}
public int ChNumber()
{
Console.WriteLine("Введите Номер канала");
try
{
ThisChannel = Convert.ToInt32(Console.ReadLine());
Console.Write("Номер канала - ");
if (ThisChannel < 0)
{
ThisChannel = 0;
}
else if(ThisChannel > 199)
{
ThisChannel = 199;
}
}
catch (FormatException)
{
Console.WriteLine("Вы ввели не числовое значение!");
}
catch (Exception )
{
Console.WriteLine("Слишком много символов!");
}
return ThisChannel;
}
}

class Program
{
static void Main(string[] args)
{
{
TVSet myTV = new TVSet();
while (true)
{
Console.WriteLine("Введите операцию :");
Console.WriteLine("1 - На канал выше");
Console.WriteLine("2 - На канал ниже");
Console.WriteLine("3 - Выберите канал");
try
{
int a = Convert.ToInt32(Console.ReadLine());
if (a == 1)
{
Console.WriteLine(myTV.Ch());
}
else if (a == 2)
{
Console.WriteLine(myTV.ChMinus());
}
else if (a == 3)
{
Console.WriteLine(myTV.ChNumber());
}
else
{
Console.WriteLine("Вы выбрали операцию вне диапозона!");
}
}

catch (FormatException)
{
Console.WriteLine("Вы ввели не числовое значение!");
}
catch (Exception )
{
Console.WriteLine("Слишком много символов!");
}
}
}
}
}

Nekto 29 дек 2017 22:39
С бесконечным циклом

class TV
{
int CurrentCh=0;
public void NextCh()
{
CurrentCh++;
Console.WriteLine($"Current Channel: {CurrentCh}");
}
public void PrevCh()
{
CurrentCh--;
if (CurrentCh < 0)
Console.ReadKey();
Console.WriteLine($"Currect Channel: {CurrentCh}");
}
public void NumbCh(int n)
{
if (n <= 0)
Console.ReadKey();
Console.WriteLine($"Current Channel: {CurrentCh = n}");
}
}
static void Main(string[] args)
{
TV myTV = new TV();
while (true)
{
int func = int.Parse(Console.ReadLine());
if (func == -0)
break;
if (func == 1)
myTV.NextCh();
else if (func == -1)
myTV.PrevCh();
else
myTV.NumbCh(func);
}
Console.ReadKey();
}

Виктория 05 ноя 2017 18:26
Для переходов на предыдущий канал и следующий канал исключение делать было лень)

namespace ConsoleApplication15
{
class MeinTv
{
private int _tekTv;

public int TekTv
{
set
{
_tekTv = value;
}
get
{
return _tekTv;
}
}
public void NextTv()
{
this._tekTv ++;
}
public void PredTv()
{
this._tekTv --;
}
public void ViborTv(int vibor)
{
if (vibor < 0)
throw new Exception();
this._tekTv = vibor;
}
}

class Program
{
static void Main(string[] args)
{
int put;
int vibor;string end = "1";
MeinTv myTv = new MeinTv();
Random rand = new Random();
myTv.TekTv = rand.Next(1, 100);
Console.WriteLine(myTv.TekTv);
while (end != "0")
{
Console.WriteLine("Выберите путь:");
Console.WriteLine("0 - Переключить на следующий канал");
Console.WriteLine("1- Переключить на предыдущий канал");
Console.WriteLine("2- Переключить на заданный канал");
put = Convert.ToInt32(Console.ReadLine());

switch (put)
{
case 0:
myTv.NextTv();

break;

case 1:
myTv.PredTv();

break;

case 2:
Console.WriteLine("Введите канал, на который вы хотите переключить");
try
{
vibor = Convert.ToInt32(Console.ReadLine());
myTv.ViborTv(vibor);

}
catch(Exception)
{
Console.WriteLine("Отрицательного канала не существует");
}
break;
}
Console.WriteLine(myTv.TekTv);
Console.WriteLine("Для продолжения нажмите enter,для выхода 0");
end = Console.ReadLine();
}
}
}
}


Alexey 20 окт 2017 05:14
выкладываю повторно (дополнил и поправил пару мелких ошибок)

class tv{
internal ushort current_channel = 1;
private ushort channels = 500;

public void next_channel(){
if(current_channel != channels){
current_channel++;
}
else{current_channel = 1;}
}
public void prev_channel(){
current_channel = current_channel != 1 ? --current_channel : channels;
}
public void change_channel(ushort numb){
if (numb >= 1 && numb <= channels){
current_channel = numb;
}
}
}
class program{
static void Main(){
tv tv = new tv();
string comm = "";
do{
Console.WriteLine("задайте команду (prev, next or change)");
comm = Convert.ToString(Console.ReadLine());
switch (comm){
case "next":
tv.next_channel();
break;
case "prev":
tv.prev_channel();
break;
case "change":
Console.WriteLine("введите номер канала (от 1 до 500):");
ushort ch = Convert.ToUInt16(Console.ReadLine());
tv.change_channel(ch);
break;
}
Console.WriteLine(tv.current_channel);
}
while(comm != null);
}
}

Alex 10 окт 2017 16:58
Понимаю, что это уже не актуально, но скину свой консольный вариант.

using System;

namespace OOP1_TV
{
class TVSet
{
int _currentChannel;
bool _isOn;

public TVSet()
{
_currentChannel = 1;
TurnOn();
}

public bool IsWorking
{
get { return _isOn; }
}

public int CurrentChannel
{
get { return _currentChannel; }
}

public void TurnOff()
{
if (_isOn)
{
_isOn = false;
Console.WriteLine("TV has been switched off . . .");
}
else
Console.WriteLine("TV is already turned off!");
}

public void TurnOn()
{
if (!_isOn)
{
_isOn = true;
Console.WriteLine("TV has been switched on . . .");
}
else
Console.WriteLine("TV is already turned on!");
}

public void NextChannel()
{
if (_isOn)
_currentChannel++;
else
Console.WriteLine("TV is turned Off! Please, turn On it first!");
}

public void PreviousChannel()
{
if (_isOn)
if (_currentChannel - 1 > 0)
_currentChannel--;
else
Console.WriteLine("You cannot switch on negative channel!");
else
Console.WriteLine("TV is turned Off! Please, turn On it first!");
}

public void SwitchChannel(int channel)
{
if (_isOn)
if (channel > 0)
_currentChannel = channel;
else
Console.WriteLine("Wrong channel number!");
else
Console.WriteLine("TV is turned Off! Please, turn On it first!");
}

public override string ToString()
{
return (_isOn) ? $" Status: \"On\".\n Current channel: {_currentChannel}." : "Status: \"Off\".";
}
}

class Program
{
static void Main(string[] args)
{
Console.Title = "OOP TV Sample";

Console.WriteLine("\nLet's try it manually!\n");
bool itsTimeToExit = false;

TVSet tvset2 = new TVSet();
do
{
Console.WriteLine(tvset2 + Environment.NewLine);
Console.WriteLine("What you wanna do?\n Num6 = Switch On Next Channel\n " +
"Num4 = Switch On Previous Channel\n Num5 = Switch On Custom Channel\n " +
"Num0 = Turn Off TV\n Num1 = Turn On TV\n Esc = Exit" +
Environment.NewLine);

ConsoleKeyInfo _pressed = Console.ReadKey(false);
Console.Clear();

switch (_pressed.Key)
{
case ConsoleKey.NumPad6:
tvset2.NextChannel();
break;
case ConsoleKey.NumPad4:
tvset2.PreviousChannel();
break;
case ConsoleKey.NumPad0:
tvset2.TurnOff();
break;
case ConsoleKey.NumPad1:
tvset2.TurnOn();
break;
case ConsoleKey.NumPad5:
try
{
Console.Write("Enter your channel number: ");
int temp = Convert.ToInt32(Console.ReadLine());
tvset2.SwitchChannel(temp);
}
catch (Exception exc) { Console.WriteLine(exc.Message); }
break;
case ConsoleKey.Escape:
itsTimeToExit = true;
break;
default:
Console.WriteLine("I don't know this command, please try again!");
break;
}
} while (!itsTimeToExit);

Console.WriteLine(Environment.NewLine + "Press any key to continue . . .");
//Console.ReadKey();
}
}
}

Alexey 04 окт 2017 15:15

class tv{
private ushort current_channel = 1;
private ushort channels = 500;

public void next_chennel(){
if(current_channel != channels){
current_channel++;
}
else{current_channel = 1;}
}
public void prev_channel(){
current_channel = current_channel != 1 ? current_channel-- : channels;
}
public void change_channel(ushort numb){
if (numb >= 1 && numb <= channels){
current_channel = numb;
}
}
}

Кирюха 03 окт 2017 09:56

using System;
namespace Metodi
{
public class kanali
{ internal int n=50;
public void ChanelUp()
{ n=n+1;
Console.WriteLine (" Канал: "+n);
}
public void ChanelDown()
{
n=n-1;
Console.WriteLine (" Канал: "+n);
}
public int ChooseChanel()
{
n = Convert.ToInt32(Console.ReadLine());
return n;
}
public static void space_chanels(int c)// проверка диапазона вводимых каналов при помощи статичного метода
{
if (c < 0 || c > 100)
Console.WriteLine (" Вне диапазона каналов");
else
Console.WriteLine (" Текущий канал");
Console.WriteLine (c);
}
}
class programm
{
public static void Main (string[] args)
{ kanali ch= new kanali();
Console.WriteLine ("Канал по умолчанию: "+ch.n);
Console.WriteLine(" 1- ручной ввод каналов; \r\n 2- Переключние канала (+); \r\n 3- Переключние канала (-):" );
while (true)
{ try
{
switch (Convert.ToInt32 (Console.ReadLine ()))
{
case 1:
Console.WriteLine(" Выберите канал");
ch.ChooseChanel ();
kanali.space_chanels (ch.n);
break;
case 2:
ch.ChanelUp ();
kanali.space_chanels (ch.n);
break;
case 3:
ch.ChanelDown ();
kanali.space_chanels (ch.n);
break;
default:
Console.WriteLine (" Ошибка");
break;
}
}
catch (FormatException)
{
Console.Write (" Введен не верный формат данных");
}
}
}
}
}

Altum 10 сен 2017 23:26

namespace hometask_14_1
{
class TV
{
private int curCh;
private int plug = 1;
private int helpCh;
private string a;
private bool result;

public void switchCh()
{
do
{
Console.WriteLine("Choose a channel: ");
try
{
curCh = Convert.ToInt32(Console.ReadLine());
if (curCh > 0)
{
result = true;
}
else
{
Console.WriteLine("input error\nchannel can be only above zero");
result = false;
}
}
catch (FormatException)
{
Console.WriteLine("input error\nonly numbers avaliable");
result = false;
}
}
while (result == false);
Console.WriteLine("Current channel: " + curCh);
Console.Write("\nNext channel - press w \nPrevious channel - press q \nChoose channel - press e \nTurn off TV - press r\n\n");
do
{
a = Convert.ToString(Console.ReadLine().ToLower());
if (a == "w")
{
curCh += 1;
Console.WriteLine("Current channel: " + curCh);
}
else if (a == "q")
{
curCh -= 1;
if (curCh > 0)
{
curCh = curCh;
}
else
{
Console.WriteLine("input error\nchannel can be only above zero");
curCh += 1;
}
Console.WriteLine("Current channel: " + curCh);
}
else if (a == "e")
{
try
{
Console.Write("enter a number: ");
helpCh = Convert.ToInt32(Console.ReadLine());
if (helpCh > 0)
{
curCh = helpCh;
}
else
{
Console.WriteLine("input error\nchannel can be only above zero");
}
}
catch (FormatException)
{
Console.WriteLine("!input error!");
}
Console.WriteLine("Current channel: " + curCh);
}
else if (a == "r")
{
Console.WriteLine("TV turned off");
plug = 0;
}
else
{
Console.WriteLine("!input error!");
Console.WriteLine("Current channel: " + curCh);
}
}
while (plug != 0);
}
}
class Program
{
static void Main(string[] args)
{
TV myTV = new TV();
myTV.switchCh();
Console.ReadKey();
}
}
}

Clrscr 01 сен 2017 16:15
Можно все и в один класс запихать, разбивать особо не вижу смысла:

class Televisor
{
//public static string Channow;
static void Main(string[] args)
{
int z;
int n = 0;
int h = 0;
List<string> chan = new List<string>() { "MTV", "Ort", "RTR", "NTV", "TVC", "STS", "TNT", "Zvezda", "DTV" };
//Channow = chan[h];
Console.WriteLine("Пожалуйста выберите пункт меню:" + "\r\n" + "1.Узнать текущий канал" + "\r\n" + "2.Следующий канал" + "\r\n" + "3.Предыдущий канал" + "\r\n" + "4.Ввести номер нужного канала" + "\r\n" + "5.Выход" + "\r\n" + "0.Очистить экран" + "\r\n" + "Enter.Повторить последнюю операцию");
do
{
try
{
n = Convert.ToInt16(Console.ReadLine());
}
catch (FormatException)
{
//Console.WriteLine("Вы ничего не ввели!");
//Console.ReadKey();
}
switch (n)
{
case 0:
Console.Clear();
Console.WriteLine("Пожалуйста выберите пункт меню:" + "\r\n" + "1.Узнать текущий канал" + "\r\n" + "2.Следующий канал" + "\r\n" + "3.Предыдущий канал" + "\r\n" + "4.Ввести номер нужного канала" + "\r\n" + "5.Выход" + "\r\n" + "0.Очистить экран"+"\r\n" + "Enter.Повторить последнюю операцию");
break;
case 1:
Console.WriteLine("Вы смотрите" + " " + chan[h]);
break;
case 2:
z = chan.Count-1;
if (h == z)
Console.WriteLine("Набранный канал не существует!");
else
Console.WriteLine("Вы смотрите" + " " + chan[++h]);
break;
case 3:
if (h <= 0)
Console.WriteLine("Набранный канал не существует!");
else
Console.WriteLine("Вы смотрите" + " " + chan[--h]);
break;
case 4:
Console.WriteLine("Введите номер канала:");
try
{
h = Convert.ToInt16(Console.ReadLine());
}
catch (FormatException)
{

}
//h = Convert.ToInt16(Console.ReadLine());
if (h < 0 || h >= chan.Count)
Console.WriteLine("Набранный канал не существует!");
else
Console.WriteLine("Вы смотрите" + " " + chan[h]);
break;
case 5:
Console.WriteLine("До свидания!");
Console.ReadKey();
break;
default:
Console.WriteLine("Данного пункта не существует!");
break;
}
//Console.ReadKey();
}
while (n != 5);
}

}

Maks 29 авг 2017 15:27
не проще так все сделать ?

class myTV
{
public static int CurrentChaneel = 1;
public static string Who;
public static string Quit;
public void ChaneelUp()
{
if (CurrentChaneel < 20)
CurrentChaneel++;
else
CurrentChaneel = 1;
}
public void ChaneelDown()
{
if (CurrentChaneel > 1)
CurrentChaneel--;
else
CurrentChaneel = 20;
}
}
class Program : myTV
{
static void Main(string[] args)
{
Console.WriteLine(" + (вверх) | - (вниз)");
myTV Up = new myTV();
myTV Down = new myTV();
do
{
Console.WriteLine("Текущий Канал : {0}", CurrentChaneel);
Who = Console.ReadLine();
switch (Who)
{
case "+":
Up.ChaneelUp();
break;
case "-":
Down.ChaneelDown();
break;
case "Quit":
Quit = "Quit";
break;
}
}
while (Who != Quit);
{

}
}

}

Александр 20 авг 2017 08:31
Немного переделал код. Теперь всё в цикле, спасибо людям в комментариях
за помощь )

using System;
using System.Windows;

namespace Lesson14_1
{
class TV
{
public int chanel;
public void TvUp(string a)
{
if (a == "UP")
chanel += 1;
}
public void TvDown(string b)
{
if (b == "DOWN")
chanel -= 1;
}
public void TvGo(int c, int d)
{
if (c < d || c > d)
chanel = d;
else if (c == d)
chanel = c;
}
}

class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("Выберите нужный вам канал");
TV tv = new TV();
string read;
try
{
tv.chanel = Convert.ToInt32(Console.ReadLine());
}
catch (Exception)
{
Console.WriteLine("Нужно ввести цифру канала!");
tv.chanel = Convert.ToInt32(Console.ReadLine());
}
if (tv.chanel < 0)
{
Console.WriteLine("Канал не может быть отрицательным! Введите канал корректно");
tv.chanel = Convert.ToInt32(Console.ReadLine());
}

do {
Console.WriteLine("Введите Up, если хотите переключить канал вперёд");
Console.WriteLine("Введите Down, если хотите перключить канал назад");
Console.WriteLine("Введите Go, есдли хотите выбрать определённый канал");
Console.WriteLine("Введите Off, если хотите выключить телевизор");
try
{
read = Convert.ToString(Console.ReadLine().ToUpper());
}
catch (FormatException)
{
Console.WriteLine("Нужно ввести одну из вышеуказанных команд");
read = Convert.ToString(Console.ReadLine().ToUpper());
}
if (read == "UP")
{
tv.TvUp(read);
Console.WriteLine("Теперь вы на " + tv.chanel + "-ом канале");
}
else if (read == "DOWN")
{
tv.TvDown(read);
Console.WriteLine("Теперь вы на " + tv.chanel + "-ом канале");
}
else if (read == "GO")
{
Console.WriteLine("Выберите канал, на который хотите переключиться");
int b = Convert.ToInt32(Console.ReadLine());
if (b < 0)
{
Console.WriteLine("Канал не может быть отрицательным! Введите канал корректно");
b = Convert.ToInt32(Console.ReadLine());
}
tv.TvGo(tv.chanel, b);
Console.WriteLine("Теперь вы на " + tv.chanel + "-ом" +
" канале");
}
}
while (read != "OFF");
Console.WriteLine("Телевизор выключен.");
Console.ReadKey();
}
}
}


Александр 19 авг 2017 21:45
Я пока только начинаю во всё это вникать, поэтому всё вот так простенько )

//Xamarin Stidio
using System;
using System.Windows;

namespace Lesson14_1
{
class TV
{
public int chanel;
public void TvUp(string a)
{
if (a == "Up")
chanel += 1;
}
public void TvDown(string b)
{
if (b == "Down")
chanel -= 1;
}
public void TvGo(int c, int d)
{
if (c < d || c > d)
chanel = d;
else if (c == d)
chanel = c;
}
}

class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("Выберите нужный вам канал");
TV tv = new TV();
int a = Convert.ToInt32(Console.ReadLine());
if (a < 0)
{
Console.WriteLine("Канал не может быть отрицательным! Введите канал корректно");
a = Convert.ToInt32(Console.ReadLine());
}
tv.chanel = a;
Console.WriteLine("Введите Up, если хотите переключить канал вперёд");
Console.WriteLine("Введите Down, если хотите перключить канал назад");
Console.WriteLine("Введите Go, есдли хотите выбрать определённый канал");
string read = Convert.ToString(Console.ReadLine());
if (read == "Up")
{
tv.TvUp(read);
Console.WriteLine("Теперь вы на " + tv.chanel + "-ом канале");
}
else if (read == "Down")
{
tv.TvDown(read);
Console.WriteLine("Теперь вы на " + tv.chanel + "-ом канале");
}
else if (read == "Go")
{
Console.WriteLine("Выберите канал, на который хотите переключиться");
int b = Convert.ToInt32(Console.ReadLine());
if (b < 0)
{
Console.WriteLine("Канал не может быть отрицательным! Введите канал корректно");
b = Convert.ToInt32(Console.ReadLine());
}
tv.TvGo(a, b);
Console.WriteLine("Теперь вы на " + tv.chanel + "-ом" +
" канале");
}
Console.ReadKey();


}
}
}


Vanobas 07 авг 2017 11:27

namespace Classes
{
class Program
{
static void Main(string[] args)
{
TVPult MyTV = new TVPult();

Console.WriteLine("NumPad8 - Следующий канал.\nNumPad2 - Предыдущий канал.\nBackspace - указать канал вручную.\nА теперь, сделайте хоть что нибудь!");

do
{

ConsoleKeyInfo Pressed = Console.ReadKey();

if (Pressed.Key == ConsoleKey.NumPad8)
{
MyTV.NextChannel();
}
if (Pressed.Key == ConsoleKey.NumPad2)
{
MyTV.PrevChannel();
}
if (Pressed.Key == ConsoleKey.Backspace)
{
Console.WriteLine("\nУкажите номер канала");
MyTV.SetChannel(Console.ReadLine());
}

}
while (MyTV.CurrentChannel > -1);
}
}

class TVPult
{
public int CurrentChannel = 1;

public void NextChannel()
{
CurrentChannel += 1;
Console.WriteLine("\nТекущий канал: " + CurrentChannel);

if (CurrentChannel == 69)
{
Console.WriteLine("\nПоздравляю, Вы нашли порно-канал!");
}
}

public void PrevChannel()
{
if (CurrentChannel > 1)
{
CurrentChannel -= 1;
Console.WriteLine("\nТекущий канал: " + CurrentChannel);

if (CurrentChannel == 69)
{
Console.WriteLine("\nПоздравляю, Вы нашли порно-канал!");
}
}
else
{
Console.WriteLine("\nALARM!!!");
}
}

public void SetChannel(string ch)
{
int channel = Convert.ToInt32(ch);

if (channel >= 0)
{
CurrentChannel = channel;
Console.WriteLine("\nТекущий канал: " + CurrentChannel);

if (CurrentChannel == 69)
{
Console.WriteLine("\nПоздравляю, Вы нашли порно-канал, где карлики сношаются с крокодилами, обмазавшись кепчуком!");
}
}
else
{
Console.WriteLine("\nALARM!!!");
}
}
}
}

Евгений 24 июн 2017 14:53
class TVpanel
{
public int currenCanal;
public void CanalSwitch(int a)
{
currenCanal = a;
}
public void CanalUp()
{
if (currenCanal < 200)
currenCanal++;
}
public void CanalDown()
{
if (currenCanal > 0)
currenCanal--;
}


}
class Program
{
static void Main(string[] args)
{
TVpanel Samsung = new TVpanel();
Samsung.CanalSwitch(0);
Samsung.CanalDown();
Console.WriteLine(Samsung.currenCanal);
Console.ReadKey();
}
}

ХПИ 17 июн 2017 17:25
Поправил немного

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace train
{
class TV
{
public int CurrentC = 1;
public int Control(int userC)
{
if (userC == 1)
{
CurrentC = CurrentC + 1;

}
else if (userC == 2)
{
CurrentC -= 1;

}
else if (userC == 3)
{
Console.Write("Введите номер: ");
CurrentC = Convert.ToInt32(Console.ReadLine());
}
if (CurrentC > 0)
{
Console.Write("Текущий канал: ");
}
else
{
Console.Write("Канал не может быть нулевым, или отрицательным\n\n");
System.Environment.Exit(4);
}
return CurrentC;
}
}

class Program
{
static void Main(string[] args)
{
TV samsung = new TV();
int userC = 0;
Console.Write("Доступные действия: \n 1)Следующий канал \n 2)Предыдущий канал \n 3)Переход к каналу по номеру\n 4)Выключить телевизор \n\n");
Console.WriteLine("Текущий канал: 1\n");
while (userC != 4)
{
Console.Write("\nВвод: ");
userC = Convert.ToInt32(Console.ReadLine());
if (userC != 4 && userC > 0 && userC < 5)
Console.WriteLine(samsung.Control(userC));
else if (userC == 4)
Console.Write("Телевизор выключен\n\n");
else
Console.Write("Введите число от 1 до 4!\n");
}
}
}
}

ХПИ 17 июн 2017 16:57

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace train
{
class TV
{
public int CurrentC=1;
public int Control(int userC)
{
if (userC == 1)
{
CurrentC = CurrentC + 1;
Console.Write("Текущий канал: ");
}
else if (userC == 2)
{
CurrentC -= 1;
Console.Write("Текущий канал: ");
}
else if (userC == 3)
{
Console.Write("Введите номер: ");
CurrentC = Convert.ToInt32(Console.ReadLine());
Console.Write("Текущий канал: ");
}
return CurrentC;
}
}

class Program
{
static void Main(string[] args)
{
TV samsung = new TV();
int userC = 0;
Console.Write("Доступные действия: \n 1)Следующий канал \n 2)Предыдущий канал \n 3)Переход к каналу по номеру\n 4)Выключить телевизор \n\n");
Console.WriteLine("Текущий канал: 1\n");
while (userC != 4)
{
Console.Write("\nВвод: ");
userC = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(samsung.Control(userC));
}
Console.Write("Телевизор выключен");
}
}
}

Иван 23 май 2017 12:19

namespace My_C //Програма для імітації переключення каналів
{
class TV
{
private uint CurChenn;
public void Start()
{
uint chennel = 0;
bool isTVworking = true;
ShowMessage("Нажмите плюс или минус для повішения номера канала или введите номер канала");
while (isTVworking == true)
{
string reg = Console.ReadLine();
bool result = UInt32.TryParse(reg, out chennel); //ловимо числові ссимволи
if (reg == "+")
{
ChenPlus();
}
else if (reg == "-")
{
ChenMinus();
}
if ((chennel >= 0 && chennel < 1000) && (result)) //канали можуть бути від 0 до 1000
{
SetChen(chennel);
}
else if ((reg!="+"&&reg!="-")&&(result==false)||(CurChenn>1000)) //ловимо вхідні символи які не являються числами
{
ShowMessage("Error");
isTVworking = false;
}
}
Console.ReadKey();
}
private void ShowMessage(string message)
{
Console.WriteLine(message);
}
public void ChenPlus()
{
if (CurChenn <= 1000)
{
CurChenn += 1;
ShowMessage("Канал переключен. Текущий канал " + CurChenn);
}
}
public void ChenMinus()
{
if (CurChenn > 0)
{
CurChenn -= 1;
ShowMessage("Канал переключен. Текущий канал " + CurChenn);
}
}
public void SetChen(uint ch)
{
if (ch >= 0 || ch <= 1000)
{
CurChenn = ch;
ShowMessage("Канал переключен. Текущий канал " + CurChenn);
}
}
}
class Program
{
static void Main(string[] args)
{
TV Remout1 = new TV();
Remout1.Start();
}
}
}

lax33 12 апр 2017 15:28

class Televiz
{
internal static uint chanal;

internal static void switchchenal(uint a) //Функция переключения канала
{
chanal = a;
return;
}
}


class Program
{
static void Main(string[] args)
{
uint ch = 5; //Текущий канал
Console.WriteLine("Текущий номер канала - {0}", ch);
try
{
Console.WriteLine("Ввод номера канала (0) или перебор (1)?");
uint reg = Convert.ToUInt32(Console.ReadLine()); //Выбор режима переключения каналов
if (reg == 0)
{
Console.Write("Введите номер канала - ");
ch = Convert.ToUInt32(Console.ReadLine());
Televiz.switchchenal(ch);
Console.WriteLine("Номер канала - {0}", Televiz.chanal);
}

if (reg == 1)
{
char w = 'w';
char q = 'q';
Console.WriteLine("изменение номера канала в строну УВЕЛИЧЕНИЯ нажать W");
Console.WriteLine("изменение номера канала в строну УМЕНЬШЕНИЯ нажать q");

char vvod = (char) Console.Read();

if (w == vvod)
{
// uint a = ch + 1;
Televiz.switchchenal(++ch);
Console.WriteLine("Номер канала - {0}", Televiz.chanal);
}

if (q == vvod)
{
//uint a = ch - 1;
Televiz.switchchenal(ch-- );
Console.WriteLine("Номер канала - {0}", Televiz.chanal);
}
}



if (reg != 0 && reg != 1)
{
Console.WriteLine("Не выбрано 0 или 1");
}

}

catch(Exception)
{
Console.WriteLine(" Не верный формат данных!");
}


Console.ReadKey();

Сергей 21 мар 2017 10:06
Вот моя версия пульта

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace Files
{
class TVset
{
private int Channel=1, MaxChannel=100;

public void UpChannel()
{
if (Channel >= MaxChannel) Channel = 1;
else Channel++;
}
public void DownChannel()
{
if (Channel <= 1) Channel = MaxChannel;
else Channel--;
}
public void SetChannel(int i)
{
if (i < 1 || i > 100) Channel = 100;
else Channel = i;
}
public int GetChannel()
{ return Channel; }
}

class Program
{
static void Main(string[] args)
{
TVset TV1 = new TVset();
Console.WriteLine("Кнопки управления:\r\n 1 +1 канал;\r\n 2 -1 канал;\r\n 3 ручной выбор канала;\r\n 4 выключение телевизора\r\n");
while (true)
{
switch (Convert.ToInt32(Console.ReadLine()))
{
case 1:
TV1.UpChannel();
break;
case 2:
TV1.DownChannel();
break;
case 3:
Console.Clear();
TV1.SetChannel(Convert.ToInt32(Console.ReadLine()));
break;
case 4:
return;
break;
default:

break;
}
Console.Clear();
Console.WriteLine(TV1.GetChannel());
}
}
}
}

Игорь 26 янв 2017 15:52

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class TVSet
{
public uint Channel = 1;
public void Up()
{
Channel++;
}
public void Down()
{
Channel -= 1;
}
public void Choose(uint x)
{
Channel = x;
}
}
class Program
{
static void Main(string[] args)
{
TVSet myTV = new TVSet();

while(true)
{
if (myTV.Channel == 4294967295)
{ myTV.Channel = 100; }

Console.WriteLine("Канал " + myTV.Channel);
Console.WriteLine("Press +/-/Enter a number");
string f = Console.ReadLine();
switch (f)
{
case "+":
myTV.Up();
break;
case "-":
myTV.Down();
break;
default:
try
{
uint chan = Convert.ToUInt32(f);
if (chan < 101)
{
myTV.Choose(chan);
}
else
{
Console.WriteLine("Error");
break;
}

}
catch
{
Console.WriteLine("Error");
break;
}
break;
}

}
}
}
}



mihpir889 08 янв 2017 10:39

class Tv
{
public int ChanelNow = 0;

public void NextChanel()
{
if (ChanelNow < 100)
ChanelNow++;
else
Console.WriteLine("Error");
}



public void PrevChanel()
{
if (ChanelNow>0)
ChanelNow--;
else
Console.WriteLine("Error");
}
public void GoToChanel(int num)
{
if (num < 0 && num>100)
Console.WriteLine("Error");
else
{
ChanelNow = num;
}

}
}



class Program
{
static void Main(string[] args)
{
Tv TvName = new Tv();

TvName.NextChanel();//след канал
TvName.PrevChanel();//пред канал

int num = Convert.ToInt32(Console.ReadLine());
TvName.GoToChanel(num);//переход на канал

Console.WriteLine(TvName.ChanelNow);
Console.ReadKey();

}

}


Andrey 07 янв 2017 10:30

static void Main(string[] args)
{
Televizor TV1 = new Televizor();
Console.WriteLine("Включили телевизор! Текущий канал-<"+TV1.Canal_name_function(1)+">");
int Canal_number=1,Action=0;
do
{
Console.WriteLine("Выберите действие! 1-Предыдущий канал,2-Следующий канал,3-Ручное переключение,4-Выключение телевизора");
Action = Convert.ToInt32(Console.ReadLine());
switch (Action)
{
case 1:
Canal_number--;
Canal_number=TV1.Canal_previos_function(Canal_number);
Console.WriteLine(TV1.Canal_name_function(Canal_number));
break;
case 2:
Canal_number++;
Canal_number=TV1.Canal_next_function(Canal_number);
Console.WriteLine(TV1.Canal_name_function(Canal_number));
break;
case 3:
Console.WriteLine("Введите номер канала:");
Canal_number = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(TV1.Canal_name_function(Canal_number));
break;
case 4:
break;
default:
Canal_number = 3;
break;
}
} while (Action!=4);
Console.WriteLine("Выключаюсь! Нажмите любую клавишу!");
Console.ReadKey();
}

class Televizor
{ public int Canal;
public string Canal_name_function(int Canal)
{
string Canal_name="Канал "+Canal;
return Canal_name;
}
public int Canal_next_function(int Canal)
{
if (Canal>100)
{
Canal = 1;
}
return Canal;
}
public int Canal_previos_function(int Canal)
{
if (Canal<1)
{
Canal = 100;
}
return Canal;
}
}

Valeriy 04 ноя 2016 10:00

namespace Телевизор1
{
public class TV
{
internal int channelNow;

//если канал дошёл до максимального = 100, то переключается на 1 канал;
public int ChannelChangedNext(int number)
{
if (number == 101) number = 1;
return number;
}

//если канал дошёл до минимального = 1, то дальше переключается на 101 канал;
public int ChannelChangedPrevious(int number1)
{
if (number1 == 0)
number1 = 100;
return number1;
}

public void SelectChannel(int num)
{
if (num <= 0 || num>100) Console.WriteLine("Введите номер канала 1-100");
else channelNow = num;
}

public void NextChannel()
{
channelNow += 1;
}

public void PreviousChannel()
{
channelNow -= 1;
}
}

class Program
{
static void Main(string[] args)
{
TV tvSet = new TV();
tvSet.channelNow = 1;
int ChooseChannelNum = tvSet.channelNow;

int SelectAct = 1;

//выбор действия на пульте
Start:
Console.WriteLine("Текущий канал: " + tvSet.channelNow);
Console.WriteLine("Выберите действие: \n1-Следующий канал \n2-Предыдущий канал \n3-Выбрать канал \n4-Выход");

if (!Int32.TryParse(Console.ReadLine(), out SelectAct))
{
Console.WriteLine("Недопустимый ввод");
Console.WriteLine(); //отступ
goto Start;
}

Console.WriteLine();//отступы

switch (SelectAct)
{
case 1:
Console.WriteLine("Переход на следующий канал ");
tvSet.NextChannel();
tvSet.channelNow = tvSet.ChannelChangedNext(tvSet.channelNow);
break;
case 2:
Console.WriteLine("Переход на предыдущий канал ");
tvSet.PreviousChannel();
tvSet.channelNow = tvSet.ChannelChangedPrevious(tvSet.channelNow);
break;
case 3:
Console.WriteLine("Введите номер канала: ");
try { tvSet.SelectChannel(Convert.ToInt32(Console.ReadLine())); }
catch
{
Console.WriteLine("Ошибка ввода");
}
break;
case 4:
goto Finish;

default:
Console.WriteLine("Ошибка. Введите номер действия (1-4)");
break;
}
Console.WriteLine(); //отступ
goto Start;

Finish:
Console.WriteLine();
}
}
}

GoodFellow23 02 ноя 2016 18:33
Добрый день.
Максим подскажите: среда VS выдает ошибку во втором примере и подсказывает что в строке Console.WriteLine(StringHelper.TrimIt(s, 20)) в скобках должно быть значение (string, int).
Но не понятно почему, ведь string s = "очень..." и int 20.
Спасибо.
class StringHelper
{
public static string TrimIt(string s, int max)
{
if (s == null)
return string.Empty;
if (s.Length <= max)
return s;

return s.Substring(0, max) + "...";
}
}
class Program
{
static void Main(string[] args)
{
string s = "Очень длинная строка, которую необходимо обрезать до указанной длины и добавить многоточие";
Console.WriteLine(StringHelper.TrimIt(s, 20)); //"Очень длинная строка…"
Console.ReadLine();
}
}

Афанасий 10 окт 2016 13:05

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApplication2
{
//начало классов
public class Tv //без указания модификатор доступа, класс будет internal
{
public int Channel = 0;
}

//конец классов

class Program
{
static void Main(string[] args)
{
Tv StatusChannel = new Tv();
while (true)
{

while(true)
{
Console.WriteLine("Status Channel " + StatusChannel.Channel);
string NextChannel = Console.ReadLine();
if(NextChannel== "+")
{
StatusChannel.Channel = StatusChannel.Channel + 1;
break;
}


if(NextChannel == "-")
{
if (StatusChannel.Channel - 1 < 0)
Console.WriteLine("Error канал не может быть отритцательным");
else
StatusChannel.Channel = StatusChannel.Channel - 1;
break;
}

if (NextChannel == "OFF")
{

return;
}

int NextChannelint = Convert.ToInt32(NextChannel);
if (NextChannelint >= 0)
StatusChannel.Channel = NextChannelint;
else
Console.WriteLine("Error произвольный канал не может быть меньше нуля");
}


}
}

}
}



Влад 07 окт 2016 16:30

namespace MyFirtsProgramm
{
class TvSet
{
private int ChanelNow;

public void NextChanel()
{
ChanelNow += 1;
Console.WriteLine("Вы переключились на следующий канал");
}
public void PrevChanel()
{
ChanelNow -= 1;
Console.WriteLine("Вы переключились на предыдущий канал");
}
public void GoToChanel(int num)
{
if (num < 1)
{
Console.WriteLine("Ошибка");
}
else
{
ChanelNow = num;
Console.WriteLine("Вы переключились на " + num + " канал");
}

}
}
class Program
{
static void Main(string[] args)
{
TvSet TvName = new TvSet();
TvName.NextChanel();
TvName.PrevChanel();

int num = Convert.ToInt32(Console.ReadLine());

TvName.GoToChanel(num);
Console.ReadKey();

}

}

Юрец 05 окт 2016 00:59

namespace tvClass
{
class myTV
{
public int firstChannale = 1;
public int CurChannale;

public int upChannale()// метод увеличения канала на 1
{
firstChannale++;
return firstChannale;
}

public int downChannale()// метод уменьшения канала на 1
{
CurChannale--;
if (CurChannale < 0)// проверка, канал не может быть меньше ноля
{
Console.WriteLine("Канал должен быть больше нуля");
CurChannale++;
}
return CurChannale;
}

public int channeleSelection(int chsec)// метод присвоение канала
{
if ( chsec > 0)// проверка, канал не может быть меньше ноля
CurChannale = chsec;
else
Console.WriteLine("Канал должен быть больше нуля");
return CurChannale;
}

}

class Program
{
static void Main(string[] args)
{
int up, down, swith;
string vibor;
myTV kanal = new myTV();
Console.WriteLine("Телевизор включен на канале {0}", kanal.firstChannale);// первый канал

Console.WriteLine("Введите на какой канал переключить (конкретный канал, + или -)");
vibor = Console.ReadLine();

switch(vibor)
{
case "+":
kanal.CurChannale = kanal.upChannale();
break;

case "-":
kanal.CurChannale = kanal.downChannale();
break;

default:
kanal.channeleSelection(Int32.Parse(vibor));
break;
}

Console.WriteLine("Сейчас показывает {0} - й канал", kanal.CurChannale);



Console.ReadKey();
}
}
}

Yuri 25 авг 2016 11:00

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

class TVSet
{
private int CurrentChannel;
private const int MaxChannel = 40;
private const int MinChannel = 1;

public TVSet()
{
CurrentChannel = MinChannel;
}

public TVSet(int Ch)
{
SwitchChannel(Ch);
}

public int ShowChannel()
{
return CurrentChannel;
}

public void SwitchChannel(bool Ch)
{
if (CurrentChannel == MinChannel && Ch == false)
CurrentChannel = MaxChannel;
else if (CurrentChannel == MaxChannel && Ch == true)
CurrentChannel = MinChannel;
else
CurrentChannel += Ch == true ? 1 : -1;
}

public void SwitchChannel(int Ch)
{
if (Ch > MaxChannel || Ch < MinChannel)
return;
else
CurrentChannel = Ch;
}
}

namespace ConsoleApplication1
{

class Program
{
static void Main(string[] args)
{
TVSet TV = new TVSet(5);

do
{
Console.WriteLine(TV.ShowChannel());
Console.WriteLine("Change the channel: +/-, a number between 1 and 40 or type \"exit\":");
string choice = Console.ReadLine();
if (choice.Equals("+"))
TV.SwitchChannel(true);
else if (choice.Equals("-"))
TV.SwitchChannel(false);
else if (choice.Equals("exit"))
return;
else
{
try
{
TV.SwitchChannel(Convert.ToInt32(choice));
}
catch (FormatException obj)
{
Console.WriteLine(obj.ToString());
}
}
} while (true);
}
}
}

Ярослав 07 июн 2016 15:56

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LessionClass
{
class myTV
{
private static int curChannel = 1;
private int numChannel;

private void NextChannel()
{
curChannel += 1;
}

private void PrevChannel()
{
if (curChannel == 1)
{
curChannel = 1;
}
else
{
curChannel -= 1;
}
}

private void ToChannel(int numChannel)
{
curChannel = numChannel;
}


public string SwitchedChannel(string action)
{
try
{
numChannel = Convert.ToInt32(action);
if (numChannel < 1)
{
return "Такого канала не существует";
}

this.ToChannel(numChannel);
return "Teкущий канал " + curChannel.ToString();

}
catch (FormatException)
{
switch(action)
{
case "next":
this.NextChannel();
break;
case "prev":
this.PrevChannel();
break;
default:
return "Не верная команда";
}
return "Teкущий канал " + curChannel.ToString();
}
}
}
class Program
{
static void Main(string[] args)
{
string command = "";
string result = "";
Console.WriteLine("Добро пожаловать в интерфейс управления телевизором");
Console.WriteLine("для переключения каналов используйте команды prev и next");
Console.WriteLine("либо введите номер канала для быстрого перехода. Для выхода напишите exit");
do
{
Console.Write("Введите команду: ");
command = Console.ReadLine();
if (command == "exit")
{
Console.WriteLine("До свидания");
Console.ReadKey();
break;
}
else
{
myTV device = new myTV();
result = device.SwitchedChannel(command);
Console.WriteLine(result);
}
}
while (true);
}
}
}


Александр Михалев 29 апр 2016 13:33

class TV
{
internal static int chanel = 1; // переменная 'канал' которой присвоено начальное значение 1.

public void next() // переход канала на 1 вперед
{
chanel += 1;
Console.WriteLine("Канал был переключен! Текущий номер канала: '" + chanel + "'");
Console.WriteLine("Для продолжения нажмите любую клавишу");
}
public void back() // переход канала на 1 назад
{
chanel -= 1;
if (chanel < 1)
Console.WriteLine("Такого канала не существует!");
else
Console.WriteLine("Канал был переключен! Текущий номер канала: '" + chanel + "'");
Console.WriteLine("Для продолжения нажмите любую клавишу");
}
public void FindChanel(int find) // функция с аргументом, который считывает в себя данные введенные с клавиатуры пользователем
{
chanel = find; // присваиваем каналу значение поля введеного пользователем
if (chanel < 1)
Console.WriteLine("Такого канала не существует!");
else
Console.WriteLine("Канал был переключен! Текущий номер канала: '" + chanel + "'");
Console.WriteLine("Для продолжения нажмите любую клавишу");
}
}
class Program
{
static void Main(string[] args)
{
int vib, find, menu = 1;
TV MyTV = new TV(); // создание обьекта класса
do // цикл для повторных выполнений меню в случае неудачного ввода
{
Console.WriteLine("Выберите действия.. \n (1) Переключить канал вперед\n (2) Переключить канал назад\n (3) Ввести номер канала вручную\n (4) Выйти из программы");
try
{
Console.Write("Вы ввели: ");
vib = Convert.ToInt32(Console.ReadLine());
if (vib < 1 || vib > 4)
Console.WriteLine("Ошибка! Введенные данные не корректны! Попробуйте еще раз!");
switch (vib) // условный оператор
{
case 1:
MyTV.next();
break;
case 2:
MyTV.back();
break;
case 3:
Console.WriteLine("Введите нужный канал..");
find = Convert.ToInt32(Console.ReadLine());
MyTV.FindChanel(find);
break;
case 4:
menu = 0;
break;

}
}
catch (FormatException) // ловка ошибки типа: 'тип введенных данных не совпадает с типом переменной в которую эти данные вводятся'
{
Console.WriteLine("Неккоректное действие (введен неверный формат операнда)..");
}
Console.ReadLine();
Console.Clear(); // функция очищения консоли
}
while(menu != 0); // меню будет зациклено пока значение переменной меню не станет равным нулю.
}
}

iaKrevetko 27 апр 2016 12:10

namespace PracticeClasses1
{

class TVSet
{
bool check = false;

public void AllChannels(int count)
{
string changeNum = "";
string chanNum;
int num = 1;

do
{
Console.WriteLine("Ведите номер канала или нажмите кнопку +/-, для выхода наберите 'off'");
chanNum = Console.ReadLine();
if (chanNum == "off") { check = true; }
else if (chanNum == "+" || chanNum == "-")
{

changeNum = chanNum;
}
else
{
try
{
num = Convert.ToInt32(chanNum);
changeNum = num.ToString();

}
catch (FormatException)
{
Console.WriteLine("Вы ввели не число и не + или - ");
Console.WriteLine();
}
}

if (num > count || num == 0)
{
Console.WriteLine("Вы ввели несуществующий канал на ТВ, будет включен первый канал");
Console.WriteLine();
changeNum = "1";
}

else if (changeNum == "+" && num < count)
{
num++;
changeNum = Convert.ToString(num);
}
else if (changeNum == "+" && num == count)
{
num = 1;
changeNum = "1";
}

else if (changeNum == "-" && num <= count && num != 1)
{
num--;
changeNum = Convert.ToString(num);
}
else if (changeNum == "-" && num <= 1)
{
num = count;
changeNum = Convert.ToString(num);
}

Console.WriteLine();
if (chanNum != "off")
{
Console.WriteLine("Сейчас включен " + changeNum + " канал");
}
} while (check == false);
}
}

class Program
{


static void Main(string[] args)
{
TVSet LG = new TVSet();
LG.AllChannels(15);

}
}
}

Дмитрий 16 апр 2016 04:05
Оцените, нормально так?


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication9
{
class Canal
{
public int TVChanal;

public void NextCan()
{
TVChanal ++;
if (TVChanal > 60)
TVChanal = 1;
}

public void PrevCan()
{
TVChanal--;
if (TVChanal < 1)
TVChanal = 60;
}
public void MyCan()
{
int can1;

Console.Write("Введите номер интересующего канала: ");
can1 = Convert.ToInt32(Console.ReadLine());
if (can1>60 && can1<1)
Console.WriteLine("Нет такого канала. Повторим.");
else
TVChanal = can1;
}

}
class Program
{
static void Main(string[] args)
{
string dev;
Canal MyTV = new Canal();
bool vix = true;

MyTV.TVChanal = 1;
while (vix)
{
Console.WriteLine("Всего 60 каналов. Текущий канал - " + MyTV.TVChanal + ". Какие действия предпринять?");
Console.WriteLine("1 - предыдущий канал,");
Console.WriteLine("2 - следующщий канал,");
Console.WriteLine("3 - перейти на определенный канал,");
Console.WriteLine("4 - выход");
dev = Console.ReadLine();
if (dev.Length > 1)
{
dev="5";
}
Console.Clear();
switch (dev)
{
case "1":
MyTV.PrevCan();
break;
case "2":
MyTV.NextCan();
break;
case "3":
MyTV.MyCan();
break;
case "4":
vix = false;
break;
default:
Console.WriteLine("не правильный ввод");
break;
}
}



}
}
}


lidiia 14 апр 2016 12:24
1, Напишите программу последовательного ввода чисел из диапазона
0…255. Запрещается последовательно вводить два числа, разность
между которыми меньше 7. Программа заканчивает работу после обна-
ружения первой ошибки
2, Дан двухмерный массив 7 на 7. Найти сумму модулей отрицательных нечетных элементов.
Написать все методом

Александр Михалев 04 апр 2016 19:21

public class TV
{
public static int chanel = 1, find;

public void ChanelBack()
{
if (chanel > 1)
{
chanel -= 1;
Console.WriteLine("Канал переключен назад! Текущий канал - " + chanel);
}
else
Console.WriteLine("Ошибка! Такого канала не существует!");
}
public void ChanelNext()
{
chanel += 1;
Console.WriteLine("Канал переключен вперед! Текущий канал - " + chanel);
}
public void ChanelFind()
{
Console.WriteLine("Введите номер искомого канала..");
find = Convert.ToInt32(Console.ReadLine());
chanel = find;
Console.WriteLine("Канал переключен! Текущий канал - " + chanel);
}
}
class Program
{
static void Main(string[] args)
{
int v, s = 100;
for (int i = 0; i < s; i++)
{
Console.WriteLine("1. Канал -> Назад, 2. Канал -> Вперед, 3. Найти канал по номеру");
v = Convert.ToInt32(Console.ReadLine());
Console.Clear();
TV MyTV = new TV();
switch (v)
{
case 1:
MyTV.ChanelBack();
break;
case 2:
MyTV.ChanelNext();
break;
case 3:
MyTV.ChanelFind();
break;
default:
Console.WriteLine("Ошибка! Так переключать канал не получится!");
break;
}
Console.WriteLine("Нажмите 'Enter'");
Console.ReadKey();
Console.Clear();
}
}
}
}

Рома 27 мар 2016 01:05

using System;

namespace ConsoleApplication11

{
class TV
{
public int Channel0;
public void NextChannel(string a)
{
try
{
if (a == "]")

{
Channel0++;
}
else if (a == "[")
{

if(Channel0 < 1)
Console.WriteLine("Канал не может быть отрицательным");
else
Channel0--;

}
else
try
{
Channel0 = (Convert.ToByte(Console.ReadLine()));
if (Channel0 > 0)
Channel0 = Channel0 ;

}
catch (FormatException)
{
Console.WriteLine("Введите НОМЕР канала");
}
}
catch (Exception)
{
Console.WriteLine("Bad command");
}
}
}
class Program
{
static void Main(string[] args)
{
TV LG = new TV();
LG.Channel0 = 0;
for (int c = 0; c < 255; c++)
{
Console.WriteLine("Текущий канад" + LG.Channel0);
Console.WriteLine("[ -следующий канал [ - предыдущий ");
string a = (Convert.ToString(Console.ReadLine()));
LG.NextChannel(a);
Console.WriteLine(a);
}
}
}
}



Андрей 23 мар 2016 15:46
Павел, в универе еще хуже объясняют , так что не расстраивайся

gamemaster 08 мар 2016 17:46
подскажите делает строка
return string.Empty;
и в каком уроке это было заранее спасибо.

Баринов ФИлипп 06 мар 2016 19:26
Я абсолютно согласен с павлом. Особенно я намучился с рядом ФИбоначчи, делал около недели, перепробовал разные способы, но так и прибегнул к подсказке). Практически постоянно приходитс яза разъяснением обращаться на CyberForum в раздел C# для новичков. Все равно я очень рад, что есть ваш ресурс, пусть очень сложно, но это своего рода закалка дял нас..

Павел 16 фев 2016 18:17
Спасибо большое за уроки. Я никогда не программировал, иду по вашим урокам последовательно, и хочу сказать что изложение материала очень сложное для понимания, и иногда пропускаете объяснения чего либо что потом ступорит все понимание . Например - вы так и не объяснили что должно писаться в скобках поля класса или зачем пишется 1е поле вообще что вы написали в примере. А домашнее задание выглядит так- "Детки 2+2 будет 4, а теперь посчитайте интеграл"

dmitry_zon 12 фев 2016 16:13
Максим, участники, помогите, пожалуйста, не могу понять, почему обработка исключения по формату (FormatException) не работает и выдает ошибку. стоит заменить на исключение любого типа (Exception), как в коде ниже, все встает на свои места:

namespace lesson14
{
class TV
{
public byte CurChannel;
public void ChangeChannel(string UserCommand)
{
try
{
if (UserCommand == "u")
{
CurChannel++;
}
else if (UserCommand == "d")
{
CurChannel--;
}
else
{
CurChannel = Convert.ToByte(UserCommand);
}
Console.WriteLine("You are now at the channel " + CurChannel);
}
catch (Exception)
{
Console.WriteLine("You've entered a bad command");
}
}
}
class Program
{
static void Main(string[] args)
{
TV LG = new TV();
LG.CurChannel = 0;
Console.WriteLine("Current channel is: " + LG.CurChannel+" Change channel?");
string UserCommand = Convert.ToString(Console.ReadLine());
LG.ChangeChannel(UserCommand);
Console.ReadKey();
}
}
}

зеленыйПрограммист 02 фев 2016 20:23
class telikTV
{
int channel=1;
string numberofchannel;

int ChannelMAX = 50;
int ChannelMIN = 0;

public void ControllTV()
{
Console.WriteLine("Телевизор включен. введите нужный канал");

while (true)
{
numberofchannel = Convert.ToString(Console.ReadLine()); //Ввод канала в стринг

MyTVnext(numberofchannel); //Передача значения в мутвнекст

if ((channel >= 0) && (channel <= 50)) //
Console.WriteLine("Текущий канал{0}", channel); //
else //вывод результата канала
{ //
ChannelDubbing(); //
Console.WriteLine("Такого канала нету.\nТекущий канал {0}", channel);//
} //
}
}

void MyTVnext(string numberofchan)//проверка и присвоение значения в мутвнекст для канала
{
if (numberofchan == "+")
{
channel++;
}
else if (numberofchan == "-")
{
channel--;
}
else Int32.TryParse(numberofchan, out channel);
}

void ChannelDubbing() ////проверка в на максимальное и минимальное значение канала
{

if (channel <= 1)
channel = ChannelMIN;

if (channel >= 49)
channel = ChannelMAX;
}
}

stani-wunderbar 08 янв 2016 00:23

class TV
{
public byte TVchanel;//текущий канал

public void NextChanel()//следующий канал
{
TVchanel++;
Console.WriteLine("Текущий канал: " + TVchanel);
}

public void PreviousChanel()//предыдущий канал
{
TVchanel--;
Console.WriteLine("Текущий канал: " + TVchanel);
}

public void Chanel(int n)//канал по номеру
{
try
{
TVchanel = Convert.ToByte(n);
Console.WriteLine("Текущий канал: " + TVchanel);
}
catch(OverflowException)
{
Console.WriteLine("Номер канала может быть от 0 до 255");
}

}
}
class Program
{
static void Main(string[] args)
{
TV LG = new TV();// Создаем новый объект - телевизор LG
LG.TVchanel = 0;// по умолчанию при первом включении телевизора стоит канал №0
Console.WriteLine("Текущий канал: " + LG.TVchanel);

while (true)
{
Console.WriteLine("Введите \"<\" или \">\" для переключения каналов, или введите номер канала: ");
string s = Console.ReadLine();

if (s == "<")
LG.PreviousChanel();// переключаем на предыдущий канал
else if (s == ">")
LG.NextChanel();// переключаем на предыдущий канал
else
try
{
LG.Chanel(Convert.ToInt32(s));
}
catch (FormatException)
{
Console.WriteLine("Номер канала должен быть числом");
}

}
}
}

neronovs 05 янв 2016 15:57

class Tv
{
public int current;
public bool turnedOn = false;
public string onoff = "";

public void Enterring()
{
onoff = Console.ReadLine();
return;
}

public void UpDown()
{
if (onoff == "up")
current += 1;
else
current -= 1;
return;
}


public void Channels()
{
bool nonNum = false;

for (;;)
{
//Check for a number of a channel
{
if (turnedOn == true)
{
foreach (char c in onoff) //Check for non number value
{
if (c < '0' || c > '9')
{
nonNum = true;
break;
}
else
{
nonNum = false;
}
}

if (nonNum == true)
{
Console.WriteLine("Non numbers");
Enterring();
}
else
{
current = Convert.ToInt32(onoff);
return;
}
}
else
return;
}
}
}//END of method Channels


public void Switching()
{

for (;;)
{
if (onoff == "on") //Check for ON
{
turnedOn = true;
Console.WriteLine("OK, it's on");
return;
}
else if (onoff == "off") //Check for OFF
{
turnedOn = false;
Console.WriteLine("OK, it's off");
return;
}
}
}//END of method Switching
}

class Program
{
static void Main(string[] args)
{
Tv tv = new Tv();
for (; ; )
{
//Console.Clear();
Console.WriteLine(tv.turnedOn != true ? "The TV is turned off (enter 'exit' to exit)" : "The TV is turned on (enter 'exit' to exit)");
if (tv.current != 0 && tv.turnedOn == true)
{
Console.WriteLine("The current TV channel is " + tv.current);
}
Console.WriteLine(tv.turnedOn != true ? "To turn the TV on, enter 'on'" : "Commands: 'off' - turn off, 'up/down' - change channals or just enter the number");;

tv.Enterring();

if (tv.onoff == "on" || tv.onoff == "off")
tv.Switching();
else if (tv.onoff == "up" || tv.onoff == "down")
tv.UpDown();
else
tv.Channels();
if (tv.onoff == "exit")
break;
}

}
}

Kolsky 13 дек 2015 09:41

class TV
{
public bool PowerOn;
public uint Channel=1;
public void TV_Ctrl(string a, uint b)
{
switch(a)
{
case "On":
if (PowerOn == false)
{
PowerOn = true;
Console.Write("Turned power on.\r\n");
}
break;
case "Off":
if (PowerOn == true)
{
Console.WriteLine("Turning power off...");
PowerOn = false;
}
break;
case "Next":
if (Channel!=b && PowerOn==true) Channel++; else Channel=1;
break;
case "Prev":
if (Channel!=1 && PowerOn==true) Channel--; else Channel=b;
break;
default:
break;
}
if (PowerOn) Channel = a.StartsWith("Ch ")&&Convert.ToUInt32(a.Substring(3))<=b?Convert.ToUInt32(a.Substring(3)):Channel;
}

}
class Program
{
public static void Main(string[] args)
{
uint ChAm=0;
bool Ex=true;
do
{
try
{
Console.Write("Enter amount of channels: ");
ChAm = Convert.ToUInt32(Console.ReadLine());
if(ChAm!=0) Ex=false;
}
catch (Exception)
{
Console.WriteLine("Illegal instriction. Try again");
Ex=true;
}
}
while (Ex);
string UserInput;
Console.Write("\r\nGuide of TV navigation:\r\nOn - Power on\r\nOff - Power off\r\nNext - Next channel\r\nPrev - Previous channel\r\nCh x - Channel with number x\r\n\r\n");
TV launch = new TV();
while (true)
{
try
{
UserInput = Console.ReadLine();
launch.TV_Ctrl(UserInput, ChAm);
if (launch.PowerOn == true && launch.Channel != 0)Console.WriteLine("Channel "+launch.Channel);
}
catch (Exception)
{
Console.WriteLine("Illegal instriction. Try again");
}
}
}
}

Dddd 08 дек 2015 10:34
namespace ConsoleApplication3
{
class TVset
{
public int CanalWrightNow;
public void Inicialization(int CWN)
{
CanalWrightNow = CWN;
}
public void PlusAndMinuCanal(string ActionOfChanel)
{

if (ActionOfChanel == "-")
{
CanalWrightNow--;
}
else if (ActionOfChanel == "+")
{
CanalWrightNow++;
}
else if (CanalWrightNow < 0)
{ CanalWrightNow = 0; }
}
public string ChanalNow()
{
return Convert.ToString(CanalWrightNow);
}
}
class Program
{
static void Main(string[] args)
{
TVset TV = new TVset();
Console.Write("Hello, im your TVset!) What Chanal ypu want to watch?");
TV.Inicialization(Convert.ToInt16(Console.ReadLine()));
Console.WriteLine("Your choise is : {0}", TV.ChanalNow());

Console.WriteLine("If you want upper or lower Chanal you can do it by '-' or '+' ");
TV.PlusAndMinuCanal(Console.ReadLine());

Console.WriteLine("Your choise is : {0}", TV.ChanalNow());

Heinkel 17 ноя 2015 16:12
Постарался сделать забавный телевизор. Кнопки вперед, назад, предидущий канал и номер канала пристутствуют.
что можно было бы упростить в коде? (написать короче или же исползовать доп. методы)


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
class TVset
{
bool FullMenu = true;
private int Channel_num;
protected string[] channels = { "RBK news", "cinema: Terminator 2", "cinema: Back to The Future", "XXX |*-|", "Reklama", "Ren-TV", "TV-6", "Cartoons: Simpsons", "Cartoons: Batman", "ORT", "First Galactic channel", "Just mr.Putin" };
private int[] LC = new int[2];




private void MenuSwitch(string Message)
{
string text = "";



Console.Clear();

switch (Message.ToLower())
{
case "+": Channel_num++; if (Channel_num > 999) { Channel_num = 0; } break;
case "-": Channel_num--; if (Channel_num < 0) { Channel_num = 999; } break;
case "menu": FullMenu = true; Menu(); break;
case "last": Channel_num = LC[0]; break;
default:
if (int.TryParse(Message, out Channel_num) & (Channel_num >= 0))
{
if (Channel_num.ToString().Length >= 4)
{
Channel_num= int.Parse(Channel_num.ToString().Substring(0, 3));

}

}
else
{
Console.WriteLine("Unknown operation, please choose the right one");
System.Threading.Thread.Sleep(2000);
FullMenu = true;
Console.Clear();
Menu();
}
break;
}
LC[0] = LC[1];
LC[1] = Channel_num;
if (Channel_num > 11 && Channel_num <= 100)
{
text = "TV switched to channel " + Channel_num + "\nshows: Channel is not set";
}
else if (Channel_num > 100 && Channel_num <= 999)
{
text = "TV switched to channel " + Channel_num + "\nshows: Channel is temporarily blocked";
}
else
{
text = "TV switched to channel " + Channel_num + "\nshows: " + channels[Channel_num];
}
Console.WriteLine(text);
System.Threading.Thread.Sleep(1500);
Console.Clear();
for (int i = 0; i < text.Length; i++) //running line
{
Console.WriteLine(text.Substring(i++));
System.Threading.Thread.Sleep(180);
Console.Clear();
}
Menu();

}

private void Calculation(int Channel_num)
{

Random r = new Random();
int t = r.Next(1, 12);


}


public void Welcome() // Welcome page while turn on the TV
{
string text = "\n \n \n Now you switched to channel 0";
string text2 = "\n Press any key to continue\n\n\t\t\t *\\_(o_0)_/*\n\t\t and 999 channels\n\t console which has been broken at the factory first,\nIn this collection we would like to offer the gray display,\nThank you for buying TV Rashka";

for (int i = text2.Length; i > 0; i--)
{
Console.WriteLine(text2.Substring(i--));
System.Threading.Thread.Sleep(30);

if (i == 0)
{
break;
}
Console.Clear();
}

Console.ReadKey();

for (int i = 0; i < text.Length; i++)
{
Console.WriteLine(text.Substring(i++));
System.Threading.Thread.Sleep(200);
Console.Clear();
}

Menu();
}

private void Menu()
{
if (FullMenu == true)
{
Console.WriteLine("Welcome to TV menu:\n=> Type ' + ' for next channel\n=> Type ' - ' for last channel\n=> Type 'channel number' from 1 - 999\n=> Type 'Last' fore prevouis channel\n=> Type 'Menu' for detail\n\nPress any key");
Console.ReadKey();
Console.Clear();
}
FullMenu = false;
Console.WriteLine("-=Menu=-:\n | + |\n | - |\n | 1-999 |\n | Last |\n | Menu |\n\nInput:");
MenuSwitch(Console.ReadLine());

}

}




class Program
{
static void Main(string[] args)
{
TVset TV = new TVset();
Metka: Console.WriteLine("Do you want to turn on TV?\n| Yes | or | No |");
string Answer = Console.ReadLine().ToLower();
if (Answer.Equals("no") || Answer.Equals("n"))
{
Console.WriteLine("Okay, see u later mate");
return;
}
while (String.IsNullOrEmpty(Answer) || !(Answer.Equals("yes") | Answer.Equals("y")))
{
goto Metka;

}
Console.Clear();
TV.Welcome();
Console.ReadKey();
}
}
}


Vitaly409 11 сен 2015 00:09

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
try
{
TVset tv = new TVset();
int a=0,num=1;
bool bo=true;
Console.WriteLine(" 1. Включить телевизор\n 2. Выключить телевизор\n 3. Ввести номер канала\n 4. Переключить на следующий канал\n 5. Переключить на предыдущий канал\n 6. Узнать канал\n 7. Выход\n Введите необходимый пункт: ");

while (bo)
{
a =Convert.ToInt32( Console.ReadLine());
switch (a)
{
case 1:
tv.on();
Console.WriteLine("Телевизор включился");
break;
case 2:
tv.off();
Console.WriteLine("Телевизор выключился");
break;
case 3:
if (tv.FN())
{
Console.WriteLine("Введите номер канала 1-50:");
num = Convert.ToInt32(Console.ReadLine());
if (num > 50 || num < 1)
Console.WriteLine("Вы ввели не существующий канал");
else
{
tv.ChangeChannel(num);
Console.WriteLine("Телевизор переключен на " + tv.SelectedChannel() + " канал");
}
}
else Console.WriteLine("Телевизор выключен");
break;
case 4:
if (tv.FN())
{ tv.next(); Console.WriteLine("Телевизор переключен на " + tv.SelectedChannel() + " канал"); }
else Console.WriteLine("Телевизор выключен");
break;
case 5:
if (tv.FN())
{
tv.preview();
Console.WriteLine("Телевизор переключен на " + tv.SelectedChannel() + " канал");
}
else Console.WriteLine("Телевизор выключен");
break;
case 6:
if (tv.FN())
Console.WriteLine("На телевизоре идет " + tv.SelectedChannel() + " канал");
else Console.WriteLine("Телевизор выключен");
break;
case 7:
Console.WriteLine("Вы вышли, телевизор выключается");
tv.off();
bo = false;
break;
default:
Console.WriteLine("Повторите выбор пункта меню!");
Console.WriteLine(" 1. Включить телевизор\n 2. Выключить телевизор\n 3. Ввести номер канала\n 4. Переключить на следующий канал\n 5. Переключить на предыдущий канал\n 6. Узнать канал\n 7. Выход\n Введите необходимый пункт: ");
break;
}

}
}
catch (FormatException)
{
Console.WriteLine("Вы не корректно ввели данные");
}
Console.Read();
}
}

class TVset
{
private int canal=1;
private bool offon=false;
public void next()
{ canal = canal + 1;
if (canal > 50) canal = 1;
}
public void preview()
{ canal = canal - 1;
if (canal<=0) canal=50;}
public void ChangeChannel(int num)
{ canal =Math.Abs( num); }
public void on()
{ offon = true; }
public void off()
{ offon = false; }
public int SelectedChannel()
{
return canal;
}
public bool FN()
{ return offon; }
}
}

ROOT 17 авг 2015 19:22
//Домашнее задание//

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication34
{
class TvSet
{
private int NowChannel = 0;
public int NextChannel()
{
NowChannel += 1;
if (NowChannel == 7)
{
NowChannel = 0;
}
return NowChannel;
}
public int PreviousChannel()
{
NowChannel -= 1;
if (NowChannel == -1)
{
NowChannel = 6;
}
return NowChannel;
}
public int ChooseChannel()
{
Console.Write("Введите номер канала: ");
NowChannel = Convert.ToInt32(Console.ReadLine());
if (NowChannel > 6 || NowChannel < 0)
{
NowChannel = 0;
}
return NowChannel;
}
}
class Program
{
static void Main(string[] args)
{
//Создайте класс Телевизор. В нем есть поле текущий канал.
//Предусмотрите в нем возможность переключения каналов: следующий канал, предыдущий канал, переход к каналу по номеру.
//Учтите, что канал не может иметь отрицательный номер.
TvSet MyTV = new TvSet();
int choose = 0;
do
{
try
{
Console.WriteLine("Помощь:\n1 - следующий канал\n2 - предыдущий канал\n3 - выбрать канал\n4 - выключить телевизор");
choose = Convert.ToInt32(Console.ReadLine());
Console.Clear();
if (choose == 1)
{
Console.WriteLine("Сейчас вы на канале номер " + MyTV.NextChannel());
}
else if (choose == 2)
{
Console.WriteLine("Сейчас вы на канале номер " + MyTV.PreviousChannel());
}
else if (choose == 3)
{
Console.WriteLine("Сейчас вы на канале номер " + MyTV.ChooseChannel());
}
}
catch (FormatException)
{
Console.Clear();
Console.WriteLine("Введите цифры 1, 2, 3 или 4");
Console.Clear();
}
}
while (choose != 4);
Console.ReadKey();
}
}
}


Максим 16 авг 2015 17:44
using System;

namespace Work_Method
{
class TV
{
int a = 1;

public void Next()
{
if(1 <= a )
{
if( a != 10)
{
a += 1;
Console.WriteLine(a);
}
}
if(a == 10)
{
a =1;
Console.WriteLine(a);
}
}

public void Back()
{
if(10 >= a)
{
if(a != 1)
{
a -= 1;
Console.WriteLine(a);
}
}
if(a == 1)
{
a = 10;
Console.WriteLine(a);
}
}
public void Click(int a)

{

this.a = a;



if(a >= 10)
{

Console.WriteLine(1);
}
if(a < 1)
{
Console.WriteLine(10);
}


}




}


class Program
{
public static void Main(string[] args)
{
TV lg = new TV();


lg.Next();
lg.Back();

int a = Int32.Parse(Console.ReadLine());

lg.Click(a);



Console.ReadLine();
}
}
}

ROOT 15 авг 2015 17:59
Попытался написать программу с goto...(что-то вроде игры в наперстки) xD

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Azart
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("\t\t\t\tby ROOT\n\n\n\nнажмите любую клавишу, для перехода в главное меню...");
Console.ReadKey();
Console.Clear();
// непосредственное начало игры
menu:
try
{
Console.WriteLine("Главное меню:\n1 - Начать игру в наперстки\n2 - Правила игры\n3 - Выход\n\n\nПомощь: нажимайте цифры \"1\", \"2\" и \"3\", для выбора в главном меню.");
int selection = Convert.ToInt32(Console.ReadLine());
if (selection == 1)
{
Console.Clear();
goto menu2;
}
else if (selection == 2)
{
Console.Clear();
Console.WriteLine("В игре даны 3 сосуда(пусть это будут, к примеру, перевернутые стаканы).\nИм даны номера 1, 2 и 3 соответственно.\nВ начале каждого круга(раунда) вы делаете ставку.\nЕсли после перемешивания вы угадываете в каком сосуде находится объект(к примеру, шарик), вы забираете выигрыш.\nЕсли не угадываете, с вас списывают ставку.\nИгра продолжается до тех пор пока вы не лишаетесь всех денег, либо не выиграете весь банк.");
Console.ReadKey();
Console.Clear();
goto menu;
}
else if (selection == 3)
{
return;
}
else if (selection != 1 || selection != 2 || selection != 3)
{
Console.Clear();
Console.WriteLine("Ошибка. Вы должны ввести числа 1, 2 или 3!\n\nдля возврата в главное меню, нажмите любую клавишу...");
Console.ReadKey();
Console.Clear();
goto menu;
}
}
catch (FormatException)
{
Console.Clear();
Console.WriteLine("Ошибка. Вы ввели не число!\n\nдля возврата в главное меню, нажмите любую клавишу...");
Console.ReadKey();
Console.Clear();
goto menu;
}
menu2:
{
Console.WriteLine("1 - игра со ставками\n2 - тренировочный режим");
int selcetion2 = Convert.ToInt32(Console.ReadLine());
if(selcetion2 == 1)
{
Console.Clear();
goto game1;
}
if (selcetion2 == 2)
{
Console.Clear();
goto game2;
}
}
game1:
{
// процесс игры
int MyMoney = 500;
Round:
while (MyMoney != 0 || MyMoney >= 2000)
{
Random vessels = new Random();
Console.WriteLine("Вы имеете денег " + MyMoney);
int sosud = vessels.Next(1, 3);
Console.WriteLine("Начало игры\n\nСделайте вашу ставку: ");
int stavka = Convert.ToInt32(Console.ReadLine());
if (stavka > MyMoney || stavka == 0)
{
Console.Clear();
Console.WriteLine("Вы не можете сделать такую ставку.");
Console.ReadKey();
Console.Clear();
goto Round;
}
Rate:
Console.WriteLine("На какой сосуд вы ставите?(Введите номер сосуда - 1, 2 или 3): ");
int rate = Convert.ToInt32(Console.ReadLine());
if (rate > 3 && rate < 1)
{
Console.Clear();
Console.WriteLine("Такого сосуда не существует!");
Console.ReadKey();
Console.Clear();
goto Rate;
}
if (rate == sosud)
{
//выигрыш ставки
Console.Clear();
Console.WriteLine("ВЫ ВЫИГРАЛИ РАУНД!");
Console.ReadKey();
Console.Clear();
MyMoney += stavka;
}
else if (rate != sosud)
{
//проигрыш ставки
Console.Clear();
Console.WriteLine("К сожалению, вы проиграли раунд");
Console.ReadKey();
Console.Clear();
MyMoney -= stavka;
}
}
if (MyMoney == 0)
{
Console.Clear();
Console.WriteLine("\t\t\t\tВЫ ПРОИГРАЛИ!\n\n\nДля перехода в главное меню нажмите любую клавишу...");
Console.ReadKey();
Console.Clear();
goto menu;
}
if (MyMoney >= 2000)
{
Console.Clear();
Console.WriteLine("\t\tПОЗДРАВЛЯЕМ!!! ВЫ ВЫИГРАЛИ!\n\n\nДля перехода в главное меню нажмите любую клавишу...");
Console.ReadKey();
Console.Clear();
goto menu;
}
}
game2:
{
// процесс игры
int continuegame = 0;
while (continuegame != 10)
{
Random vessels = new Random();
int sosud = vessels.Next(1, 3);
Rate:
Console.WriteLine("На какой сосуд вы ставите?(Введите номер сосуда - 1, 2 или 3): ");
int rate = Convert.ToInt32(Console.ReadLine());
if (rate > 3 && rate < 1)
{
Console.Clear();
Console.WriteLine("Такого сосуда не существует!");
Console.ReadKey();
Console.Clear();
goto Rate;
}
if (rate == sosud)
{
//выигрыш ставки
Console.Clear();
Console.WriteLine("ВЫ ВЫИГРАЛИ РАУНД!");
Console.ReadKey();
Console.Clear();
}
else if (rate != sosud)
{
//проигрыш ставки
Console.Clear();
Console.WriteLine("К сожалению, вы проиграли раунд");
Console.ReadKey();
Console.Clear();
}
continuegame += 1;
if (continuegame == 10)
{
Console.WriteLine("Тренировка закончена!");
Console.Clear();
goto menu;
}
}

}
}
}
}

ROOT 11 авг 2015 13:39
В одном из предыдущих решений, был использован оператор goto. Подскажите, пожалуйста, как он работает.

Anatoliy 10 авг 2015 17:13
Д/З

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
class Program
{
internal class TV
{
private int channel = 1;
internal int channel_plus()
{
channel = channel + 1;
if (channel == 6)
{
channel = 0;
}
return channel;
}
internal int channel_minus()
{
channel = channel - 1;
if (channel == -1)
{
channel = 5;
}
return channel;
}
internal int channel_choose()
{
do{
channel = Convert.ToInt32(Console.ReadLine());
} while (channel < 0 || channel > 5);
return channel;
}

}
static void Main(string[] args)
{
string letter;
TV myTV = new TV();
do
{
Console.WriteLine("a = channel +1 , s = channel - 1, d = channel choose , f = close programm");
letter = Console.ReadLine();
Console.Clear();
if (letter == "a")
{
Console.WriteLine("Channel is " + myTV.channel_plus());
}
else if (letter == "s")
{
Console.WriteLine("Channel is " + myTV.channel_minus());
}
else if (letter == "d")
{
Console.WriteLine("choose your channel ");
myTV.channel_choose();
}

} while (letter != "f");
}
}
}


Максим 17 июл 2015 10:06
Очень Юра
---
Лично я goto не использую никогда, заменить можно циклами

Очень Юра 15 июл 2015 21:27
Спасибо за интересный урок. Нормально? Подскажите пожалуйста, оправдано ли в данном случае использование goto, и чем можно его заменить.

namespace ConsoleApplication1
{
class TV
{
private ushort channel = 1;
public ushort GetChannel
{
get
{
return channel;
}
}
public void ChannelNext()
{
channel++;
if (channel == 0) //пропускаю нулевой канал
channel++;
}
public void ChannelPrevious()
{
channel--;
if (channel == 0) //пропускаю нулевой канал
channel--;
}
public void ChannelSelect(ushort ch)
{
if (ch != 0) //исключаю нулевой канал
channel = ch;
}
}
class Program
{
static void Main(string[] args)
{
byte number;
TV myTV = new TV();
link:
try
{
do
{
Console.WriteLine("Текущий канал: " + myTV.GetChannel);
Console.WriteLine("Выберите действие:");
Console.WriteLine("------------------");
Console.WriteLine("1 следующий канал");
Console.WriteLine("2 предидущий канал");
Console.WriteLine("3 указать канал");
Console.WriteLine("4 выйти");

number = Convert.ToByte(Console.ReadLine());
if (number == 1)
myTV.ChannelNext();
else if (number == 2)
myTV.ChannelPrevious();
else if (number == 3)
{
Console.Write("Введите номер канала: ");
myTV.ChannelSelect(Convert.ToUInt16(Console.ReadLine()));
}
else if (number == 4) { } //при выходе прячу else
else
{
Console.WriteLine("Введите номер пункта");
Console.ReadLine();
}
Console.Clear();
}
while (number != 4);
}
catch (FormatException)
{
Console.WriteLine("Ошибка! Введено не число");
Console.ReadLine();
Console.Clear();
goto link;
}
catch (OverflowException)
{
Console.WriteLine("Ошибка! Используйте число от 1 до {0}", UInt16.MaxValue);
Console.ReadLine();
Console.Clear();
goto link;
}
}
}
}

Максим 30 июн 2015 14:53
Velglarn
---
Нормально в целом. Правда есть некоторая непоследовательность, метод PreviousPortal возвращает строку и она идет в консоль, а ChoosePortal метод из той же оперы, но вывод у него внутри.

Velglarn 26 июн 2015 21:51
Максим, прокомментируйте моё "творение", пожалуйста, и укажите на значительные огрехи :)


namespace Portals_scheme
{
class Portal
{
string[] portals = { "Forest", "Willadge", "City", "Ancient_Tower", "Lake", "Darkness" };
int Now = 0;
internal void First()
{
Console.WriteLine("Stranger, you are in" + " " + portals[Now] + " " + "now! What's the goal of your teleportation?");
Console.WriteLine("You can choose only");
for (int i = 0; i < portals.Length; i++)
{
Console.WriteLine(portals[i]);
}
}
internal string NextPortal()
{
try
{
return portals[++Now];
}
catch (IndexOutOfRangeException)
{
Now = 0;
return portals[Now];
}
}
internal string PreviousPortal()
{
try
{
return portals[--Now];
}
catch (IndexOutOfRangeException)
{
Now = portals.Length - 1;
return portals[Now];
}
}
internal void ChoosePortal()
{
string PortalChoose = Console.ReadLine();
try
{
Console.WriteLine(portals[Convert.ToInt32(PortalChoose) - 1]);
}
catch
{
Console.WriteLine("Stranger, you must insert number of portals witch you wanna to use");
ChoosePortal();
}
}
}

class Program
{
static void Main(string[] args)
{
Portal Portals = new Portal();
Portals.First();
string Enter_Portal;
Console.WriteLine("Next portal +, previous -");
Console.WriteLine("If you wanna to choose some obvious portal, press *");
do
{
Enter_Portal = Console.ReadLine();
if (Enter_Portal == "+")
Console.WriteLine(Portals.NextPortal());
else if (Enter_Portal == "-")
Console.WriteLine(Portals.PreviousPortal());
else if (Enter_Portal == "*")
Portals.ChoosePortal();
}
while (Enter_Portal != "+" || Enter_Portal != "-");
Console.ReadKey();
}
}
}

AlPer 25 июн 2015 20:12

class TV
{
private int ch;
public int Ch
{
get
{
return ch;
}
set
{
ch = value;
if (ch <= 0) ch = 1;
else if (ch >= 100) ch = 99;
}
}

public int tvSet;
public string pult;

public void TVOnOff()
{
int temp;
if (tvSet==0)
{
while (pult!="on")
{
Console.Clear();
Console.WriteLine("Телевизор выключен. Наберите on/off(вкл./выкл.)");
pult = Console.ReadLine();
}
tvSet = 1; Ch = 1;
}

if (tvSet==1)
{
while (pult!="off")
{
Console.Clear();
Console.WriteLine("Телевизор включен. Работает {0} канал.", Ch);
Console.WriteLine("Выбор канала 1-99 или -/+. Чтобы выключить телевизор наберите off.");
pult = Console.ReadLine();
if (Int32.TryParse(pult, out temp))
{
Ch = temp;
continue;
}
if (pult=="+") ++Ch;

if (pult=="-") --Ch;
}
}
}
}

class Programm
{
static void Main()
{
MenuSet();
}

static void MenuSet()
{
TV tv1 = new TV();
tv1.TVOnOff();
}
}

Владимир2la 18 июн 2015 23:47
У меня получилось вот так:

namespace ConsoleApplication1
{
class TVSet
{
private byte CurrentChannel;
public void ON()
{
CurrentChannel = 0;
Console.WriteLine("Здравствуйте! Текущий канал: " + CurrentChannel);
}
public void NextChannel()
{
CurrentChannel++;
Console.WriteLine("Текущий канал: " + CurrentChannel);
}
public void PrevChannel()
{
CurrentChannel--;
Console.WriteLine("Текущий канал: " + CurrentChannel);
}
public void NumChannel()
{
byte Num;
Console.WriteLine("Введите номер канала");
try
{
Num = Convert.ToByte(Console.ReadLine());
CurrentChannel = Num;
Console.WriteLine("Текущий канал: " + CurrentChannel);
}
catch
{
Console.WriteLine("Ошибка! Введите число от 0 до 255");
}
}

}
class Program
{
static void Main(string[] args)
{
TVSet TV = new TVSet();
TV.ON();
byte Chose=0;
Console.WriteLine("Чтобы переключить на следующий канал, нажмите <1>");
Console.WriteLine("Чтобы переключить на предыдущий канал, нажмите <2>");
Console.WriteLine("Чтобы выбрать канал по номеру, нажмите <3>");
Console.WriteLine("Чтобы выйти, нажмите <0>");
do
{
try
{
Chose = Convert.ToByte(Console.ReadLine());
if (Chose == 1)
{
TV.NextChannel();
}
else if (Chose == 2)
{
TV.PrevChannel();
}
else if (Chose == 3)
{
TV.NumChannel();
}
}
catch
{
Console.WriteLine("Ошибка!. Введите <1>, <2>, <3> или <0>");
}
}
while (Chose != 0);
}
}
}

Максим 18 июн 2015 11:28
rotkiv
---
Непонятно что за массив каналов allChannels,если и делать его, то он должен содержать имена каналов, а не просто нули. Сделать бы всё это в вечный цикл, чтобы постоянно можно было переключать, и переходы (ниже 0 на 100 и наоборот).

rotkiv 16 июн 2015 12:46
здравствуйте Максим. я решил ДЗ, на что у меня ушло просто гора времени, с начало я писал код по старомуб, бут-то решал простую задачу, и не найдя решения, меня осенило, в один момент в мозгах визуализировался приблизительный код, таким каким он должен быть решая задачи по ООП. конечно код нужно доработать, добавить обработку исключений(стал добавлять да не срабатывало почему та и решил забить пока), но в итоге я программу сделал без сторонних подсказок, без комментариев с этой страницы, для меня это принципиально и очень важно для процесса обучения. и так, хочу представить свой код, он не идеален и может даже хуже других, но это мой, написанный моими мозгами, и прошу раскритиковать его, где что не хватает, что где добавить, может что-то заменить

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication_ypok14
{

class TV
{
public int[] allChannels = new int[100];
int currentChannel;
public void Menu()
{
Console.WriteLine("your TVSet have 100 channels");
Console.ReadKey();
Console.WriteLine("to look some channels, press L ");
string l = Console.ReadLine();
if (l == "l")
{
CurrentCh();
}
}
public int CurrentCh()
{
Console.WriteLine("what numb of channel you want to look? ");
currentChannel = Int32.Parse(Console.ReadLine());
allChannels[currentChannel] = currentChannel;
//Console.WriteLine(currentChannel);
Console.WriteLine("for changes press C ");
string c = Console.ReadLine();
if (c == "c")
{
Chenges();
}
return currentChannel;

}
public int Chenges()
{
Console.WriteLine("to change the channel forward press F, to backward press B else insert the numb of channel you wish ");
string f = Console.ReadLine();
if (f == "f")
{
Console.WriteLine("good, you are looking channel numb " + ++allChannels[currentChannel]);
}
else if (f == "b")
{
Console.WriteLine("good, you are looking channel numb " + --allChannels[currentChannel]);
}
else
{
//allChannels[currentChannel] = Int32.Parse(Console.ReadLine());
Console.WriteLine("good, you are looking channel numb " + f);
}
Console.ReadKey();
return allChannels[currentChannel];
}
}
class Program
{
static void Main(string[] args)
{
TV tv = new TV();
tv.Menu();
}
}
}


Flamingo 04 июн 2015 23:51

class Television
{
public int Current_Channel = 1;
public void Change(int number_one)
{
Current_Channel += number_one;
}
public void Set(int number_two)
{
Current_Channel = number_two;
}
}
class Program
{
static void Main(string[] args)
{
Television TV = new Television();
Console.WriteLine("Начальный канал - 1");
Console.WriteLine("1 - next, 2 - back, 3 - number");
int answer = Convert.ToInt32(Console.ReadLine());
if (answer == 1)
TV.Change(1);
else if (answer == 2)
TV.Change(-1);
else
{
Console.WriteLine("Введите номер канала");
answer = Convert.ToInt32(Console.ReadLine());
if (answer > 100)
TV.Set(100);
else if (answer < 0)
TV.Set(0);
else
TV.Set(answer);
}
Console.WriteLine(TV.Current_Channel);
}
}

Warguss 28 май 2015 19:42

class TelevisionSet
{
int CurrentChannel = 0;


public string ChangeChannel(char ch)
{
string Channel = null;

switch(ch)
{
case '+':
if(CurrentChannel == 0)
{
Channel = "Показывает первый канал";
CurrentChannel++;
return Channel;
}

else if (CurrentChannel == 1)
{
Channel = "Показывает второй канал";
CurrentChannel++;
return Channel;
}

else if (CurrentChannel == 2 )
{
Channel = "Показывает третий канал";
CurrentChannel++;
return Channel;
}

else if(CurrentChannel == 3)
{
Channel = "Показывает нулевой канал";
CurrentChannel = 0;
return Channel;
}

break;

case'-':
if ((CurrentChannel > 0) && (CurrentChannel < 2))
{
Channel = "Показывает нулевой канал";
CurrentChannel--;
return Channel;
}

else if ((CurrentChannel > 1) && (CurrentChannel < 3))
{
Channel = "Показывает первый канал";
CurrentChannel--;
return Channel;
}

else if ((CurrentChannel > 2) && (CurrentChannel < 4))
{
Channel = "Показывает второй канал";
CurrentChannel--;
return Channel;
}

else if (CurrentChannel == 0)
{
Channel = "Показывает третий канал";
CurrentChannel = 3;
return Channel;
}

break;

case '0':
Channel = "Показывает нулевой канал";
CurrentChannel = 0;
break;

case '1':
Channel = "Показывает первый канал";
CurrentChannel = 1;
break;

case '2':
Channel = "Показывает второй канал";
CurrentChannel = 2;
break;

case '3':
Channel = "Показывает третий канал";
CurrentChannel = 3;
break;

case '*':
Channel = "Гуд бай!!! Для выключения нажмите повторно клавишу ввод!";
break;

}

return Channel;
}

}

class Program
{
private static void Main(string[] args)
{
bool b = true;

TelevisionSet TV = new TelevisionSet();
Console.WriteLine(@"Текущий канал: Нулевой канал
+ следующий канал, - предыдущий канал
0, 1, 2, 3 - Существующий каналы
* Выключит телевизор");

while(b)
{
char ch = char.Parse(Console.ReadLine());

string str = TV.ChangeChannel(ch);

if(str == "Гуд бай!!! Для выключения нажмите повторно клавишу ввод!" )
{
b = false;
}

Console.WriteLine(str);

}


Console.ReadKey();
}
}

Александр_Бугай 12 май 2015 09:14
class TV
{
byte channel=0;
internal void ChannelPlus()
{
channel++;
Console.WriteLine("Channel next is " + channel);
}
internal void ChannelMinus()
{
if (channel > 0)
{
channel--;
Console.WriteLine("Next channel is " + channel);

}
else channel = 255;
Console.WriteLine("Channels next is " + channel);
}
internal void ChannelChange()
{

try
{
Console.WriteLine("Please input number");
channel = Convert.ToByte(Console.ReadLine());
Console.WriteLine("You are on channel " + channel);
}
catch (Exception)
{
Console.WriteLine("Please input only positive number and less than 266");
Console.ReadLine();
}

}
}
class TvChanger
{
static void Main(string[] args)
{
TV MyTv = new TV();
string DecisionToChange;
do
{
Console.WriteLine("If you want to change your channel up-> turn +. If you want to change your channel down-> turn -. If you want to change your channel by number-> turn any button.");
string move = Convert.ToString(Console.ReadLine());
if (move == "+") MyTv.ChannelPlus();
else if (move == "-") MyTv.ChannelMinus();
else MyTv.ChannelChange();
Console.WriteLine("Do you want to change the channel again? Yes - button +. No - any button");
DecisionToChange = Convert.ToString(Console.ReadLine());
}
while (DecisionToChange == "+");
}
}

Максим 28 апр 2015 17:41
Чтото я немного переборщил со вставкой кода. Не понял, что код нужно было вставлять в рамки - сначала вставил код, а потом нажал кнопку для вставки и не увидел появившееся поле для вставки. Извините! Удалите пожалуйста предыдущее моё сообщение.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;//остались после выполнения предыдущих заданий
using System.IO;

namespace lesson13_workWithClasses_HomeWork //Д.З.: создать телевизор с функциями включения, переключения каналов и т.д.
{
class TV //напишите мне пожалуйста, если что-то лишнее...
{
private bool powerButton;//буленовая переменная включающаа и отключающая телевизор TV_POW()
internal sbyte channel = 0;//переменная в которую возвращается значение из SwitchChannel()
internal sbyte chooseChannel;
private bool nextChannel;
private bool prevChannel;
internal string pow;//используется для аргумента в TV_POW()

public void TV_POW(string pow)//включает и выключает телевизор, а также переключает каналы через аргумент функции с помощью текста
{
Console.Clear();
if (pow == "вкл")
{
powerButton = true;
Console.WriteLine("Вы включили телевизор.");
}
else if (pow == "выкл")
{
powerButton = false;
Console.WriteLine("Телевизор выключен.");
}
else if (pow == "сл")
{
nextChannel = true;
Console.Clear();
channel++;
Console.WriteLine("вы переключили на следующий канал " + channel);
nextChannel = false;
}
else if (pow == "пр")
{
prevChannel = true;
Console.Clear();
channel--;
Console.WriteLine("вы переключили на предыдущий канал " + channel);
prevChannel = false;
}
}

public sbyte SwitchChannel(sbyte chooseChannel)//переключает каналы от 0 до 9 и возвращает значение в переменную
{
if (powerButton == false)
{
Console.Clear();
Console.WriteLine("Телевизор выключен");
}
else if (powerButton == true)
{
Console.Clear();
Console.WriteLine("вы смотрите " + channel + "й канал ");
if (chooseChannel < 1)
channel = 1;
else if (chooseChannel > 9)
channel = 9;
else channel = chooseChannel;
}
return channel;
}
}
class Program
{
static void Main(string[] args)
{
try //много текста в классе телевизора и программы для информации. без него терялся в коде
{
Console.WriteLine("Купив телевизор, я принёс его домой и решил прочитать инструкцию...");
Console.WriteLine("Управление телевизором: \n для включения или выключения введите - вкл или выкл.");
Console.WriteLine("для выбора номера канала введите число с клавиатуры. \n для следующего и предыдущего канала введите - сл или пр");
Console.WriteLine("Если не хотите смотреть телевизор введите - розетка");

TV myTV = new TV();

do //здесь выбирается действие для управления телевизором
{
Console.WriteLine("\n Нужно определиться, что делать дальше... \n 1 - питание и переключение канала телевизора или 2 - нажать кнопку канала");
int whatToDo = Convert.ToSByte(Console.ReadLine());
if (whatToDo == 1)
{

Console.WriteLine("Я смотрю на кнопки... Какую нажать? вкл, выкл, сл, пр, розетка.");
myTV.pow = Console.ReadLine();
myTV.TV_POW(myTV.pow);
}
else if (whatToDo == 2)
{

Console.WriteLine("Почесав затылок, я решил включить канал №");
myTV.chooseChannel = Convert.ToSByte(Console.ReadLine());
myTV.SwitchChannel(myTV.chooseChannel);
}
}
while (myTV.pow != "розетка");//при вводе служит точкой выхода из программы
Console.Clear();
Console.WriteLine("Устав от просмотра телевизора, я решил выдернуть его из розетки. Электричество нужно экономить - подумал я.");
}
catch (Exception)
{
Console.WriteLine("Что-то пошло не так.Ваш телевизор сгорел...");
}
Console.ReadKey();
}
}
}


Максим 24 апр 2015 19:40
Stas
---
Думаете вам дали уникальное задание? Введите этот текст в гугле и там море решений

Stas 24 апр 2015 12:56
Написать метод line, который выводит на экран строку, состоящую из
звездочек.
Длина стоки (количество звездочек) является аргументом метода.

Pomogite pozalujsta napisat'!

Andriy 18 мар 2015 22:41

namespace ConsoleApplication1
{
class Televizor
{
private int PotochnuyKanal = 0;

public void ZminaKanaly(int napramok, int NomerKanaly)
{
switch(napramok)
{
case 0:
PotochnuyKanal--;
if (PotochnuyKanal == -1)
PotochnuyKanal = 0;
break;
case 1:
PotochnuyKanal++;
break;
case 2:
if (NomerKanaly>0)
PotochnuyKanal = NomerKanaly;
break;
default:
break;
}
Console.WriteLine("Vu peremknylu na " + PotochnuyKanal + " Kanal");
Console.ReadLine();
}


}

class Program
{
static void Main()
{
int a,b;

Console.WriteLine("Vvedit napramok. Dla peremukanna na nomer kanaly - vvedit 2 i potim - nomer.");
Televizor MyTelevizor = new Televizor();
a=Convert.ToInt32(Console.ReadLine());
b=Convert.ToInt32(Console.ReadLine());
MyTelevizor.ZminaKanaly(a, b);

}
}


}

G1ffy 10 мар 2015 20:44
Исправил один участок кода

else if (answer == "p" || answer == "previous")
{
if (numb > 1)
{
numb--;
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("\t\t\t\tChannel " + numb + "\t\t\t\t");
Console.ResetColor();
}
else if (numb <= 1)
{
Console.BackgroundColor = ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("\t\t\t\tWrong channel!\t\t\t\t");
Console.ResetColor();
}
}

G1ffy 10 мар 2015 20:41
Конечно много лишнего получилось, но хотел сделать красиво ))

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication6
{
class TVset
{
private bool turnOn;
private string answer;
public int numb=1,find=0;

public void TVOn()
{
turnOn = true;
}
public void TVOff()
{
turnOn = false;
}
public void Channel()
{
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("\t\t\t\tChannel " + numb + "\t\t\t\t");
Console.ResetColor();
do
{
answer = Console.ReadLine().ToLower();
if (answer == "f" || answer == "find")
{
Console.Write("Enter channel number - ");
find = Convert.ToInt32(Console.ReadLine());
if (find < 1)
{
Console.BackgroundColor = ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("\t\t\t\tWrong channel!\t\t\t\t");
Console.ResetColor();
}
else
{
numb = find;
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("\t\t\t\tChannel " + numb + "\t\t\t\t");
Console.ResetColor();
}
}
else if (answer == "n" || answer == "next")
{
numb++;
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("\t\t\t\tChannel " + numb + "\t\t\t\t");
Console.ResetColor();
}
else if (answer == "p" || answer == "previous")
{
if (numb > 1)
{
numb--;
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("\t\t\t\tChannel " + numb + "\t\t\t\t");
Console.ResetColor();
}
if (numb <= 1)
{
Console.BackgroundColor = ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("\t\t\t\tWrong channel!\t\t\t\t");
Console.ResetColor();
}
}
else if (answer == "exit" || answer == "e")
{
Console.BackgroundColor = ConsoleColor.Red;
Console.Clear();
turnOn = false;
}
else
{
Console.BackgroundColor = ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("\t\t\t\tWrong command!\t\t\t\t");
Console.ResetColor();
}
}
while (turnOn == true);
}

}
class Program
{
static void Main(string[] args)
{
TVset myTV = new TVset();
myTV.TVOn();
Console.WriteLine("----------------------------------T V----------------------------------");
Console.WriteLine("\t\t\tDo you want to change a channel?\n\t\t\t(-N/P- or -Next/Previous-)");
Console.WriteLine("\t If you want to turn off TV write -Exit/E-");
Console.WriteLine("\t If you want to input a channel write -F/Find-");
Console.WriteLine("-----------------------------------------------------------------------");
myTV.Channel();
}
}
}


Александр21 07 мар 2015 14:11
примерно так вышло

class TVset
{ internal string[] TVSetChannels = { "TNT", "NationalG", "Евразия", "Discovery" };
int channel = 0;
internal void NextChnl()
{ try {
Console.WriteLine(TVSetChannels[++channel]);
}
catch (IndexOutOfRangeException)
{
channel = 0;
Console.WriteLine(TVSetChannels[channel]);
}
}
internal void PrevChnl()
{ try
{
Console.WriteLine(TVSetChannels[--channel]);
}
catch (IndexOutOfRangeException)
{
channel = TVSetChannels.Length-1;
Console.WriteLine(TVSetChannels[channel]);
}
}
internal void SetChnl(string num)
{
int n;
try
{
n = Convert.ToInt32(num);
Console.WriteLine(TVSetChannels[--n]);
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("Error channel number");
}
catch (FormatException)
{
Console.WriteLine("Error channel simbol");
}
}
}

class Program
{
static void Main(string[] args)
{
TVset TV = new TVset();
string EnterChannel;
foreach (string ch in TV.TVSetChannels )
{
Console.Write(ch+" ");
}
Console.WriteLine();
Console.WriteLine("Next channel is + ");
Console.WriteLine("Prev Channel is - ");
Console.WriteLine("To Select Channel Enter number (1-"+Convert.ToString(TV.TVSetChannels.Length)+") ");
Console.WriteLine("Exit is *");
do
{
EnterChannel = Console.ReadLine();
if (EnterChannel == "+")
{
TV.NextChnl();
}
else if (EnterChannel == "-")
{
TV.PrevChnl();
}
else if (EnterChannel == "*")
{
break;
}
else
{
TV.SetChnl(EnterChannel);
}
} while (true);
}
}

Максим 04 мар 2015 09:18
Temir
---
Всё хорошо

Temir 03 мар 2015 13:41
Всем привет.
Зацените пожалуйста.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class TVSet
{
private string[] TVSetChannels = { "Казахстан", "ТНТ", "Евразия", "Discovery" };
int channel = 0;
internal void SwitchOn()
{
Console.WriteLine("\t Добрый день!");
Console.WriteLine("\t Текущий канал: " + TVSetChannels[channel]);
}
internal string SledChannel()
{
try
{
return TVSetChannels[++channel];
}
catch (IndexOutOfRangeException)
{
channel = 0;
return TVSetChannels[channel];
}
}
internal string PredChannel()
{
try
{

return TVSetChannels[--channel];
}
catch (IndexOutOfRangeException)
{
channel = TVSetChannels.Length - 1;
return TVSetChannels[channel];
}
}
internal void PoNomeruChannel()
{
string EnterChannel;
EnterChannel = Console.ReadLine();
try { Console.WriteLine(TVSetChannels[Convert.ToInt32(EnterChannel)-1]); }
catch { Console.WriteLine("\t Пожалуйста введите номер канала"); PoNomeruChannel(); }
}
}
class Program
{
public static void Main()
{
TVSet TV1 = new TVSet();
TV1.SwitchOn();
string EnterChannel;

do
{
EnterChannel = Console.ReadLine();
if (EnterChannel == "+")
Console.WriteLine(TV1.SledChannel());
else if (EnterChannel == "-")
Console.WriteLine(TV1.PredChannel());
else if(EnterChannel=="*") break;
Console.WriteLine("\t Следующий канал +, Предыдущий канал -");
Console.WriteLine("\t Чтобы включить канал по номеру нажмите звёздочку - *");
}
while (EnterChannel != "+" || EnterChannel != "-");

do{
TV1.PoNomeruChannel();
}
while(true);

}
}

}


Stahma 23 фев 2015 22:01
class Tv
{
internal static int CurrentChannel = 4;
public static void NextChannel()
{
CurrentChannel++;

}
public static void PrevChannel()
{
if (CurrentChannel - 1 < 0)
Console.WriteLine("Неверный канал");
else CurrentChannel--;
}
public static void SetChannel(int c)
{
if (c < 0)
Console.WriteLine("Неверный канал");
else CurrentChannel = c;
}
}
class Program
{
static void Main(string[] args)
{
Tv.NextChannel();
Console.WriteLine(Tv.CurrentChannel);
Tv.PrevChannel();
Console.WriteLine(Tv.CurrentChannel);
Tv.SetChannel(-1);
Console.WriteLine(Tv.CurrentChannel);
}
}

Максим 21 фев 2015 14:32
AlPer
---
Почему бы не конвертнуть в int и не проверить так:
if(channel >=0 && channel <= 9)

AlPer 20 фев 2015 21:17

else if (button == "0" || button == "1" || button == "2" || button == "3" || button == "4" || button == "5" || button == "6" || button == "7" || button == "8" || button == "9")


я понимаю что это бред я не умею анализировать поток

AlPer 20 фев 2015 20:29

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace chump_3
{

class Program
{
static void Main(string[] args)
{
TV.TVOFF();
}
}

class TV
{
private static int chanal;
private static string tvOnOff;

public static void TVOFF()
{
do
{
Console.Clear();
Console.WriteLine("Телевизор выключен.\nВкл./Выкл. телевизор: e/q");
tvOnOff = Console.ReadLine();
}
while (TV.tvOnOff != "e");
TVON();
}

public static void TVON()
{
string button;
do
{
Screen(chanal);
button = Console.ReadLine();
if (button == "q")
{
TVOFF();
}
else if (button == "0" || button == "1" || button == "2" || button == "3" || button == "4" || button == "5" || button == "6" || button == "7" || button == "8" || button == "9")
{
chanal = Convert.ToInt32(button);
Screen(chanal);
}
else if (button == "+")
{
++chanal;
if (chanal > 9) { chanal = 0; }
Screen(chanal);
}
else if (button == "-")
{
--chanal;
if (chanal < 1) { chanal = 9; }
Screen(chanal);
}
}

while (true);
}

public static void Screen(int NumberCh)
{
Console.Clear();
Console.WriteLine("Телевизор включен. Работает канал № {0}", NumberCh);
Console.WriteLine("Вкл./Выкл. телевизор: e/q");
Console.WriteLine("Переключение каналов: кнопки от 0 до 9 или '+'/'-'");
}
}
}

Максим 03 фев 2015 18:36
Иван
---
Да, программа мелкая, и тут сложно проявить изящество. А эталонного решения, наверное, нет ни для одной более менее сложной задачи. Для масштабных задач, как минимум, нужно правильно использовать принципы ООП и уже будет хорошо

Иван 03 фев 2015 16:37
Может быть, есть какое-то эталонное решение этой задачи?

Иван 03 фев 2015 16:37
Admin, спасибо за комментарии, это мелочи, поправлю.

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

Максим 03 фев 2015 14:40
Иван
---
1. Называть булевую переменную, которая означает состояние тв вкл/выкл просто TV это к говнокоду, нужно что-то в стиле IsOn.

2. Методы ChannelUP и ChannelDOWN не должны принимать никаких параметров, min и max стоит указывать при создании телевизора.

3. Строковые константы типа "выход" не должны встречаться в таком виде в коде еще и по несколько раз. Такую константу стоит вынести куда-нибудь в начало класса, чтобы легко менять значение при необходимости в одном месте.

Иван 03 фев 2015 00:00
Здравствуйте. У меня все работает, как запланировал, но есть два вопроса.

1. На сколько этот код является гавнокодом?
2. Что нужно сделать (просто словами), что бы этот код не был похож на гавнокод?

1. Файл Program.cs

class MainClass
{
public static void Main (string[] args)
{
string channel = ">Состояние телевизора неизвестно. ";
Console.WriteLine (channel);
Console.WriteLine(">Руководство управления телевизором.");
Console.WriteLine (">Включение/Выключение '0'; следующий канал '+'; предыдущий канал '-'; или введите произвольный канал (1-37)");
TVFunc TV1 = new TVFunc ();

while (channel != "выход") {
channel = Console.ReadLine ().ToLower();
switch (channel) {
case "0":
if(TV1.TV){
TV1.TVOff ();
} else {
TV1.TVOn (); }
break;
case "+":
TV1.ChannelUP (37, 1);
break;
case "-":
TV1.ChannelDOWN (1, 37);
break;
case "выход":
Console.WriteLine (">вы вышли");
break;
default:
try{
TV1.ChannelMANUAL (Convert.ToByte (channel), 37);
break;
} catch{
Console.WriteLine (">Неверное значение");
break;
}
}
}
}


Файл TV.cs


class TVFunc
{
internal bool TV;
private byte TVChannel;
public void TVOn()
{
TV = true;
Console.WriteLine (">Телевизор включен");
}

public void TVOff()
{
TV = false;
Console.WriteLine (">Телевизор выключен");
}
public void ChannelUP(byte ChannelMAX, byte min)
{
++TVChannel;
if (TVChannel > ChannelMAX) {
TVChannel = min;
Console.WriteLine (">Канал переключен на " + min);
} else {
Console.WriteLine (">Канал переключен на " + TVChannel);
}
}
public void ChannelDOWN(byte ChannelMIN, byte max)
{
--TVChannel;
if (TVChannel < ChannelMIN) {
TVChannel = max;
Console.WriteLine(">Канал переключен на " + max);
} else {
Console.WriteLine (">Канал переключен на " + TVChannel);
}
}
public void ChannelMANUAL(byte ChannelMANUAL, byte maximum)
{
if (ChannelMANUAL <= maximum) {
TVChannel = ChannelMANUAL;
Console.WriteLine (">Канал переключен на " + TVChannel);
} else {
Console.WriteLine (">Такого канала не существует");
}
}
}

Freddy 29 янв 2015 16:23
Admin,

Большое спасибо)

Максим 29 янв 2015 09:52
Freddy
---
В методе tvOn уберите ненужное Console.ReadKey();

AlexWolf 29 янв 2015 00:34
Да Admin, я увидел свою ошибку, спасибо.

Freddy 28 янв 2015 16:44
Здравствуйте. Во время нажатия клавиш "q", "e" или "w" в первый раз условия не срабатывают и выводится сообщение "Вы нажали не ту кнопку". Лишь после этого все начинает нормально функционировать. Кстати если например ввести "qe" то срабатывает с первого раза и происходит, то что должно при вводе "e". Подскажите пожалуйста, в чем ошибка?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Tele
{
public string result;
public int numberchannel=0;
public string[] channels = { "Первый канал", "Россия-2", "ТНТ", "НТВ", "ОРТ" };
public void tvOn(string b)
{
if (b == "o")
{
Console.WriteLine("Вы включили телевизор");
}
else
while (b != "o")
{
Console.WriteLine("Вы нажали не ту клавишу");
b = Console.ReadLine();
}
Console.WriteLine("Вы смотрите первый канал, чтобы переключить впереd нажмите - q, назад - e. Либо нажмите w, чтобы ввести номер канала");
Console.ReadKey();
}
public void pluschannel()
{
if (numberchannel < channels.Length-1)
numberchannel++;
else numberchannel = 0;
}
public void minuschannel()
{
if (numberchannel > 0)
numberchannel--;
else
numberchannel = 4 ;
}
public void pereklpokanalam()
{
Console.WriteLine("Введите номер канала");

while (true)
{
try
{
int a = Convert.ToInt32(Console.ReadLine());


for (int i = 0; i < channels.Length; i++)
{

if (a - 1 == i)

Console.WriteLine(channels[i]);
}

if (a > channels.Length || a < 1)
Console.WriteLine("Ошибка. Такого канала не существует");
}

catch (FormatException ex)
{
result = "Ошибка. Вы ввели не число";

Console.WriteLine(result);

}
}

}

}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Телевизор выключен, чтобы включить его, нажмите клавишу о");
string b = Console.ReadLine();
Tele tv = new Tele();
tv.tvOn(b);
while (true)
{
string z = Console.ReadLine();

if (z == "q")
{
tv.pluschannel();

Console.WriteLine(tv.channels[tv.numberchannel]);
}
else if (z == "e")
{
tv.minuschannel();
Console.WriteLine(tv.channels[tv.numberchannel]);
}
else if (z == "w")
{ tv.pereklpokanalam(); }
else
Console.WriteLine("Ошибка. Вы нажали не ту кнопку");
}
}
}
}

Максим 28 янв 2015 09:37
AlexWolf
---
То что я уже писал другим в этом уроке, не нужно сравнивать булевые переменные с true/false:

if (pitanie) // достаточно этого
{
PowerTP = true;
Console.WriteLine("ВНИМАНИЕ! Телепортер подключен.");
}

Ну и здесь возможно только два варианта, вкл и выкл, поэтому логичным будет дальше просто else, а не if else (pitanie == false)

AlexWolf 26 янв 2015 17:14
Добрый день. Что-то я заморочился с Вашим заданием. Перечитал и пересмотрел все задания, что тут выложили. Многие пользуются функциями, о которых Вы еще не рассказывали в предыдущих уроках. Так как я изучаю по порядку, пришлось обойтись тем, что я пока что изучил. Пока читал выполненные задания, тема телевизора у меня уже вызывала оскомину, поэтому я позволил себе немного изменить тематику, но механику оставил без изменения. Если есть замечания, с удовольствием выслушаю и приму к сведению. Спасибо.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class TP_set
{
private string[] listPlace = { "Домой", "в подвал", "в Париж", "на Луну", "в Другое Место", "на остров Буян", "которая не работает", "к офису", "в аудиторию универа", "на Лысую Гору"};
public bool PowerTP = false;
public void power_on(bool pitanie)
{
if (pitanie == true)
{
PowerTP = true;
Console.WriteLine("ВНИМАНИЕ! Телепортер подключен.");
}
else if (pitanie == false)
{
PowerTP = false;
Console.WriteLine("Питание отключено.");
}
}
public void ShowCanal()
{
if (Currcnl < listPlace.Length || Currcnl >= 0)
{
Console.WriteLine("Вы открыли червоточину " + listPlace[Currcnl]);
}
else
{
Console.WriteLine("Такой червоточины не существует! Введите корректный номер из допустимого диапозона.");
}
}
private int Currcnl=-1;
public void nextcnl()
{
Currcnl++;
if (Currcnl > listPlace.Length - 1)
{
Currcnl = 0;
}

}
public void prevcnl()
{
Currcnl--;
if (Currcnl < 0)
{
Currcnl = listPlace.Length - 1;
}
}
public void custcnl()
{
Console.WriteLine("Введите номер червоточины: ");
Currcnl = Convert.ToInt32(Console.ReadLine());

}
public void help()
{
Console.WriteLine("Для последовательного выбора портала используйте кнопки PageUp или PageDown.");
Console.WriteLine("Для ручного выбора нажмите на ENTER и введите номер червоточины вручную (от 0 до 9)");
Console.WriteLine("Для вызова помощи нажмите F1.");
Console.WriteLine("Для выключения телепорта, нажмите клавишу BackSpace.");
}

}





class Program
{
static void Main(string[] args)
{
TP_set teleporter = new TP_set();

do
{
Console.WriteLine("Нажмите пробел для активации телепорта");
}
while(Console.ReadKey(true).Key != ConsoleKey.Spacebar);

Console.Clear();
teleporter.power_on(true);
Console.WriteLine("Для последовательного выбора портала используйте кнопки PageUp или PageDown.");
Console.WriteLine("Для ручного выбора нажмите на ENTER и введите номер червоточины вручную (от 0 до 9)");
Console.WriteLine("Для вызова помощи нажмите F1.");
Console.WriteLine("Для выключения телепорта, нажмите клавишу BackSpace.");

do
{
switch (Console.ReadKey(true).Key)
{
case ConsoleKey.PageUp:
teleporter.nextcnl();
Console.Clear();
teleporter.ShowCanal();
break;
case ConsoleKey.PageDown:
teleporter.prevcnl();
Console.Clear();
teleporter.ShowCanal();
break;
case ConsoleKey.Enter:
teleporter.custcnl();
Console.Clear();
teleporter.ShowCanal();
break;
case ConsoleKey.F1:
Console.Clear();
teleporter.help();
break;
case ConsoleKey.Backspace:
teleporter.power_on(false);
break;
default:
Console.WriteLine("Неверная команда. Нажмите F1 чтобы увидеть список возможных команд.");
break;



}

}

while (teleporter.PowerTP != false);


Console.ReadKey();



}
}
}

Максим 24 янв 2015 21:17
Владимир
---
Следует это вынести из метода перед оператор switch

ConsoleKeyInfo cki = Console.ReadKey(true)

switch будет уже:

switch (cki.Key)

И в ChosenCH передать параметр ConsoleKeyInfo

Владимир 23 янв 2015 15:38
Спасибо за помощь!
Еще один вопрос. Приходиться 2 раза нажимать на клавишу с цифрой канала что бы он переключился.

public void ChosenCH() //канал по выбору
{
ConsoleKeyInfo cki = Console.ReadKey(true);
if (Char.IsNumber(cki.KeyChar))
{
if (Int32.TryParse(cki.KeyChar.ToString(), out ch))
{
ch = ch - 1;

if (pow == true && 0 <= ch && ch <= channels.Length)
{
NumberChannel = ch;
Console.WriteLine(Channel + channels[NumberChannel]);
}
else if (pow == true && 0 > ch && ch > channels.Length)
Console.WriteLine(CHError);
else
Console.WriteLine(TVoff);
}
}
}
.......
do
{
switch (Console.ReadKey(true).Key)
{
case ConsoleKey.F1:
robot.TVPower("on");
break;
case ConsoleKey.Add:
robot.NextCH();
break;
case ConsoleKey.Subtract:
robot.PrevCH();
break;
case ConsoleKey.NumPad1:
robot.ChosenCH();
break;
case ConsoleKey.NumPad2:
robot.ChosenCH();
break;
case ConsoleKey.NumPad3:
robot.ChosenCH();
break;
case ConsoleKey.NumPad4:
robot.ChosenCH();
break;
case ConsoleKey.NumPad5:
robot.ChosenCH();
break;
case ConsoleKey.F2:
robot.TVPower("off");
break;
default:
Console.WriteLine("таких клавиш нет в управлении ТВ");
break;
}
}

Максим 23 янв 2015 10:35
Владимир
---
Считайте клавишу. Проверить число ли это можно так:

ConsoleKeyInfo cki = Console.ReadKey(true);
if (Char.IsNumber(cki.KeyChar))
//случай когда число

Потом необходимо конвертировать символ в целое:

Int32 number;
if (Int32.TryParse(cki.KeyChar.ToString(), out number))
{
Console.WriteLine("Число: {0}", number);
}
else
{
Console.WriteLine("Невозможно конвертировать");
}

Владимир 22 янв 2015 15:47
День добрый!
Подскажите пожалуйста, как после ConsoleKey считать цифру нажатой клавиши для выбора канала?


namespace Urok_14
{
class TV
{
public bool pow = false;
public string TVon = "TV on";
public string TVoff = "TV off";
public string Channel = "Канал ";
public string CHError = "Channel ERROR";
public int NumberChannel = 0;
public string[] channels = new string[5] { "Первый канал", "Россия 1", "НТВ", "ТВЦентр", "5 канал" }; //каналы
public void TVPower(string power) //onn/off телевизора
{
if (power == "on")
{
pow = true;
Console.WriteLine(TVon);
Console.WriteLine(Channel + channels[NumberChannel]);
}
else if (power == "off")
{
pow = false;
Console.WriteLine(TVoff);
}
}
public void NextCH() //следующий канал
{
if (pow == true && 0 <= NumberChannel && NumberChannel < channels.Length - 1)
{
NumberChannel = NumberChannel + 1;
Console.WriteLine(Channel + channels[NumberChannel]);
}
else if (pow == true && NumberChannel == channels.Length - 1)
{
NumberChannel = 0;
Console.WriteLine(Channel + channels[NumberChannel]);
}
else
Console.WriteLine(TVoff);
}
public void PrevCH() //предыдущий канал
{
if (pow == true && 0 <= NumberChannel && NumberChannel < channels.Length)
{
NumberChannel = NumberChannel - 1;
Console.WriteLine(Channel + channels[NumberChannel]);
}
else if (pow == true && NumberChannel == 0)
{
NumberChannel = channels.Length - 1;
Console.WriteLine(Channel + channels[NumberChannel]);
}
else if (pow == true && 0 > NumberChannel && NumberChannel > channels.Length)
Console.WriteLine(CHError);
else
Console.WriteLine(TVoff);
}
public void ChosenCH() //канал по выбору
{
try
{
int ch = Convert.ToInt32(Console.ReadLine());
ch = ch - 1;

if (pow == true && 0 <= ch && ch <= channels.Length)
{
NumberChannel = ch;
Console.WriteLine(Channel + channels[NumberChannel]);
}
else if (pow == true && 0 > ch && ch > channels.Length)
Console.WriteLine(CHError);
else
Console.WriteLine(TVoff);
}
catch (FormatException)
{
Console.WriteLine("TV ERROR");
}
}
}
class Program
{
static void Main(string[] args)
{
TV robot = new TV();
Console.WriteLine("Добрый день!");
Console.WriteLine("Управление ТВ:");
Console.WriteLine("Вкл - (on), Выкл - (off)");
Console.WriteLine("Следующий канал (+)");
Console.WriteLine("Предыдущий канал (-)");
Console.WriteLine("Для выбора канала - цифра канала");
Console.WriteLine("Список каналов:");
for (int i = 0; i < robot.channels.Length; i++)
{
int nameCH = i + 1;
Console.WriteLine(nameCH + " - " + robot.channels[i]);
}
do
{
switch (Console.ReadKey(true).Key)
{
case ConsoleKey.F1:
robot.TVPower("on");
break;
case ConsoleKey.Add:
robot.NextCH();
break;
case ConsoleKey.Subtract:
robot.PrevCH();
break;
case ConsoleKey.NumPad1:
robot.ChosenCH();
break;
case ConsoleKey.NumPad2:
robot.ChosenCH();
break;
case ConsoleKey.NumPad3:
robot.ChosenCH();
break;
case ConsoleKey.NumPad4:
robot.ChosenCH();
break;
case ConsoleKey.NumPad5:
robot.ChosenCH();
break;
case ConsoleKey.F2:
robot.TVPower("off");
break;
default:
Console.WriteLine("таких клавиш нет в управлении ТВ");
break;
}
}
while (robot.pow!=false);
Console.ReadKey();
}
}
}

s3nger 20 янв 2015 22:02
class TV
{
private int simpleChannel;

public void ExChannel()
{
if (simpleChannel < 0)
{
Exception q = new Exception("Channel must be positive integer");
Console.WriteLine(q);
throw q;
}
}
public int NextChannel()
{
ExChannel();
return simpleChannel++;
}
public int PreviousChannel()
{
ExChannel();
return simpleChannel--;
}
public int ChangeChannel()
{
Console.WriteLine("Entry number of channel:");
simpleChannel = Convert.ToInt16(Console.ReadLine());
ExChannel();
return simpleChannel;
}
}

Виталий 20 янв 2015 16:35
admin

Спасибо! Реально не знал этого потому что в уроках этого нет. Что касается правильности кода, то вы полностью правы.

Максим 20 янв 2015 16:11
Виталий
---
Разница не так в размере кода, как в его "правильности", логично использовать тип bool там, где он идеально подходит.
Ну и так нет необходимости сравнивать, булевая переменная уже сама по себе true или false:

if (myTV.OffOn == true)

Лучше так:

if (myTV.OffOn) // для false !myTV.OffOn

Виталий 20 янв 2015 15:33
admin,

Пытался, пишет "оператор "==" нельзя использовать к string и bool". Однако в принципе разница только в размере кода, а так, я могу и bool. Сейчас переделывал, разобрался:

class Televisor
{
public bool OffOn = true;
public string kontent;
public string error = "";
public int kanalnumber = 0;
public void PlusKanal()
{
if (kanalnumber < 99)
kanalnumber++;
else
kanalnumber = 0;
}
public void MinusKanal()
{
if (kanalnumber > 0)
kanalnumber--;
else
error = "Ошибка. Каналов больше нет.";
}
}
class Pult
{
static void Main(string[] args)
{
Televisor myTV = new Televisor();
while (myTV.OffOn == true)
{
string control;
if (myTV.kanalnumber == 0)
myTV.kontent = "z - предыдущий канал, x - следующий канал, c - выключить телевизор. Если вы хотите выбрать канал по номеру, нажмите клавишу v и введите номер канала.";
else if (myTV.kanalnumber == 1)
myTV.kontent = "Вы смотрите Первый Канал.";
else
myTV.kontent = "";
Console.WriteLine("Номер канала:");
Console.WriteLine(myTV.kanalnumber);
Console.WriteLine(myTV.kontent);
Console.WriteLine(myTV.error);
control = Console.ReadLine();
if (control == "v")
myTV.kanalnumber = Convert.ToInt32(Console.ReadLine());
if (control == "z")
myTV.MinusKanal();
if (control == "x")
myTV.PlusKanal();
if (control == "c")
myTV.OffOn = false;
}
}
}

Максим 20 янв 2015 13:55
Виталий
---
Поле OffOn следует сделать bool, а не string

Виталий 20 янв 2015 09:50
На основе идеи Сергея сделал вот такую домашку:


class Televisor
{
public string OffOn = "On";
public string kontent;
public string error = "";
public int kanalnumber = 0;
public void PlusKanal()
{
if (kanalnumber < 99)
kanalnumber++;
else
kanalnumber = 0;
}
public void MinusKanal()
{
if (kanalnumber > 0)
kanalnumber--;
else
error = "Ошибка. Каналов больше нет.";
}
}
class Pult
{
static void Main(string[] args)
{
Televisor myTV = new Televisor();
while (myTV.OffOn == "On")
{
string control;
if (myTV.kanalnumber == 0)
myTV.kontent = "z - предыдущий канал, x - следующий канал, c - выключить телевизор. Если вы хотите выбрать канал по номеру, нажмите клавишу v и введите номер канала.";
else if (myTV.kanalnumber == 1)
myTV.kontent = "Вы смотрите Первый Канал.";
else
myTV.kontent = "";
Console.WriteLine("Номер канала:");
Console.WriteLine(myTV.kanalnumber);
Console.WriteLine(myTV.kontent);
Console.WriteLine(myTV.error);
control = Console.ReadLine();
if (control == "v")
myTV.kanalnumber = Convert.ToInt32(Console.ReadLine());
if (control == "z")
myTV.MinusKanal();
if (control == "x")
myTV.PlusKanal();
if (control == "c")
myTV.OffOn = "Off";
}
}
}

Максим 15 янв 2015 09:59
Сергей
---
Мягко говоря, код не очень. Начнем от самого простого.

1. Имя булевой переменной должно быть основано на одном из двух возможных состояний, а не сразу на двух. "onoff" - включеноВыключено, если в переменную записано true, становится непонятно - да, значит включено или да, значит выключено. Нормальные варианты имени - On, IsOn
2. canal += 1; меняем на canal ++; canal -= 1; на canal --;
3. Зачем в Main создавать переменную off, когда в классе уже есть поле, его стоит лишь открыть. Получилось что поле onoff никак не используется.
4. Список каналов у вас вне класса телевизор, это очень плохо и так быть не должно.
5. Массив компактнее инициализировать так:
string[] programms = new string[100] {"Video", "OPT"};
6. Ну и то о чем вы спрашивали - вводим трижды. Так потому, что у вас в коде ввод данных указан три раза, а должен быть всего один. Как так, вы сначала вводите данные, и если это не число - снова вводите два раза. Нужно сначала ввести данные (команду), а потом воспользовавшись одним из условных операторов, вызвать соответствующий команде метод. Что-то похожее на это:

do
{
var temp = Convert.ToString(Console.ReadLine());
temp.ToLower();
switch (temp)
{
case "on":
watch.TVon("on");
break;
case "next":
watch.NextCH();
break;
}
}
while (watch.tvon != false);

Сергей 13 янв 2015 19:44
Телевизор 99 каналов, 7 из которых имеют назначение, остальные пустые.
при включении пишет опции выбора канала и текущий канал - 0, есть возможность выбирать каналы по номеру, а так же переключать следующий(w), предыдущий(s) и функция выключения(x), при вводе некорректной информации игнорирует её.
Есть проблема - при вводе текстовой информации (w,s,x) требуется повторить её трижды, прежде чем получается результат, не могу понять в чем причина, помогите пожалуйста.

class TV
{
private int canal;
private bool onoff = false;
public int canalplusminus(string a)
{
if (a == "w")
{
if (canal < 99)
canal += 1;
else
canal = 0;
}
else if (a == "s")
{
if (canal > 0)
canal -= 1;
else
canal = 99;
}
return canal;
}
public int canalnumber(int number)
{
if (number >= 0 && number <= 99)
canal = number;
return canal;
}
public bool TVoff(string b)
{
if (b == "x")
onoff = true;
return onoff;
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Выберите канал (следующий канал - w, предыдущий канал - s, выключить - x):");
TV myTV = new TV();
string[] programms = new string[100];
int index = 0;
bool off = false;
programms[0] = "Video";
programms[1] = "ОРТ";
programms[2] = "РТР";
programms[3] = "НТВ";
programms[4] = "ТНТ";
programms[5] = "СТС";
programms[6] = "Ren-tv";
programms[7] = "M-tv";
do
{
if (index > 7)
{
programms[index] = "не назначен";
}
Console.WriteLine("Канал" + " " + index + " " + "-" + " " + programms[index]);
try
{
index = myTV.canalnumber(Convert.ToInt32(Console.ReadLine()));
}
catch (FormatException)
{
index = myTV.canalplusminus(Console.ReadLine());
off = myTV.TVoff(Console.ReadLine());
}
}
while (off != true);
Console.WriteLine("Выключение");
}
}
}
}

Максим 31 дек 2014 13:32
baks85
---
Спасибо, вас тоже с наступающим)

Стоило добавить в switch ветку default:


case "off":
watch.TVon("off");
break;
default:
Console.WriteLine("таких букав нету в нашем меню или ты просто
забыл включить шарабан");
break;


А после while убрать всё, кроме Console.ReadKey();

baks85 29 дек 2014 23:30
Добрый день Admin!!
Выполнил сегодня домашку по текущей теме, появился вопрос, как досрочно выйти из программы, а то при вводе команды выключения в моем "Телевизоре" он пишет тот же ответ что и при ошибочном вводе команды. Заранее спасибо за ответ! с наступающим НОВЫМ ГОДОМ!

вот собственно и домашка:
________________________________________________________________
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication17
{
class TV
{
public string[] channels = new string[5] { "Первый канал", "Второй канал", "Третий канал", "Четвертый канал", "Пятый канал" };
public int currentch = 0;
public bool tvon = false;

public void TVon(string condition) //включение / отключение телевизора
{
if (condition == "on")
{
tvon = true;
Console.WriteLine("Привет мой милый друг! Шарабан включен и ты смотришь " +channels[currentch]);
}
else if (condition == "off")
{
tvon = false;
Console.WriteLine("Вашь шарабан выключен, всего хорошего!");
}
}
public void NextCH () //следующий канал
{
if (tvon == true && 0 <= currentch && currentch < channels.Length-1)
{
currentch = currentch + 1;
Console.WriteLine("сейчас вы смотрите " + channels[currentch]);
}
else if (tvon == true && currentch == channels.Length - 1)
{
currentch = 0;
Console.WriteLine("сейчас вы смотрите " + channels[currentch]);
}
else
Console.WriteLine("сначала надо бы включить шарабан :(");
}
public void PrevCH () //предыдущий канал
{
if (tvon == true && 0 < currentch && currentch <= channels.Length)
{
currentch = currentch - 1;
Console.WriteLine("сейчас вы смотрите " + channels[currentch]);
}
else if (tvon == true && currentch == 0)
{
currentch = channels.Length - 1;
Console.WriteLine("сейчас вы смотрите " + channels[currentch]);
}
else if (tvon = true && 0 > currentch && currentch > channels.Length)
Console.WriteLine("такого канала несуществует :(");
else
Console.WriteLine("сначала надо бы включить шарабан :(");
}
public void ChosenCH () // канал по выбору
{
try
{
int ch = Convert.ToInt32(Console.ReadLine());
ch = ch - 1;

if (tvon == true && 0 <= ch && ch <= channels.Length)
{
currentch = ch;
Console.WriteLine("сейчас вы смотрите " + channels[currentch]);
}
else if (tvon == true && 0 > ch && ch > channels.Length)
Console.WriteLine("такого канала несуществует :(");
else
Console.WriteLine("Вашь шарабан выключен :(");
}
catch (FormatException)
{
Console.WriteLine("Моя маленькая обезьянка! Ты сломала шарабан :(");
TVon("off");
}
}
}
class Program
{
static void Main(string[] args)
{
TV watch = new TV();
Console.WriteLine("Здравствуй мой дорогой задрот! я хочу показать тебе интересную теле-передачу");
Console.WriteLine("что-бы включить шарабан, набери \"on\" в строке команд");
Console.WriteLine("что-бы переключить шарабан на следующий канал набери слово \"next\"");
Console.WriteLine("что-бы переключить шарабан на предыдущий канал набери слово \"prev\"");
Console.WriteLine("что-бы переключить шарабан на желаемый канал, набери \"choisech\", нажмите enter и наберите цыферку, ему соответствующую, после чего снова нажмите enter \r\n вот тебе список:");

for (int i = 0; i < watch.channels.Length; i++)
{
int numofch = i + 1;
Console.WriteLine(numofch +" - " +watch.channels[i]);
}
Console.WriteLine("что-бы наконец-то выключить шарабан к едрене-фене, набери волшебное слово \"off\"");

do
{
var temp = Convert.ToString(Console.ReadLine());
temp.ToLower();
switch (temp)
{
case "on":
watch.TVon("on");
break;
case "next":
watch.NextCH();
break;
case "prev":
watch.PrevCH();
break;
case "choisech":
watch.ChosenCH();
break;
case "off":
watch.TVon("off");
break;
}
}
while (watch.tvon != false);
Console.WriteLine("таких букав нету в нашем меню или ты просто забыл включить шарабан");
watch.TVon("off");
Console.ReadKey();


}
}
}

Deltazone 27 дек 2014 13:08
Думаю можно как нибудь доработать.
--------------------------------------------

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Program1
{
class TV
// Класс Телевизор
{
public int current = 1;
// Три варианта
public void next()
{
current ++;
}
public void prev()
{
current —;
}
public void scl(int sel)
{
current = sel;
}
}
class Change
{
static void Main(string[] args)
{
bool cont = false;
int ch, sel = 0;
TV tv1 = new TV();
do
{
Console.WriteLine("Сейчас включен " + tv1.current + " канал");
do
{
Console.WriteLine("\r\nВыбор канала:\r\nСледующий канал - 1\r\nПредыдущий канал - 0\r\nВыбор по номеру - 2");
try
{
ch = Convert.ToInt32(Console.ReadLine());
}
catch (FormatException)
{
ch = 3;
}
}
while (ch > 2 || ch <= 0);
switch (ch)
{
case 0:
tv1.prev();
break;
case 1:
tv1.next();
break;
case 2:
do
{
Console.WriteLine("\r\nВведите номер канала:\r\n");
try
{
sel = Convert.ToInt32(Console.ReadLine());
}
catch (FormatException)
{
sel = 0;
}
}
while (sel > 100 || sel <= 0);
tv1.scl(sel);
break;
}
Console.WriteLine("\r\nСейчас включен " + tv1.current + " канал\r\n");
Console.WriteLine("\r\nПродолжить?\r\ntrue - да\r\nfalse - нет");
cont = Convert.ToBoolean(Console.ReadLine());
}
while (cont == true);
}
}
}

pinguin-linuxoid 19 дек 2014 16:08
Только что глянул код ниже и понял что тупонул, можно было делать через массив)

pinguin-linuxoid 19 дек 2014 15:51
Доброго времени суток! Выкладую Пингвиний телевизор, в нем всего 3 канала но работает как часы. Уважаемый Админ - отметьте пожалуста недостатки.





class TV
{

private string chennal_one = "ICTV";
private string chennal_two = "1 + 1";
private string chennal_three = "First National";

public string current_chennel = "ICTV";

private void next_chennel()
{

switch (current_chennel)
{
case "ICTV": current_chennel = chennal_two; break;
case "1 + 1": current_chennel = chennal_three; break;
case "First National": current_chennel = chennal_one; break;
}

}
private void privious_chennel()
{
switch (current_chennel)
{
case "ICTV": current_chennel = chennal_three; break;
case "1 + 1": current_chennel = chennal_one; break;
case "First National": current_chennel = chennal_two; break;
}
}


public void menu()
{
string a = null;

Console.WriteLine("\n\n======================================================\n");
Console.WriteLine("Enter - \"+\" if you want see next channal\n");
Console.WriteLine("Enter - \"-\" if you want see next channal\n");
Console.WriteLine("Enter - \"1\" if you want see next channal\n");
Console.WriteLine("Enter - \"2\" if you want see next channal\n");
Console.WriteLine("Enter - \"3\" if you want see next channal\n");
Console.WriteLine("Enter - \"off\" if you want off tv");
Console.WriteLine("\n=======================================================\n\n");


while (a != "off")
{

try
{


a = Convert.ToString(Console.ReadLine());
switch (a)
{
case "+": next_chennel(); break;
case "-": privious_chennel(); break;
case "1": current_chennel = chennal_one; break;
case "2": current_chennel = chennal_two; break;
case "3": current_chennel = chennal_three; break;
default: throw new Exception();
}
Console.WriteLine("\n==========================================\n");
Console.WriteLine(" " + current_chennel + " ");
Console.WriteLine("\n===========================================\n");

}

catch (Exception)
{
Console.WriteLine("\n=============================================\n");
Console.WriteLine("AAAAAAAAAAAAAAA you break tv !! Asshole!!! )");
Console.WriteLine("\n=============================================\n");
}

}
}



class Program
{
static void Main(string[] args)
{

TV mytv = new TV();

Console.WriteLine(mytv.current_chennel);

mytv.menu();

}
}
}

}


Макс 05 дек 2014 23:04
class TV
{
private bool tvon=false;
private string[] channels = { "1+1", "ICTV", "Новий", "Інтер", "ТРК Україна", "M1", "Тоніс", "Аверс" };
private int ch=0;
public void TurnOnTV() // включаем телевизор
{
tvon=true;
Console.WriteLine("Телевизор включен!");
}
public void TurnOffTV() //выключаем телевизор
{
tvon=false;
Console.WriteLine("Телевизор выключен!");
}
public void GoNext() // следующий канал
{
if (tvon)
{
if (ch < channels.Length-1)
ch += 1;
else
ch = 0;
ChannelShow();
}
else

Console.WriteLine("Включите телевизор");
}
public void GoPrevious() //предыдущий канал
{
if (tvon)
{
if (ch > 0)
ch -= 1;
else
ch = channels.Length-1;
ChannelShow();
}
else

Console.WriteLine("Включите телевизор");
}
public void GetOnCurrent(int current) //переход на заданый канал
{
if (tvon)
if (current >= 0 && current < channels.Length)
{
ch = current;
ChannelShow();
}
else
Console.WriteLine("Такого канала не существует!");
else
Console.WriteLine("Включите телевизор");
}
public void ChannelShow() //информация о канале
{
Console.WriteLine("Вы смотрите " + channels[ch]);
}
}
class Program
{

static void Main(string[] args)
{
string temp;
int chan=0;
TV tel = new TV();
Console.WriteLine("Здравствуйте! Вас приветствует программа \"Телевизор\"");
Console.ReadKey();
Console.WriteLine("Для начала работы, вы должны включить телевизор");
Console.ReadKey();
Console.WriteLine("Введите On/Off для включения/выключения телевизора");
Console.WriteLine("Для выбора канала введите:");
Console.WriteLine(" - Next - переход на следующий канал;");
Console.WriteLine(" - Prev - переход на предыдущий канал;");
Console.WriteLine(" - GoTo[номер канала в квадратных скобках] - переход на указаный канал.");
Console.WriteLine("Для завершения работы програмы введите ProgOff");
while (true)
{
temp=Console.ReadLine();
temp.ToLower();
if (temp.StartsWith("goto"))
{
chan = Convert.ToInt32(temp.Substring(5, 1));
temp=temp.Remove(4);
}
switch(temp)
{
case "on":
tel.TurnOnTV();
break;
case "off":
tel.TurnOffTV();
break;
case "next":
tel.GoNext();
break;
case "prev":
tel.GoPrevious();
break;
case "goto":
tel.GetOnCurrent(chan);
break;
case"progoff":
System.Environment.Exit(0);
break;
default:
Console.WriteLine("Телевизор не понимает вашей команды! Пожалуйста используйте только те команды, которые были описаны!");
break;
}
}
}

}

Диманиак 21 ноя 2014 22:26
class TVSet
{
public int currentChannel = 1;
private int[] ListOfChannels = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
public void NextChannel()
{
if (currentChannel == ListOfChannels.Max())
currentChannel = ListOfChannels.Min();
else
currentChannel = ListOfChannels.ElementAt(currentChannel);
Console.WriteLine("Телевизор переключен на канал " + currentChannel);
}
public void PreviousChannel()
{
if (currentChannel == ListOfChannels.Min())
currentChannel = ListOfChannels.Max();
else
currentChannel = ListOfChannels.ElementAt(currentChannel-2);
Console.WriteLine("Телевизор переключен на канал " + currentChannel);
}
public void SwitchToChannel(int Channel)
{
if (ListOfChannels.Contains(Channel))
{
currentChannel = Channel;
Console.WriteLine("Телевизор переключен на канал " + currentChannel);
}
else
{
Console.WriteLine("Телевизор не поддерживает канал " + Channel);
Console.WriteLine("Текущий канал " + currentChannel);
}
}
}
class Program
{
static void Main(string[] args)
{
TVSet myTV = new TVSet();
Console.WriteLine("Телевизор включен на канале " + myTV.currentChannel);
Console.WriteLine("Ввведите команду (Q-выкл/N-сл.канал/P-пред.канал) или номер канала:");
string Command = "";
do
{
Command = Console.ReadLine().ToUpper();
int Channel;
if (Int32.TryParse(Command, out Channel))
myTV.SwitchToChannel(Channel);
else
switch (Command)
{
case "N":
myTV.NextChannel();
break;
case "P":
myTV.PreviousChannel();
break;
default:
Console.WriteLine("Введена неправильная команда!");
break;
}
}
while (Command != "Q");
Console.WriteLine("Телевизор выключен на канале " + myTV.currentChannel);
Console.ReadKey();
}
}

Максим 21 ноя 2014 18:59
Vox
---
Метод Console.ReadKey()

Можно использовать так:
if (Console.ReadKey(true).Key == ConsoleKey.F2)
Console.WriteLine("F2 Pressed.");

Vox 20 ноя 2014 21:47
Подскажите методы, которые будут считывать информацию о нажатой клавише без кнопки "Enter"?

class Tv
{
private int current_channel = 1;// Начальное значение канала
public void Forward_Channel()// Метод переключения канала вперед
{
if (current_channel > 98)
current_channel = 0;
current_channel++;
Console.WriteLine("Канал " + current_channel);
}
public void Back_Channel()// Метод переключения канала назад
{
if (current_channel < 2)
current_channel = 100;
current_channel--;
Console.WriteLine("Канал " + current_channel);
}
public void Rapid_Set_Channel()// Метод быстрого набора канала
{
Console.Write("Введите номер канала: ");
try
{
current_channel = Convert.ToInt32(Console.ReadLine());
if (current_channel > 0 && current_channel <= 99)
{
Console.WriteLine("Канал " + current_channel);
}
else
Console.WriteLine("Введите корректный канал");
}
catch (FormatException Format)
{
Console.WriteLine("Вы ввели не цифры!");
}
}


class Program
{
static void Main()
{
Tv Channel = new Tv();
Console.WriteLine("Канал " + Channel.current_channel);
Console.WriteLine("Для переключения каналов нажимайте +/-");
Console.WriteLine("Для быстрого переключения, нажмите 'c':");
bool b = true;
while (b == true)
{
string a = Convert.ToString(Console.ReadLine());
switch (a)
{
case "+":
Console.Clear();
Channel.Forward_Channel();
break;
case "-":
Console.Clear();
Channel.Back_Channel();
break;
case "c":
Console.Clear();
Channel.Rapid_Set_Channel();
break;
}
}
}
}
}
}

Viccotr 16 ноя 2014 01:40
namespace dozadacha
{
class TVSet
{
private static int minimal_channel_value = 0;
private static int maximal_channel_value = 20;
public int channel = 0;

public void set_channel(int arg)
{
if (arg >= minimal_channel_value &&
arg <= maximal_channel_value)
{
channel = arg;
}
else throw new Exception("Invalid channel value!");
}

public int get_channel()
{
return channel;
}

}

class Program
{
public static void Main(string[] args)
{
TVSet tv = new TVSet();
tv.set_channel(5);
bool ok = false;

while (!ok)
{
try
{
Console.Write("Enter channel: ");
tv.set_channel(Convert.ToInt16(Console.ReadLine()));
ok = true;
}
catch (Exception ex)
{
if (ex.Message == "Invalid channel value!")
Console.WriteLine(ex.Message);
else throw ex;
}
}
Console.ReadKey();
}
}
}

Solalot 11 ноя 2014 00:19
обшибка, исправил:
channel.currientChannel++ и -- на ...+1 и ...-1


Solalot 10 ноя 2014 23:52
Извиняюсь за спам, подсократил чуток:
class TV
{
public byte currientChannel;
}


class Program
{
static void Main(string[] args)
{
TV channel = new TV();
bool exit = true;
while (exit)
{
Console.WriteLine("1 - next channel; 2 - previus channel; 3 - choose channel from 1 to 255: ");
byte a = Convert.ToByte(Console.ReadLine());
switch (a)
{
case 1:
Console.WriteLine(channel.currientChannel++);
break;

case 2:
Console.WriteLine(channel.currientChannel--);
break;

case 3:
Console.Write("Channel: ");
channel.currientChannel = Convert.ToByte(Console.ReadLine());
goto case 1;

default:
Console.WriteLine("Invalid selection. Please select 1, 2, or 3.");
break;
}
}
}
}

Solalot 10 ноя 2014 23:32
Здравствуйте, господа!

class TV
{
public byte currientChannel;
public byte nextChannel()
{
currientChannel++;
return currientChannel;
}
public byte prevChannel()
{
currientChannel--;
return currientChannel;
}
}


class Program
{
static void Main(string[] args)
{
TV channel = new TV();

bool exit = true;
while (exit)
{
Console.WriteLine("1 - next channel; 2 - previous channel; 3 - choose channel from 1 to 255: ");
byte a = Convert.ToByte(Console.ReadLine());
switch (a)
{
case 1:
Console.WriteLine(channel.nextChannel());
break;

case 2:
Console.WriteLine(channel.prevChannel());
break;

case 3:
Console.WriteLine("Channel: ");
a = Convert.ToByte(Console.ReadLine());
channel.currientChannel = a;
//Console.WriteLine(a);
break;

default:
Console.WriteLine("Invalid selection. Please select 1, 2, or 3.");
break;
}
}
}
}

Алекс 21 окт 2014 16:27
namespace ConsoleApplication1
{
class tv
{
public static bool tvStatus;
private int chanel;
static int curentchn;
private int quantity;
public tv(int q)
{
tvStatus=true;
quantity = q;
}
public void tvOff()
{
tvStatus = false;
}
public bool gettvstatus()
{
return tvStatus;
}
public void nextchn()
{
curentchn++;
}
public void previouschn()
{
curentchn--;
}
public int getchanel()
{
return curentchn;
}
public void setchanel(int a)
{
curentchn = a;
}
}

class Program
{
static void Main()
{
Console.WriteLine("Настройка ТВ");
Console.WriteLine("Введите колличество каналов вашего тв");
tv cosmos=new tv(Convert.ToInt32(Console.ReadLine()));
int n=0;

while (cosmos.gettvstatus() == true)
{
Console.WriteLine("Номер канала"+cosmos.getchanel());

int a=1;
while (a == 1)
{
Console.WriteLine("Выберите действие");
Console.WriteLine("1 - переключить на следующий канал");
Console.WriteLine("2 - переключить на предыдущий канал");
Console.WriteLine("3 - переключить на выбранный канал");
Console.WriteLine("4 - Выключить телевизор");
try
{
n = Convert.ToInt32(Console.ReadLine());
a = 0;
}
catch (FormatException ex)
{
Console.WriteLine("Вы ввели не цифру");
}
}
switch (n)
{
case 1:
cosmos.nextchn();
break;
case 2:
cosmos.previouschn();
break;
case 3:
Console.WriteLine("Введите номер канала");
cosmos.setchanel(Convert.ToInt32(Console.ReadLine()));
break;
case 4:
cosmos.tvOff();
break;
}


}
}
}
}

Николай 20 окт 2014 21:59
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class TVset
{
private int current_channel;
private bool switchedOn;

public void SetChannel(int channel)
{
current_channel = channel;
}

public int Current_Channel()
{
return current_channel;
}

public void ChannelUp()
{
current_channel++;
}

public void ChannelDown()
{
current_channel--;
if (current_channel < 0)
current_channel = 0;
}

public void SwitchOn()
{
switchedOn = true;
}
public void SwitchOff()
{
switchedOn = false;
}
public bool TVsetStatus()
{
return switchedOn;
}
}
class Program
{
static void Main(string[] args)
{ TVset tv_1 = new TVset();
tv_1.SwitchOn();
Console.WriteLine("Выберите канал");
tv_1.SetChannel(Convert.ToInt32(Console.ReadLine()));
while (tv_1.TVsetStatus())
{
Console.WriteLine("1.Переключить канал 2.Выключить телевизор");
if (Convert.ToInt32(Console.ReadLine()) == 1)
{ Console.WriteLine("1.Переключить вверх 2.Переключить вниз");
if (Convert.ToInt32(Console.ReadLine()) == 1)
tv_1.ChannelUp();
else tv_1.ChannelDown();
}
else tv_1.SwitchOff();

}
}
}
}

Константин 10 окт 2014 12:28
namespace ConsoleApplication1
{
class TVSet
{
private int chanal=0;
public void chanalUp()
{
chanal ++;
Console.WriteLine("Вы переключили канал вверх. Номер канала: " + chanal);
}
public void ChanalDown()
{

if (chanal == 0)
Console.WriteLine("Ошибка. каналов со знаком минус нет. Текущий канал " + chanal);
else
{
chanal --;
Console.WriteLine("Вы переключили канал вниз. Номер канала: " + chanal);
}
}
public void numberOfChanal(int number)
{
if (number < 0)
Console.WriteLine("Ошибка. каналов со знаком минус нет. Текущий канал " + chanal);
else
{
chanal = number;
Console.WriteLine("Вы переключили канал. Номер канала: " + chanal);
}
}
}
class Program
{
static void Main(string[] args)
{
// Создайте класс Телевизор. В нем есть поле текущий канал. Предусмотрите в нем возможность переключения каналов: следующий канал, предыдущий канал, переход к каналу по номеру.
// Учтите, что канал не может иметь отрицательный номер.
int exit = 0;
TVSet myTV = new TVSet();
Console.WriteLine("Выберите действие: 1. канал вверх 2. канал вниз 3. ввести номер канала 4. выход");
while (exit != 4)
{
exit = Convert.ToInt32(Console.ReadLine());
switch (exit)
{
case 1:
myTV.chanalUp();
break;
case 2:
myTV.ChanalDown();
break;
case 3:
Console.WriteLine("Введите номер канала");
myTV.numberOfChanal(Convert.ToInt32(Console.ReadLine()));
break;
}
}
}
}
}

Slavik 02 окт 2014 23:32
спасибо за урок!
Посмотрите, можно что то поправить или модифицировать код

namespace TVset
{
class TV
{
public int currentChannel;

public int SelectChannel(TV Channel)// Input some channel
{
Channel.currentChannel = int.Parse(Console.ReadLine());
return Channel.currentChannel;
}
public void CurrentChannel(TV Channel)
{
Console.WriteLine("You are watching {0} channel now", Channel.currentChannel);
}//Current TV channel
public int NextChannel(TV Channel)
{
return Channel.currentChannel++;
}
public int PreviousChannel(TV Channel)
{
return Channel.currentChannel--;
}

}
class Program
{
static void Main(string[] args)
{
TV Channel = new TV();//channel
char action; // +, - , Inputchannel, OffTv
char question;

Console.WriteLine("Congratulations! You have set the TV");
Console.Write("Please enter channel: ");
Channel.SelectChannel(Channel);

if (Channel.currentChannel < 0)
{
Console.Write("\nError. You can not enter negative number!\n");
Console.Write("Please enter channel: ");
Channel.SelectChannel(Channel);
}
Channel.CurrentChannel(Channel);
do
{
Console.Write("\nSelect option: ");
Console.Write("\n\t+ - next channel\n" +
"\t- - previous channel\n" +
"\tc - transition channel under number\n" +
"\to - off the TV\n");
action = Convert.ToChar(Console.ReadLine());
switch (action)
{
case '+':
Channel.NextChannel(Channel);
Channel.CurrentChannel(Channel);
break;
case '-':
Channel.PreviousChannel(Channel);
Channel.CurrentChannel(Channel);
break;
case 'c':
Channel.SelectChannel(Channel);
Channel.CurrentChannel(Channel);
break;
case 'o':
Console.WriteLine("You turn off TV");
break;
default:
Console.WriteLine("This option is broken");
break;
}
Console.WriteLine("Do you want use option again (y/n) ?");
question = Convert.ToChar(Console.ReadLine());
} while (question != 'n');
Console.ReadKey();
}
}
}

гоша 12 сен 2014 08:35
class TV
{
public int CurrentChannel =1;
public void UpChannel()
{
if (CurrentChannel == 3)
CurrentChannel = 1;
else CurrentChannel = CurrentChannel + 1;
}
public void DownChannel()
{
if (CurrentChannel == 1)
CurrentChannel = 3;
else CurrentChannel = CurrentChannel - 1;
}

}
class Program
{
static void Main(string[] args)
{
TV televizor = new TV();
int a=1;
while(a>0)
{
Console.WriteLine("Vvedite kanal");
char x = Convert.ToChar(Console.ReadLine());
switch (x)
{
case '1':
televizor.CurrentChannel = 1;
Console.WriteLine(televizor.CurrentChannel);
break;
case '2':
televizor.CurrentChannel = 2;
Console.WriteLine(televizor.CurrentChannel);
break;
case '3':
televizor.CurrentChannel = 3;
Console.WriteLine(televizor.CurrentChannel);
break;
case '-':
televizor.DownChannel();
Console.WriteLine(televizor.CurrentChannel);
break;
case '+':
televizor.UpChannel();
Console.WriteLine(televizor.CurrentChannel);
break;
}
Console.WriteLine("Again?");

if (Convert.ToChar(Console.ReadLine()) == 'y')
continue;
a = -1;
}
Console.ReadKey();

}
}

Oper 10 сен 2014 12:04
У Степана хороший код, единственное что if можно было бы заменить на switch-case и сделать проверку что вводятся числа, когда вводишь номер канала.

Ну и хочу поделиться моим вариантом, если есть замечания, то пишите.


using System;
using System.Text.RegularExpressions;

namespace Lesson_14
{
//Создайте класс Телевизор.
class TVSet
{
//В нем есть поле текущий канал.
private int CurrentCh = 1;
//Предусмотрите в нем возможность переключения каналов:
//следующий канал,
public void NextCh()
{
if (CurrentCh == 99) CurrentCh = 1;
else CurrentCh++;

}
//предыдущий канал,
public void PrevCh()
{
if (CurrentCh == 1) CurrentCh = 99;
else CurrentCh--;
}
//переход к каналу по номеру.
public void NumCh(int ch)
{
CurrentCh = ch;
}
public int GetCurrentCh()
{
return CurrentCh;
}
}
class Program
{
static void Main(string[] args)
{
TVSet myTV = new TVSet();
//(Напишем код что бы тестировать методы класса TVSet)
string read_str;
//(У телевизора канлов не ограничено, поэтому добавлю от себя условие, что каныл у нас от 1 до 99)
string help_str = "УПРАВЛЕНИЕ ТЕЛЕВИЗОРОМ.\n\nСледующий канал: \"+\"\nПредидущий канал канал: \"-\"\nТак же можно ввести номер канала от 1 до 99\nДля выхода: \"*\"\nВызов данной справки: \"help\"\n\n";
Console.WriteLine(help_str);
do
{
read_str = Console.ReadLine();
switch (read_str)
{
case "+":
Console.WriteLine("P+");
myTV.NextCh();
break;
case "-":
Console.WriteLine("P-");
myTV.PrevCh();
break;
case "help":
Console.WriteLine(help_str);
break;
case "*":
break;
default:
//Учтите, что канал не может иметь отрицательный номер.
//(Обратимся к уроку 27 что бы было всё красиво и просто)
if (Regex.IsMatch(read_str, @"^[1-9]\d{0,1}$"))
{
Console.WriteLine("Переключаю на канал: " + Convert.ToInt32(read_str));
myTV.NumCh(Convert.ToInt32(read_str));
}
else Console.WriteLine("Ошибка! Команда не правильная.");
break;

}
//(Проверяем какой канал на самом деле включился)
Console.WriteLine("Текущий канал: " + myTV.GetCurrentCh() + "\n");
}
while (read_str != "*");
}
}
}

Максим 26 авг 2014 19:33
Ольга
---
Много чего есть:

1. TVSet.IsOff == false // лишнаяя операция, достаточно !TVSet.IsOff
2. Непонятно зачем тут список каналов private int[] Channels = new int[100]; достаточно было бы CurentChannel и максимального числа каналов
3. У вас есть switchedOn, зачем тогда нужно поле IsOff, еще и статическое. switchedOn стоило просто сделать открытым свойством
4. Ну и реализовать всё это без метода Prisvoit было бы лучше

Ниже в комментариях есть различные реализации, может что-то будет полезное

Ольга 25 авг 2014 12:24
Получилось длинновато.. Посмотрите? Можно как-то с тем же функционалом сократить код?

class TVSet
{
private bool switchedOn;
public static bool IsOff = false;
public static int CurentChannel;
private int[] Channels = new int [100];
public void ChannelsFilling()
{
for (int a = 0; a < Channels.Length; a++)
{
Channels[a]=a;
}
}
private void Prisvoit()
{
try
{
if (CurentChannel == Channels[CurentChannel])
{
Console.WriteLine("Вы смотрите " + CurentChannel + " канал");
}
else
{
Console.WriteLine("Такого канала не существует");
};
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("Такого канала не существует");
}

}
public void SwitchOn()
{
switchedOn = true;
}
public void SwitchOff()
{
switchedOn = false;
}
public void NextChannel()
{
CurentChannel = CurentChannel + 1;
Prisvoit();
}
public void PreviousChannel()
{
if (CurentChannel == 0)
{
CurentChannel = Channels.Length-1;
}
else
CurentChannel = CurentChannel - 1;
Prisvoit();
}
public void GoToChannel()
{
Console.WriteLine("На какой канал переключить? (0-"+(Channels.Length-1)+")");
try
{
CurentChannel = Convert.ToInt32(Console.ReadLine());
}
catch (FormatException)
{
Console.WriteLine("Вы ввели не число!");
}
catch (Exception)
{
Console.WriteLine("Вы ввели слишком большое число! Попробуйте еще раз!");
}
Prisvoit();
}
}

class Program
{
static void Main(string[] args)
{
int WhatToDo=0;
string OnOff;
TVSet myTV = new TVSet();
myTV.ChannelsFilling();
myTV.SwitchOn();
do
{
Console.WriteLine("Телевизор выключен. Хотите включить? (any button/n)\r\nВ противном случае программа закроется");
OnOff = Convert.ToString(Console.ReadLine());
if (OnOff != "n")
{
Console.WriteLine("Вы смотртите канал №" + TVSet.CurentChannel);
while (true)
{
Console.WriteLine("Нажмите любую кнопку, чтобы переключить канал или выключить телевизор");

Console.ReadKey();

Console.WriteLine("\r\nЧто вы хотите сделать?\r\n1. Переключить на следующий канал.\r\n2. Переключить на предыдущий канал\r\n3. Переключить на канал №...\r\n4. Выключить телевизор.");
try
{
WhatToDo = Convert.ToInt32(Console.ReadLine());
}
catch (FormatException)
{
Console.WriteLine("Вы ввели не число! Попробуйте еще раз!");
}
catch (Exception)
{
Console.WriteLine("Вы ввели слишком большое число! Попробуйте еще раз!");
}
if (WhatToDo == 1)
{
myTV.NextChannel();
}
else if (WhatToDo == 2)
{
myTV.PreviousChannel();
}
else if (WhatToDo == 3)
{
myTV.GoToChannel();
}
else if (WhatToDo == 4)
{
myTV.SwitchOff();
Console.WriteLine("Вы выключили телевизор, до новых встреч!");
TVSet.IsOff = true;
break;
}
else
{
Console.WriteLine("Вы неправильно ввели код действия, попробуйте еще раз");
}
}
}
else
TVSet.IsOff = true;
}
while (TVSet.IsOff == false);
Console.ReadKey();
}
}

Di3go 23 авг 2014 00:48
// Fluttershy :3
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;

namespace HelloWorld
{
class TV
{
static private int channel = 0;
public void NextChannel()
{
channel++;
}

public void ForwardChannel()
{
if (channel == 0)
Console.WriteLine("Channel must been >= 0");
else
channel--;
}

public int GetChannelNumber()
{
return channel;
}

public void SetChannelNumber(int ch)
{
if (ch >= 0)
channel = ch;
else
Console.WriteLine("Channel must been >= 0");
}

}

class Program
{
static void Main(string[] args)
{
TV test1 = new TV();
test1.NextChannel();
Console.WriteLine(test1.GetChannelNumber().ToString());
test1.SetChannelNumber(95);
Console.WriteLine(test1.GetChannelNumber().ToString());
test1.SetChannelNumber(-9);
Console.ReadKey();
}
}

}

n0n4m3r 04 авг 2014 11:13
class Television
{
private static int maxChannel = 99;
private static int minChannel = 0;
public static int curChannel;

public static void changeChannel(ConsoleKeyInfo k)
{
if (k.Key == ConsoleKey.UpArrow && curChannel < maxChannel)
{
curChannel++;
Console.WriteLine("Current channel: " + curChannel);
}
else if (k.Key == ConsoleKey.UpArrow && curChannel >= maxChannel)
{
curChannel = minChannel;
Console.WriteLine("Current channel: " + curChannel);
}
else if (k.Key == ConsoleKey.DownArrow && curChannel > minChannel)
{
curChannel--;
Console.WriteLine("Current channel: " + curChannel);
}
else if (k.Key == ConsoleKey.DownArrow && curChannel <= minChannel)
{
curChannel = maxChannel;
Console.WriteLine("Current channel: " + curChannel);
}
else if (k.Key == ConsoleKey.Spacebar)
{
do
{
Console.Clear();
Console.WriteLine("Choose channel: ");
curChannel = Convert.ToInt32(Console.ReadLine());
} while (curChannel < minChannel | curChannel > maxChannel);
Console.WriteLine("Current channel: " + curChannel);
}

}
}


Main(){
ConsoleKeyInfo pressed;
Television myTV = new Television();
Television.curChannel = 10;
do
{
Console.WriteLine("Press up or down to change channels or space to choose specific channel: ");
pressed = Console.ReadKey();
Television.changeChannel(pressed);
//Console.WriteLine(pressed.Key);

} while (pressed.Key != ConsoleKey.Escape);
}





Максим 01 авг 2014 14:14
Степан
---
Нормально

Степан 30 июл 2014 19:50
при желании можно допилить. а так вроде бы норм?
{
class myTV
{
public const int ChanelAmount = 10;
public int CurrentChanel;
public int ChanelUP()
{
if (CurrentChanel < ChanelAmount)
{
CurrentChanel++;
return CurrentChanel;
}
else
{
CurrentChanel = 1;
return CurrentChanel;
}
}
public int ChanelDOWN()
{
if (CurrentChanel != 1)
{
CurrentChanel--;
return CurrentChanel;
}
else
{
CurrentChanel = 10;
return CurrentChanel;
}
}
public int ChooseChanel()
{
Console.WriteLine("Input your chanel");
int NewChanel = Convert.ToInt32(Console.ReadLine());
if (NewChanel > 0 && NewChanel <= ChanelAmount)
CurrentChanel = NewChanel;
else Console.WriteLine("Eror, input corect chanel");
return CurrentChanel;
}
}
class Program
{
static void Main(string[] args)
{
myTV TV_1 = new myTV();
Random rand = new Random();
string action;
TV_1.CurrentChanel = rand.Next(9)+1;
do
{
Console.WriteLine("Current chanel number - " + TV_1.CurrentChanel);
Console.WriteLine("Chose some action:");
Console.WriteLine("'+' - next chanel");
Console.WriteLine("'-' - previos chanel");
Console.WriteLine("'=' - choose chanel");
Console.WriteLine("'0' - exit program");
action = Console.ReadLine();
if (action == "+")
TV_1.ChanelUP();
if (action == "-")
TV_1.ChanelDOWN();
if (action == "=")
TV_1.ChooseChanel();
}
while (action != "0");
}
}
}

Максим 28 июл 2014 15:06
Влад
---
Как-то не очень понятно зачем эти back и forward поля. Было бы лучше если бы всё через current работало

Влад 26 июл 2014 16:10
Уважаемый админ , оцените и мой код пож)
using System;

class Program
{
static void Main()
{
myTV my1 = new myTV();
string f = "forward";
string b = "backward";
string c = "choice";
string StringTmp;
int IntTmp;
Console.WriteLine("Введите:\nchoice - выбрать канал\nforward - вперед\nbackward - назад\nstop - завершение работы\n Текущий канал = 0\nВсего каналов: 100");
while ((StringTmp=Convert.ToString(Console.ReadLine())) != "stop")
{
if (StringTmp == f)
Console.WriteLine(my1.Forward());
else if(StringTmp ==b)
Console.WriteLine(my1.Back());
else if (StringTmp == c)
{
Console.WriteLine("Введите канал (0 - 100)");
IntTmp = Convert.ToInt32(Console.ReadLine());
my1.change(IntTmp);
Console.WriteLine(IntTmp);
}
}


}
}
class myTV
{
public int AllChannels = 100;
private int current = 0;
private int back = 100;
private int forward = 1;

public int Forward()
{
if (current != 100)
{
back = current;
current = forward;
forward++;
}
else
{
current = 0;
back = 100;
forward = 1;
}
return current;

}

public int Back()
{
if (current != 0)
{
forward = current;
current = back;
back--;
}
else
{
current = 100;
forward = 0;
back = 99;
}
return current;

}
public void change(int a)
{
current = a;
back = a-1;
forward = a+1;

}

}




Максим 13 июл 2014 15:26
AlexSerikov
---
Хорошо, только choise бы еще private сделать

Максим 13 июл 2014 15:21
Albert
---
Плохо то, что вы сделали класс TV статическим. Здесь так быть не должно

Albert 11 июл 2014 21:52
Admin, если у Вас будет время - хотел бы выслушать Вашу критику!

class TV
{
public static int channel;
public static int SwitchChannel(int channel, int wish)
{
if (wish == 1)
{
channel++;
return channel;
}
else if (wish == 2)
{
channel--;
return channel;
}
else if (wish == 0)
{
return channel;
}
else
{
return channel;

}
}
}

class Program
{

static void Main(string[] args)
{

bool error;
int chan=0;
do
{
try
{
Console.WriteLine("введите текущий канал");
chan = Convert.ToInt32(Console.ReadLine());
error = false;


if (chan < 0)
{
Console.WriteLine("не может быть отрицательным");
error = true;
}

}
catch (Exception)
{
Console.WriteLine("неверный формат");
error = true;
}
}
while (error == true);

bool exit;

do
{
Console.WriteLine("Хотите переключить? 0-нет, 1-да, вверх 2-да, вниз");
int wish = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Текущий канал: " + TV.SwitchChannel(chan, wish));
Console.WriteLine("Выключить? 0-нет, 1-да");
if (Convert.ToInt32(Console.ReadLine()) == 0)
{
exit = false;
}
else
{
exit = true;
}
}
while (exit == false);

}
}

AlexSerikov 02 июл 2014 19:11
Забыл исправить числа 10 на константу (я ее не зря завел, но легко позабыл). Блин. Вот плохо, что сообщения нельзя редактировать =(

AlexSerikov 02 июл 2014 19:06
Ну как то так. Долго маялся. Написал быстро, дебажил, писал try-catch, работал напильником в сумме часа 2.
Ваше мнение, уважаемый Admin ?

namespace sampleClasses
{
class TV
{
private const int chanel_amount = 10;
public int chanel_now = 1;
public char choise;
public void choose()
{
Console.Write("Ввод команды: ");
try
{
choise = Convert.ToChar(Console.ReadLine());
}
catch (FormatException)
{
Console.WriteLine("Введите символ, указанный в инструкции к TV");
}

if (choise == '+')
{
next_chanel();
return;
}
else if (choise == '-')
{
last_chanel();
return;
}
else if (choise == '=')
{
set_chanel();
return;
}
else if (choise == '0')
{
Console.WriteLine("Завершение работы");
return;
}
else if (choise == '/')
{
clear_console();
return;
}
else if (choise == 'h')
{
get_help();
return;
}
else
{
Console.WriteLine("Неизвестное действие");
choose();
}
}
public void get_help()
{
Console.WriteLine("Вперед +");
Console.WriteLine("Назад -");
Console.WriteLine("Установить канал =");
Console.WriteLine("Очистить консоль /");
Console.WriteLine("Помощь h");
Console.WriteLine("Выйти 0");
TV_continue();
return;
}
public void clear_console()
{
Console.Clear();
TV_continue();
return;
}
public int next_chanel()
{
if (chanel_now == chanel_amount)
{
chanel_now = 1;
}
else
{
chanel_now++;
}
Console.WriteLine("Сейчас вы находитесь на канале " + chanel_now);
TV_continue();
return chanel_now;
}
public int last_chanel()
{
if (chanel_now == 1)
{
chanel_now = 10;
}
else
{
chanel_now--;
}
Console.WriteLine("Сейчас вы находитесь на канале " + chanel_now);
TV_continue();
return chanel_now;
}
public int set_chanel()
{
Console.WriteLine("Введите нужный вам канал. На данный момент вам доступны каналы от 1 до " + chanel_amount);
try
{
chanel_now = Convert.ToInt32(Console.ReadLine());
}
catch (FormatException)
{
Console.WriteLine("Не правильная команда");
}

if (chanel_now >= 1 && chanel_now <= 10)
{
Console.WriteLine("Сейчас вы находитесь на канале " + chanel_now);
TV_continue();
}

else
{
Console.WriteLine("Такой канал Вам не доступен. Попробуйте еще раз");
set_chanel();
}

return chanel_now;
}
public void TV_continue()
{
Console.WriteLine("Введите ваше следующее действие");
choose();
return;
}
public void Exit()
{
Console.WriteLine("Выход");
return;
}

}
class Program
{

static void Main()
{
TV myTV = new TV();
Console.WriteLine("Вас приетствует TV");
Console.WriteLine("Текущий канал " + myTV.chanel_now);
Console.WriteLine("Перечень возможных действий:");
Console.WriteLine("Вперед +");
Console.WriteLine("Назад -");
Console.WriteLine("Установить канал =");
Console.WriteLine("Очистить консоль /");
Console.WriteLine("Помощь h");
Console.WriteLine("Выйти 0");
myTV.choose();
Console.ReadKey();

}
}
}

Максим 26 июн 2014 18:08
zloy_proger
---
if (channel_now <= 10 && channel_now >= 1) // здесь вместо 10 должна была бы быть объявленная константа. А в целом очень хорошо

Максим 26 июн 2014 18:03
Mary
---
Что-то не работает ваше творчество, поменял это:

TekChannel = TekChannel > 1 ? TekChannel-- : TekChannel;
TekChannel = TekChannel < Number ? TekChannel++ : TekChannel;

на

TekChannel = TekChannel > 1 ? TekChannel-1 : TekChannel;
TekChannel = TekChannel < Number ? TekChannel+1 : TekChannel;

zloy_proger 25 июн 2014 15:21
может будут какие советы

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace классы
{
class TV
{
private const int channel_amount = 10;
public int channel_now = 1;
public int channel_next()
{
channel_now++;
if(channel_now>channel_amount)
{
channel_now = 1;
return (channel_now);
}
return (channel_now);
}
public int channel_pre()
{
channel_now--;
if(channel_now<1)
{
channel_now = channel_amount;
return (channel_now);
}
return (channel_now);
}
public int channel_enter()
{
Console.WriteLine("Введите канал");
channel_now = Convert.ToInt32(Console.ReadLine());
if(channel_now<=10 && channel_now>=1)
{
return (channel_now);
}
else
{
channel_enter();
}
return (1);
}
}
class program
{
static void channel_go(TV my_TV)
{
Console.WriteLine("Текущий канал: " + my_TV.channel_now);
Console.WriteLine("Выберите действие");
Console.WriteLine("Предыдущий канал: -");
Console.WriteLine("Следующий канал: +");
Console.WriteLine("Ввести канал: 1");
Console.WriteLine("ВЫход: 0");
string help_str = Console.ReadLine();
if(help_str=="+")
{
my_TV.channel_next();
channel_go(my_TV);
return;
}
if(help_str=="-")
{
my_TV.channel_pre();
channel_go(my_TV);
return;
}
if(help_str=="1")
{
my_TV.channel_enter();
channel_go(my_TV);
return;
}
if(help_str=="0")
{
Console.WriteLine("Завершение работы");
return;
}
else
{
Console.WriteLine("Неизвестное действие");
channel_go(my_TV);
return;
}
}
static void Main(string[] args)
{
TV my_TV = new TV();
channel_go(my_TV);
}
}
}

Mary 24 июн 2014 15:19
Добрый день.
Можно тогда и моё "творчество" оценит..

namespace hello_world
{
public class TV
{
public int Number;
public int TekChannel;

public void Previous()

{
TekChannel = TekChannel > 1 ? TekChannel-- : TekChannel;
Console.WriteLine(TekChannel == 1
? "Это самый первый канал = " + TekChannel
: "Предыдущий канал = " + TekChannel);
}

public void Next()
{
TekChannel = TekChannel < Number ? TekChannel++ : TekChannel;
Console.WriteLine(TekChannel == Number
? "Это последний канал = " + TekChannel
: "Следующий канал = " + TekChannel);
}
}

internal class Program
{
private static void Main(string[] args)
{
string command;
var tv = new TV();

do
{
try
{
Console.WriteLine("Введите количество каналов");
tv.Number = Convert.ToInt32(Console.ReadLine());
if (tv.Number < 1)
{
Console.WriteLine("Количество каналов должно быть больше нуля. Повторите ввод");
}
}
catch (FormatException)
{
Console.WriteLine("Вы ввели некорректное значение. Повторите ввод");
}
} while (tv.Number < 1);

do
{
try
{
Console.WriteLine("введите текущий канал");
tv.TekChannel = Convert.ToInt32(Console.ReadLine());
if (tv.TekChannel > tv.Number)
{
tv.TekChannel = tv.Number;
Console.WriteLine("Канал выходит за границы диапазона. Текущий канал = " + tv.TekChannel);
}
else if (tv.TekChannel < 1)
{
tv.TekChannel = 1;
Console.WriteLine("Канал выходит за границы диапазона. Текущий канал = " + tv.TekChannel);
}
}
catch (Exception)
{
Console.WriteLine("Вы ввели некорректное значение. Повторите ввод");
throw;
}
} while (tv.TekChannel < 1 || tv.TekChannel > tv.Number);

do
{
Console.WriteLine("Введите команду. n - следующий канал, p - предыдущий, q - выход");
command = Console.ReadLine();

switch (command)
{
case "n":
tv.Next();
break;

case "p":
tv.Previous();
break;

case "q":
break;

default:
Console.WriteLine("Вы ввели не верную команду. Попробуйте ещё раз");
break;
}
} while (command != "q");
}
}
}

Максим 19 июн 2014 14:40
Кот Тимофей
---
Да, в большинстве случаев static методы бывают именно public. А вот аналогия плохая. Модель, габариты могут быть только у конкретного телевизора (объекта). Что если в программе необходимо использовать несколько телевизоров, что тогда делать с габаритами, которые объявленны как static? Статическим методом, например, можно было бы обработать массив телевизоров (сортировка, удаление...)

Кот Тимофей 18 июн 2014 19:27
Я правильно понимаю, что в большинстве случаев static методы бывают именно public иначе можно создать обьект и обойтись internal-методом?
С другой стороны создавать private static методы можно только для использования из других рядом стоящих static методов, иначе до них не достучаться без создания обьекта?
Что касается аналогии, то продолжая тему телевизора, в static методах можно узнавать например модель, габариты, количество каналов и потребляемую мощность. А вот пощелкать кнопками на немуществующем телевизоре(обьекте) не получится.

Было бы неплохо тему этого и предыдущего уроков в инфографике найти, а то в голове не уложилось.

Жека 29 май 2014 22:27
Немного больше функционала
class Program
{
static void Main(string[] args)
{
string Enter = null;
TV myTV = new TV();
myTV.Clear();
while (Enter != "exit")
{
Enter = Console.ReadLine();
switch (Enter)
{
case "+":
myTV.Next_Channel();
break;
case "-":
myTV.Back_Channel();
break;
case "?":
myTV.Get_Channel();
break;
case "set":
myTV.Set_Channel();
break;
case "help":
myTV.Print_Commands();
break;
case "clear":
myTV.Clear();
break;
}
}
}
}
class TV
{
public int This_Channel = 1;
private int Min_Channel = 0;
public int Max_Channel= 9;
public string Name_Channel;
private string[] Channel_Array = { "Интер", "1+1", "Новый канал", "Трк Украина", "ICTV", "Мега", "ТеТ", "НТВ", "СТБ", "САТ" };
public int Get_Channel()
{
Name_Channel = "[" + This_Channel + "] " + "\"" + Channel_Array[This_Channel] + "\"";
Console.WriteLine(Name_Channel);
return 0;
}
public void Next_Channel()
{
if (This_Channel < Max_Channel)
{
This_Channel += 1;
}
else
{
This_Channel = Min_Channel;
}
Get_Channel();
}
public void Back_Channel()
{
if (This_Channel > Min_Channel)
This_Channel -= 1;
else
This_Channel = Max_Channel;
Get_Channel();
}
public void Set_Channel()
{
try
{
Console.WriteLine("Введите номер канала:");
int Input = Convert.ToInt32(Console.ReadLine());
if (Input > Min_Channel && Input < Max_Channel)
This_Channel = Input;
else
Console.WriteLine("Канал не найден!");
}
catch (FormatException)
{
Console.WriteLine("Неверный формат!");
}
finally
{
Get_Channel();
}
}
public void Print_Commands()
{
string[,] commands = {
{ "+", "Следующий канал" },
{ "-", "Предыдущий канал" },
{ "?", "На каком я канале" },
{ "set", "Ввести номер канал" },
{ "clear", "Очистить экран" },
};
for (int i = 0; i < commands.GetLength(0); i++)
{
Console.WriteLine("\"" + commands[i, 0] + "\"" + " - " + commands[i, 1]);
}
}
public void Clear()
{
Console.Clear();
Console.WriteLine("Введите \"help\" просмотреть доступные команды");
}
}

Алексей 22 май 2014 08:58
Евгений, а зачем в case "enter": прописывать строчку
myTV.chanel = myTV.chanelValue;? Программа же делает это действие в public void chanelEnter(). Может я что-то не понимаю, но на мой взгляд она лишняя.

Евгений 12 май 2014 15:53
Немного переделанное задание, с возможностью ввода канала.

TVChanel.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lesonTV
{
class TVChanel
{
public int chanel;
public int chanelValue;

public void chanelNext()
{
if (chanel == 10)
{
chanel = 0;
chanel++;
}
else
chanel++;

}

public void chanelPrew()
{
if (chanel == 1)
{
chanel = 11;
chanel--;
}
else
chanel--;
}

public void chanelEnter()
{
chanel = chanelValue;
}
}
}

Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lesonTV
{
class Program
{
static void Main(string[] args)
{
TVChanel myTV = new TVChanel();

string[] chanel = { "Первый", "Россия 24", "НТВ", "Пятый", "СТС", "ТНТ", "2х2", "Animal Planet", "Discovery", "Россия Спорт", };
string enterValue = "";

Console.WriteLine("Введите + или - для переключение канала. Введите enter для ввода канала. Введите exit для выхода из программы!");

while(enterValue!="exit")
{
enterValue = Console.ReadLine();

switch (enterValue)
{
case "+":
myTV.chanelNext();
Console.WriteLine("Текущий канал: " + myTV.chanel + " " + chanel[myTV.chanel-1]);
break;

case "-":
myTV.chanelPrew();
Console.WriteLine("Текущий канал: " + myTV.chanel + " " + chanel[myTV.chanel - 1]);
break;

case "enter":
try
{
Console.Write("Введите номер канал: ");
myTV.chanelValue = Convert.ToInt32(Console.ReadLine());
myTV.chanel = myTV.chanelValue;
myTV.chanelEnter();
Console.WriteLine("Текущий канал: " + myTV.chanel + " " + chanel[myTV.chanel - 1]);

}
catch(IndexOutOfRangeException ie)
{
Console.WriteLine("Невозможно найти канал! Всего каналов " + chanel.Length);
}
catch(FormatException fe)
{
Console.WriteLine("Вы ввели недопустимый символ!");
}
break;
default:
Console.WriteLine("Вы должны вводить только + или - для переключения каналов!");
break;
}
}
}
}
}

Евгений 12 май 2014 10:33
Спасибо за уроки, все очень интересно и понятно!
Вот моё ДЗ :)

TVChanel.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lesonTV
{
class TVChanel
{
public int chanel;

public void chanelNext()
{
if (chanel == 10)
{
chanel = 0;
chanel++;
}
else
chanel++;

}

public void chanelPrew()
{
if (chanel == 1)
{
chanel = 11;
chanel--;
}
else
chanel--;
}
}
}

Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lesonTV
{
class Program
{
static void Main(string[] args)
{
TVChanel myTV = new TVChanel();

string[] chanel = { "Первый", "Россия 24", "НТВ", "Пятый", "СТС", "ТНТ", "2х2", "Animal Planet", "Discovery", "Россия Спорт", };
string enterValue = "";

Console.WriteLine("Введите + или - для переключение канала. Введите exit для выхода из программы!");

while(enterValue!="exit")
{
enterValue = Console.ReadLine();

switch (enterValue)
{
case "+":
myTV.chanelNext();
Console.WriteLine("Текущий канал: " + myTV.chanel + " " + chanel[myTV.chanel-1]);
break;

case "-":
myTV.chanelPrew();
Console.WriteLine("Текущий канал: " + myTV.chanel + " " + chanel[myTV.chanel - 1]);
break;

default:
Console.WriteLine("Вы должны вводить только + или - для переключения каналов!");
break;
}
}
}
}
}

Илюхинг 06 май 2014 12:26
Блин еще косяки нашел. Программу начал писать до майских праздников продолжил после. Думал устранил их. В след. раз буду внимательней выкладывая код. Сори

Илюхинг 06 май 2014 12:23
Вот мое видение.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Class
{
public class TVSet
{
public int Channal = 5;
public void TVMinus()
{
if (Channal == 0) Channal = 99;
else Channal--;
}

public void TVPlus()
{
if (Channal == 99) Channal = 0;
else Channal++;
}

public void TVTo_Channel()
{
do
{
Console.WriteLine("Введите номер канала: ");
Channal = Convert.ToInt32(Console.ReadLine());
if (Channal < 0) Console.WriteLine("канал не может быть отрицательным! Попробуйте еще раз!");
} while (Channal < 0);

}

public int Numcan()
{
return Channal;
}


}

class Program
{
static void Main(string[] args)
{
int menu;
TVSet ob = new TVSet();

do
{
Console.WriteLine("Пульт ТВ. Текущий канал: " + ob.Numcan());
Console.WriteLine("Нажмите 1 - повысить канал, 2 - понизить канал, 3 - выбор канала, 4 - выключить телевизор.");
menu = Convert.ToInt32(Console.ReadLine());
switch (menu)
{
case 1:
ob.TVPlus();
break;
case 2:
ob.TVMinus();
break;
case 3:
ob.TVTo_Channel();
break;

}
} while (menu == 4);
Console.WriteLine("Номер канала: "+ ob.Numcan());



Console.ReadKey();

}
}

}



Serj 05 май 2014 19:40
Спасибо, учту.

Максим 05 май 2014 17:50
Serj
---
Программа прикольная получилась. Есть конечно же некоторые замечания:

1. current_channel += 1 // лучше использовать в таких случаях инкрементацию current_channel++

2. Класс этот стоило бы назвать как Телевизор, а не Пульт. Текущий канал хранится в телевизоре. Если делать пульт, тогда это было бы 2 класса - Телевизор и Пульт, пульт бы привязывался к конкретному телевизору и т.д.

3. Набор каналов relay должен хранится в телевизоре, и не стоит его передавать при каждом изменении канала. Когда вы в жизни нажимаете на кнопку "следующий канал", вы же никакой дополнительной информации при этом не передаете

Serj 04 май 2014 19:02
Уважаемый Admin вот моё ДЗ. Хотелось бы узнать вашу оценку. Я делал свою программу так чтобы количество каналов можно было менять добавляя или удаляя их из массива relay. То есть телевизор настроился на сколько то каналов а пользователь их с пульта переключает. Спасибо за уроки.

internal class TVpult
{
public int current_channel; // Текущее значение канала

public void Channel_Up(string[] relay) // Кнопка "канал +"
{
if (current_channel == relay.Length-1)
current_channel = 0;
else current_channel += 1;
}

public void Channel_Low(string[] relay) // Кнопка "канал -"
{
if (current_channel == 0)
current_channel = relay.Length-1;
else current_channel -= 1;
}
public void Channel_Numb(string [] relay) // Кнопка "номер канала"
{
start:
int b = 0;
for (int i = 0; i < relay.Length; i++)
{
Console.WriteLine((i + 1) + " - " + relay[i]);
}
try
{
b = Convert.ToInt32(Console.ReadLine());
}
catch (FormatException)
{
goto start;
}
if ((b > 0) && (b < relay.Length + 1))
{
current_channel = --b ;
}

}

}


class Program
{
static void Main(string[] args)
{
char a = ' ';
TVpult myTV = new TVpult();
string[] relay = { "1+1", "ictv", "discovery", "MTV", "inter", "tonis","CNN"}; //Сюда можно вписать сколько угодно каналов
start:
Console.Clear();
Console.WriteLine("Сейчас на экране {0}. Кнопка PG+ (+) Кнопка PG-( - ) \nВвести номер канала в ручную(*) Выключить телевизор (/)", relay[myTV.current_channel]);
try
{
a = Convert.ToChar(Console.ReadLine());
}
catch (FormatException)
{
goto start;
}
switch (a)
{

case '+':
myTV.Channel_Up(relay);
goto start;

case '-':
myTV.Channel_Low(relay);
goto start;

case '*':
myTV.Channel_Numb(relay);
goto start;

case '/':
break;

default:
Console.Clear();
Console.WriteLine("Вы нажали не ту кнопку. Попробуйте еще раз.");
Console.ReadLine();
goto start;
}

Игорь 24 апр 2014 14:04
class TVSet
{
public static uint Chanal= 0;
public void TVPlus()
{
if (Chanal == 99)
{
Chanal = 0;
}
else
{
Chanal++;
}
}
public void TVMinus()
{
if (Chanal == 0)
{
Chanal = 99;
}
else
{
Chanal--;
}
}
public void Go_ToCH()
{
Console.Write("Enter the chanal number: ");
Chanal = Convert.ToUInt32(Console.ReadLine());
}
}
class Program
{
static void Main()
{
string message = Convert.ToString(TVSet.Chanal);
TVSet ob = new TVSet();
Console.WriteLine("1. Plus chanal\n" + "2. Minus chanal\n" + "3. Go to chamal");
switch (Convert.ToInt32(Console.ReadLine()))
{
case 1:
ob.TVPlus();
break;
case 2:
ob.TVMinus();
break;
case 3:
ob.Go_ToCH();
break;
}
Console.WriteLine(message);
Console.ReadLine();
}
}

Максим 02 апр 2014 18:55
Ромик
---
Вы перед тем как постить сюда код, проверяйте его, пробуйте найти баги. А редактирование, и не только его может потом добавлю

Ромик 02 апр 2014 16:22
Очень было бы хорошо, если бы мо