Нет вывода во время сопоставления массива - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь проверить два массива, если они не равны, если они не равны, напечатать соответствующий текст.Я сделал это, но я не получаю вывод или ошибки из этого кода.Что я сделал не так в этом?

typedef struct payl{
    int arrayp[5] = {1,2,3,4,5};
}payl;
typedef struct expected{
    int arraye[5] = {1,2,3,4,6};
}expected;

int main()
{
    payl* pay;
    expected* Ez;
    int itr = (sizeof(pay->arrayp)/sizeof(pay->arrayp[0]));
    int eitr = (sizeof(Ez->arraye)/sizeof(Ez->arraye[0]));
    for(int i=0; i>itr; i++){
        for(int j=0; j>eitr; j++){
            if(pay->arrayp[i] != Ez->arraye[j]){
                cout<<"incorret matching"<<pay->arrayp[i]<<"!="<<Ez->arraye[j]<<endl;
            }
        }
    }
    return 0;
}

Я знаю, что это другие способы сделать это, но я хочу знать, что я сделал не так в этом.Спасибо.

1 Ответ

0 голосов
/ 04 декабря 2018

Прежде всего, pay и Ez являются указателями, но вы никогда не сделаете их указанными где-либо действительными.Это неопределенное поведение, которое может привести к ошибке сегментации или сделать что-то совершенно другое.Измените это:

payl* pay;
expected* Ez;

На это:

payl* pay = new payl;
expected* Ez = new expected;

И не забудьте удалить их в конце:

delete pay;
delete expected;

Кроме того, ваши сравнения нене работает таким образом.Вместо этого:

for(int i=0; i>itr; i++){
   for(int j=0; j>eitr; j++){ 

Вам следует развернуть > и сделать это вместо этого:

for (int i = 0; i < itr; i++) {
    for (int j = 0; j < eitr; j++) {

С этими изменениями он правильно печатает каждый экземпляр каждого элемента в каждом массивеэто не то же самое, что другой элемент.Это означает не только последний, где 5 в одном и 6 в другом.Это не то, как вы проверяете, равны ли два массива.Вместо этого цикл должен выглядеть следующим образом:

for (int i = 0; i < itr; i++) {
    if (pay->arrayp[i] != Ez->arraye[i]) {
        cout<<"incorret matching"<<pay->arrayp[i]<<"!="<<Ez->arraye[j]<<endl;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...