Другие языки программирования и технологии

Помогите с заданием по C#



Вот задание, у меня, к примеру, массив ar[7] типа int, я написал цикл фор для присваивания одной за одной значений к ячейкам, следовательно пишу иф для проверки возрастающей последовательности таким образом:

if (ar[0]<ar[1]....<ar[6])

на что шарп жалуется: Оператор "<" не может применяться к операндам типа "bool" и "int".

Объясните в чем проблема и/или скажите как можно проверить последовательность по другому.
Fail Khabirov
Fail Khabirov
204
ar[1]....<ar[6] это вообще что за конструкция? ?
вообще есть логические И и ИЛИ

если элемент 1 меньше чего то И элемент 1 меньшего того то ИЛИ элемент 1 и так далее.
Сергей Супрун
Сергей Супрун
53 118
Лучший ответ
Fail Khabirov Сейчас проверим
Fail Khabirov та же самая ошибка
Дмитрий Ежов плохой совет
Потому что < - это оператор. Точно такой же, как + или *, только результат имеет тип bool, т. е. true или false - истина или ложь. Соответственно, выражение
0 < 1 < 2
будет равно
true < 2
т. е. бессмыслице, о чем и пишет компилятор. А надо
( a[0] < a[1]) && (a[1]<a[2]) && ...
где && - логическое И.
Сразу скажу, что логическое ИЛИ записывается ||, и крайне желательно в логических выражениях ставить скобки, чтобы не запутаться, а еще лучше - давать имена отдельным их частям, вроде

bool correct_a0 = (a[0] < a[1]);
bool correct_a1 = correct_a0 && (a[1] < a[2]);
...
if( correct_a6 )...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MailHelp
{
class Program
{
static void Main(string[] args)
{
const int n = 7; // размер массива
Int32[] ar = new Int32[n];

for (Int32 i = 0; i < n; i++)
{
Console.WriteLine("Enter number: ");
ar[i] = Convert.ToInt32(Console.ReadLine());
}

bool mark = true;

for (Int32 i = 1; i < n; i++)
{
if (ar[i] <= ar[i - 1])
{
mark = false;
break;
}
}

if (mark) Console.WriteLine("Да, образует. ");
else Console.WriteLine("Не, не образует. ");
Console.ReadLine();
}
}
}
Вал Лева
Вал Лева
5 430