C, if ..else if..else проблема
Здравствуйте, у меня есть проблема с операторами if..
Меня попросили взять 0+4*n и 3+4n элементов Арая, но только для N-5 значений массива.. Для оставшихся 5 значений взять первое и последнее..
Затем только в этих значениях проверьте, равно ли значение в массиве 0, а если оно равно нулю, сделайте его 1.
Мой код ниже..Это немного изменено, так как в моем коде общее число предоставляется через txt-файл, который я пропустил здесь..
Проблема в конце концов...
оператор else активируется вместе с другими операторами else if ...
Есть предложения?
Что я уже пробовал:
#include <stdio.h> int main(void) { int array[63]; int i,n,total; total=50; char selection; for (i=0; i<total; i++) array[i] = 0; 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++) { for (n=0; n<((total)/4); n++) { if (i==(0+(n*4)) && i<(total-5)&&(array[i]==0)) { array[i]=1; printf("You changed array value in place %d, ",i); i=n=total+1; break; } else if ((i==(3+(n*4)))&&i<(total-5)&&(array[i]==0)) { array[i]=1; printf("You changed array value in place %d, ",i); i=n=total+1; 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'); }
[no name]
"Любые предложения", да. Научитесь использовать отладчик для отладки кода.
baskon
Я нахожусь на самых первых шагах программирования на языке Си! Так что спасибо всем за помощь!
Я также постараюсь научиться использовать отладчик!
Jochen Arndt
"оператор else активируется вместе с другими операторами else if"
- Откуда ты это знаешь?
Это будет определенно не так. Вместо того чтобы печатать "что-то", выведите значения i, n и array[i], чтобы увидеть, когда предшествующие условия не совпадают.
КСТАТИ:
- Условие i==(total) никогда не будет совпадать
- Вместо использования i=n=500 для завершения циклов используйте i=n=total+1
Richard MacCutchan
Если selection == '2'
ваш цикл не будет работать, потому что вы не установили значение для total
Вы также, похоже, используете случайные числа (63, 53,50) для доступа к элементам вашего массива. Использовать #define
оператор для определения размера массива и использования этого числа во всем вашем коде.
baskon
Большое вам спасибо за ответ!
Да, я допустил небольшую ошибку, потому что это часть более крупной программы, которая также считывает информацию из txt-файла..
Поэтому при преобразовании его во что-то, что работает без txt-файла, я допустил ошибку.я думаю, что теперь я это исправил...но все равно проблема с петлей существует..
Richard MacCutchan
тем не менее проблема с петлей существует..
И я думаю, что это еще один секрет, который вы хотите сохранить для себя.