Вот задание, у меня, к примеру, массив ar[7] типа int, я написал цикл фор для присваивания одной за одной значений к ячейкам, следовательно пишу иф для проверки возрастающей последовательности таким образом:
if (ar[0]<ar[1]....<ar[6])
на что шарп жалуется: Оператор "<" не может применяться к операндам типа "bool" и "int".
Объясните в чем проблема и/или скажите как можно проверить последовательность по другому.
ar[1]....<ar[6] это вообще что за конструкция? ?
вообще есть логические И и ИЛИ
если элемент 1 меньше чего то И элемент 1 меньшего того то ИЛИ элемент 1 и так далее.
Потому что < - это оператор. Точно такой же, как + или *, только результат имеет тип 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();
}
}
}