Хранение пользовательских значений ввода в массив и их отображение показывает значения мусора - PullRequest
0 голосов
/ 01 апреля 2020

Я работаю над простой программой, которая просит пользователя ввести четное число и ввести нечетное число. Они хранятся в массивах storeItem1 и storeItem2 соответственно. Программа спрашивает пользователя дважды. Проблема с моим выводом. Я хочу отобразить значения, введенные пользователем .

Моим условием выхода для значения l oop, которое я буду использовать для отображения значений, является if(!storeItem1)break;, которое завершает l oop когда текущий элемент массива равен нулю. Однако вывод заканчивается следующим образом.

Even Numbers Are: 2
Even Numbers Are: 4
Even Numbers Are: some garbage value
Odd Numbers Are: 1
Odd Numbers Are: 3
Odd Numbers Are: some garbage value

Что я не понимаю, так это почему условие не завершает l oop, когда итерация l oop достигает той части, где элемент массива является нулевым? Не должно ли это закончиться после отображения всех значений массива, которые не равны нулю? Вот мой код, прикрепленный ниже. Заранее спасибо!

#include<stdio.h>

main(void)
{
    int storeItem1[8], storeItem2[8], even, odd;
    int i=0, j=0, dis=0, dis2=0;

    do
    {
        printf("Input Even Number: ");
        scanf("%d",&even);
        storeItem1[j]=even;

        printf("Input Odd Number: ");
        scanf("%d",&odd);
        storeItem2[j]=odd;

        ++j;
        ++i;

    }while(i<2); //asks user to input twice

    //display the stored values
    for(dis;dis<8;++dis) //display all input even numbers
    {
        if(!storeItem1[dis])break; //exits loop when current array element is null
        printf("\nEven Numbers are: %d",storeItem1[dis]);

    }

    for(dis2;dis2<8;++dis2) //display all input odd numbers
    {
        if(!storeItem2[dis2])break; //exits loop when current array element is null
        printf("\nOdd Numbers are: %d",storeItem2[dis2]);
    }

}

1 Ответ

0 голосов
/ 01 апреля 2020

Мне очень стыдно так быстро отвечать на мой вопрос. Я изменил свои условия l oop таким образом, что

for(dis;dis<i;++dis)
    {
        //if(!storeItem1[dis])break; //exits loop when current array element is null
        printf("\nEven Numbers are: %d",storeItem1[dis]);

    }

    for(dis2;dis2<j;++dis2)
    {
        //if(!storeItem2[dis2])break; //exits loop when current array element is null
        printf("\nOdd Numbers are: %d",storeItem2[dis2]);
    }

l oop автоматически завершает себя без требования условного оператора для выхода. Условие для инициализации for было изменено таким образом, что переменная dis<i and dis2<j завершается, когда они достигают того же значения, что и i and j.

Спасибо всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...