Я только что начал c++ и столкнулся с выражением:
(без знака) (c + 1) <= 256 Ошибка
когда я пытаюсь запустить программу. Программа предполагает создание массива букв (в нижнем и верхнем регистре) размером от 15 до 25. После генерации, используя ТОЛЬКО один цикл while, попробуйте переместить все строчные буквы слева от массива и все прописные буквы справа от массива. Он должен содержать следующие критерии
(a) Функция построения массива
(b) Функция для распечатки элементов массива
(c) Функция для замены двух элементов
(d) Итеративная функция (используя цикл ONE) для перемещения элементов массива, чтобы все строчные буквы находились на
левой стороны массива, и все буквы верхнего регистра находятся в правой части массива.
Может кто-нибудь, пожалуйста, помогите мне в этом, потому что я полностью потерян и благодарю заранее!
#include <iomanip>
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cctype>
using namespace std;
const int MAX = 100;
void consArray (char [], int);
void printOut (char [], int);
void swapEle (char[], int, int, int);
void iterative (char[], int);
int main ()
{
int length;
char alpha[MAX];
srand (time (NULL));
cout << "Given the following array" << endl;
length = rand() % 25 + 15;
consArray(alpha, length);
printOut(alpha, length);
cout << "\nIterative swap of array" << endl;
iterative(alpha, length);
printOut(alpha, length);
}
void consArray (char myAlpha [], int length)
{
int even, val;
char alpha;
for (int i=0; i < length; i++)
{
even = rand() % 2;
val = rand() % 26;
if (even == 0)
{
alpha = toupper(val + 65);
}
else
{
alpha = tolower(val + 65);
}
myAlpha[i] = alpha;
}
}
void printOut (char alpha[], int length)
{
for (int i = 0; i < length; i++)
{
cout << " " << alpha[i];
}
cout << endl;
}
void swapEle (char alpha[], int loca1, int loca2)
{
char temp;
temp = alpha[loca1];
alpha [loca1] = alpha [loca2];
alpha [loca2] = temp;
}
void iterative (char alpha[], int length)
{
int a = length;
int i = 0;
while (i < length && a >= 0)
{
if(isupper(alpha[i]) && islower(alpha[a]))
{
swapEle (alpha, i, a);
a--;
i++;
}
else if (islower(alpha[i]) && isupper(alpha[a]))
{
i++;
a--;
}
else if (islower(alpha[i]) && islower(alpha[a]))
{
i++;
}
else if (isupper(alpha[i]) && isupper(alpha[a]))
{
a--;
}
}
}
На ваш вопрос не хватает каких-то существенных деталей, поэтому этот ответ скорее образован догадки...
Кажется, у вас две проблемы (только первая причина вашей ошибки):
В функции iterative
измените int a = length
на int a = length-1
, потому что вы читаете символ "мусор" из alpha[a]
на первой итерации.
Кроме того, вы должны, вероятно, изменить while (i < length && a >= 0)
while (i < a)
, потому что как только i >= a
, вы завершили свою работу.
(unsigned)(c+1) <=256
не отображается в предоставленном вами коде.