Я пытаюсь создать программу с массивом максимум 63 мест. Пользователь указывает фактические активные места массива, все из которых имеют начальное значение 0.Вложенные улучшения цикла
Я хочу: Сканировать через активные места массива и в местах, расположенных по адресу: 0 + 4 * n и 3 + 4 * n (где n = 0,1,2,3,4, ((всего 5)/4) проверьте, равно ли значение 0, и если да, сделайте это 1. Для последних 5 активных мест массива которые не были включены в предыдущий поиск, я просто проверю первое и последнее из пяти мест массива. Если значение равно 0, сделайте это 1. Во всех случаях я хочу изменить только только одно значение at Если нуль найдено, то укажите значение 1, а затем остановите. Если значения, указанные выше, не равны 0 -> имеют сообщение об ошибке.
Моя проблема заключается в последней части с сообщением об ошибке, который начинает работать, когда другие, если заявления активировать ..
#include <stdio.h>
int main(void)
{
int array[63];
int i,n,total;
char selection;
for (i=0; i<63; i++)
array[i] = 0;
printf("Enter active array places (maximum 63):");
scanf(" %d",&total);
do{
printf("0.Exit \n");
printf("1.List array \n");
printf("2.Change value of array: \n");
scanf(" %c",&selection);
if (selection=='1')
{
for (i=0; i<total; i++)
printf("%d \n", array[i]);
}
else if (selection=='2')
{
for (i=0; i<(total); i++)
{
if ((i%4==0) && i<(total-5)&&(array[i]==0))
{
array[i]=1;
printf("You changed array value in place %d, ",i);
break;
}
else if ((i%4==3)&&i<(total-5)&&(array[i]==0))
{
array[i]=1;
printf("You changed array value in place %d, ",i);
break;
}
else if (i==(total-5)&&(array[i]==0))
{
array[i]=1;
fprintf("You changed array value in place %d, ",i);
i=n=total+1;
break;
}
else if (i==(total-1)&&(array[i]==0))
{
array[i]=1;
printf("You changed array value in place %d, ",i);
i=n=total+1;
break;
}
else
printf("Nothing to change");
}
}
}
} while (selection!='0');
}
Вам не нужны вложенные петли. Просто убедитесь, что 'i% 4 == 0 || i% 4 == 3' – Barmar
Спасибо! Я улучшил свой код с вашим предложением, как видно выше. Однако основная проблема, которая является последним else, остается. Я думаю, что я близок к проблеме. – baskon1