Итак, я пишу эту программу, которая хранит пользовательский ввод в связанном списке и отменяет его, но я немного потерян. Можно ли создать инварианты цикла для типов циклов, где он не возвращает никакого значения? Например, цикл, который находится внутри основного.Циклический инвариант без возвращаемого значения, возможно ли это? И правильность программы
Вот пример цикла, который я использую, чтобы получить пользовательский ввод внутри основного и сохранить его в связанном списке, конечно, в коде есть больше, но я только показал, что актуально.
typedef struct node {
char x; // data
struct node* next; // link to next node
} Node;
int main(void){
char c = ' ';
Node* start = NULL;
Node* temp;
while(c!='.'){
c=getchar();
temp=(Node*)calloc(1, sizeof(Node));
temp->x = c;
temp->next = start;
start = temp;
}
Возможно ли для этого создать инвариант цикла? Также, что это означает по правильности программы и как мне это доказать в моем случае?
Спасибо!
да, но я думал, что инвариант цикла является выражением, когда должны прогоны цикла и какой операции он делает во время своего времени выполнения? который я должен подтвердить, связавшись с его предварительным, средним и постовым состоянием. Если я рекомендую инвариант цикла i = 1, как вы сказали, и переписал мой код, я не описал, что делает цикл точно и не имеет возможности проверять условие до середины и после @Gopi – Stupid