Выражение: (без знака) (c + 1) <= 256 Ошибка

0

Я только что начал 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--;
        }

    }
}
  • 2
    Выражение (unsigned)(c+1) <=256 не отображается в предоставленном вами коде.
  • 0
    Можете ли вы опубликовать полную ошибку?
Показать ещё 2 комментария
Теги:
arrays
uppercase
unsigned
lowercase

1 ответ

0
Лучший ответ

На ваш вопрос не хватает каких-то существенных деталей, поэтому этот ответ скорее образован догадки...

Кажется, у вас две проблемы (только первая причина вашей ошибки):

  1. В функции iterative измените int a = length на int a = length-1, потому что вы читаете символ "мусор" из alpha[a] на первой итерации.

  2. Кроме того, вы должны, вероятно, изменить while (i < length && a >= 0) while (i < a), потому что как только i >= a, вы завершили свою работу.

  • 0
    Привет @ Barak Manos спасибо! Я изменяю его на length-1, теперь он работает: D
  • 0
    Добро пожаловать :) Если он отвечает на ваш вопрос, то вы можете принять его, нажав на V.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню