public class Checker {
const double _stdDelta = 10.0d;
Dictionary<string, DateTime> _dictionary = new Dictionary<string, DateTime>();
bool check( string input, double? delta = null ) {
if ( !_dictionary.ContainsKey( input ) ) {
_dictionary.Add( input, DateTime.Now );
return true;
}
var d = delta.HasValue ? delta.Value : _stdDelta;
if ( ( DateTime.Now - _dictionary[input] ).TotalSeconds > d ) {
_dictionary[input] = DateTime.Now;
return true;
}
return false;
}
public void CheckConditionByIfs( int condition ) {
if ( condition > 100 && check( "second_condition", 20.0d ) ) {
Console.WriteLine( "Second_condition met, custom timeout set." );
} else if ( condition > 20 && check( "first_condition" ) ) {
Console.WriteLine( "First_condition met, standard timeout set." );
} else {
Console.WriteLine( "Nothing." );
}
}
public void CheckConditionBySwitch( int condition ) {
switch ( condition ) {
case var _ when condition > 100 && check( "second_condition", 20.0d ):
Console.WriteLine( "Second_condition met, custom timeout set." );
return;
case var _ when condition > 20 && check( "first_condition" ):
Console.WriteLine( "First_condition met, standard timeout set." );
return;
}
Console.WriteLine( "Nothing." );
}
}
var rnd = new Random();
var values = new int[] { 10, 15, 20, 25, 30, 35, 40, 50, 60, 70, 80, 100, 150, 200 };
var c = new Checker();
int cnd;
while ( true ) {
cnd = values[rnd.Next( values.Length )];
Console.WriteLine( cnd );
if ( rnd.Next( 100 ) > 50 )
c.CheckConditionBySwitch( cnd );
else
c.CheckConditionByIfs( cnd );
Thread.Sleep( 1500 );
}
Необходимо чтобы при инициализации объекта (т.е. вызове конструктора) метод проверял сумму этих переменных и либо по новой запрашивал значения либо прерывал с ошибкой.
using System;
using System.Collections.Generic;
using System.Linq;
namespace Toster.Q561594 {
public static class Extentions {
public static string Join<T>( this IEnumerable<T> list, string separator = "," )
=> string.Join( separator, list );
public static int[] ConvertConsoleInput( this string input, params char[] separators )
=> input.Split( separators, StringSplitOptions.RemoveEmptyEntries )
.Select( int.Parse )
.ToArray();
}
public class Triangle {
public readonly int A;
public readonly int B;
public readonly int Y;
public Triangle(int a, int b, int y) {
A = a; B = b; Y = y;
}
public static bool IsValidAngles( int a, int b, int y )
=> a > 0 && b > 0 && y > 0 && ( a + b + y ) == 180;
public override string ToString()
=> $"( {nameof( A )}: {A}, {nameof( B )}: {B}, {nameof( Y )}: {Y} )";
}
class Program {
static void Main( string[] args ) {
int[] temp;
while ( true ) {
Console.Write( "Enter three valid space separated angles and press Enter: " );
try {
temp = Console.ReadLine().ConvertConsoleInput( ' ' );
if ( temp.Length != 3 )
throw new IndexOutOfRangeException($"Incorrect number of angles: {temp.Length}");
if ( Triangle.IsValidAngles( temp[0], temp[1], temp[2] ) )
break;
else
throw new InvalidOperationException( $"Incorrect angles: ( {temp.Join( ", " )} )" );
} catch ( Exception ex ) {
Console.WriteLine( "Error. " + ex.Message + Environment.NewLine );
}
}
var triangle = new Triangle( temp[0], temp[1], temp[2] );
Console.WriteLine( $"Valid triangle object was created: {triangle.ToString()}" );
Console.ReadLine();
}
}
}
Enter three valid space separated angles and press Enter: i'm typing
Error. Input string was not in a correct format.
Enter three valid space separated angles and press Enter: 1 2 3
Error. Incorrect angles: ( 1, 2, 3 )
Enter three valid space separated angles and press Enter: 100 10000
Error. Incorrect number of angles: 2
Enter three valid space separated angles and press Enter: 5 100 75
Valid triangle object was created: ( A: 5, B: 100, Y: 75 )
public class SimpleSystemStack<T> where T : struct, IConvertible {
private readonly int _sizeOfOneElement;
private T[] _array;
public SimpleSystemStack( int sizeOfOneElement, T[] inputArray = null ) {
_sizeOfOneElement = sizeOfOneElement;
if ( inputArray?.Length > 0 ) {
Length = inputArray.Length;
_array = inputArray;
} else {
Length = 0;
_array = new T[sizeOfOneElement];
}
}
public int Length { get; private set; }
public T Pop() {
if ( Length > 0 ) {
Length--;
return _array[Length];
}
throw new IndexOutOfRangeException("Stack is Empty.");
}
public void Push( T element ) {
if ( Length >= int.MaxValue )
throw new IndexOutOfRangeException("Stack overflow.");
if ( Length >= _array.Length ) {
var temp = new T[_array.Length * 2];
Buffer.BlockCopy( _array, 0, temp, 0, Length * _sizeOfOneElement );
_array = temp;
}
_array[Length] = element;
Length++;
}
}
var sss = new SimpleSystemStack<int>( sizeof( int ) );
sss.Push( 1 );
sss.Push( 2 );
sss.Push( 3 );
sss.Pop();
sss.Pop();
sss.Push( 4 );
Привет, всем! Мне 28 лет и я решил начать изучение программированияПривет, 28. Это, конечно, не 42, но первые результаты, при условии, что у тебя есть определённые способности и стремления, проявят себя в лучшем случае лет через пять.
Какая специальности в программировании наиболее открыты и дружелюбны к джуниорам?Никакие. В этой области +5 лет сосутся очень жёсткие дяди из Пакистана и всё ещё из Индии. Без реально роста, но говнокод они лепят отменный. Тебе с ними и через десять лет не сравниться (и не надо, пожалуйста).
Каковы перспективы развития?
На какие специальности можно выучиться до джуниора за наиболее короткий срок?Зависит исключительно от тебя и твоих способностей.
В общих чертах, что должен знать и уметь джуниор?Зависит от конкретного места, куда ты пойдёшь устраиваться.
До какого уровня учиться?До какого можешь, до такого и учишься. Предела нет. Даже через десять лет в, казалось бы, вдоль и поперёк изученной технологии ты можешь узнать и изучить такую прорву новой информации, что стажёру и не снилась в страшном сне.
Каковы шансы устроиться джуниором в сферу C++?Ниже, чем в случае более современных языков.
И, с учётом сложности языка, стоит ли мне рассматривать эту сферу в свои года?Года ничто — опыт всё.
где-то было много и было не ясно нужно ли столько изучать.Изучай всё, до чего можешь дотянуться.
Хотел бы узнать наиболее полный список действительно нужных тем и дисциплин computer science.Берёшь курс MIT и смотришь, чем они учат-учили последние 20 лет. Вот это всё: знание, понимание, умение — отправная точка для начала поглядывания в область CS со стороны стажёра, который так, покурить на в соседнее здание зашёл.
Покрывают ли потребность в теории курсы Introduction To Computer Science от MIT и Harvard?Покрывают ли потребность в операции на гипофизе пространный пересказ бухого философа на тему «Хирургия 18 века для идиотов»?
Что ещё из теории помимо основ computer science нужно программисту?Всё, до чего сможешь дотянуться. Чем больше знаешь — тем меньше надо будет изучать на местах, тем шире будет твоя область применения. Если ты сможешь выдержать конкуренцию.
Хотел бы узнать наиболее полный список действительно нужных математических дисциплин для программиста?Берёшь, допустим, топовый российский вуз и изучаешь досконально дисциплину Прикладная Математика. Наверное, для большинства формошлёпов в самых типичных ситуациях этого может и хватить.
Сколько языков нужно знать джуниору?Чем больше, тем лучше. Чем глубже, тем лучше. Нельзя взять какую-то область или языка и оставаться в ней до конца жизни. Иначе ты очень сильно будешь ограничивать себя. Не говоря уже о прямой деградации межушного ганглия до уровня адинэсников...
С какого языка следует начать обучение?Тот, который тебе больше всего понравился. То есть ты взял, потыкал его, поискал книжки, почитал первые 100 страниц каждой, посмотрел код проектов на github и ты почувствовал, что «палочка выбрала тебя».
Посоветуйте самые качественные проработанные курсы для изучения рекомендуемых языковНет таких.
Насколько сильно версии одного и того же языка отличаются друг от друга? Как долго времени занимает изучение новой версии языка?Напрямую зависит от языка/фреймворка и как авторы подразумевали обратную совместимость.
Стоит ли мне начать изучения с языка C++?Возьми что-то более современное, чтобы не насиловать себя непонятными тебе ограничениями.