Обновить cv3/program.c
This commit is contained in:
		
							parent
							
								
									3acee80c88
								
							
						
					
					
						commit
						db97ea1240
					
				@ -11,6 +11,8 @@ typedef struct {
 | 
				
			|||||||
    int vershina;
 | 
					    int vershina;
 | 
				
			||||||
} StEk;
 | 
					} StEk;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int end_program = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void inicStEk(StEk* stek) {
 | 
					void inicStEk(StEk* stek) {
 | 
				
			||||||
    stek->vershina = 0;
 | 
					    stek->vershina = 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -26,6 +28,7 @@ int isFull(StEk* stek) {
 | 
				
			|||||||
void push(StEk* stek, double chislo) {
 | 
					void push(StEk* stek, double chislo) {
 | 
				
			||||||
    if (isFull(stek)) {
 | 
					    if (isFull(stek)) {
 | 
				
			||||||
        printf("full stack\n");
 | 
					        printf("full stack\n");
 | 
				
			||||||
 | 
					        end_program = 1;
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    stek->chisla[stek->vershina] = chislo;
 | 
					    stek->chisla[stek->vershina] = chislo;
 | 
				
			||||||
@ -35,6 +38,7 @@ void push(StEk* stek, double chislo) {
 | 
				
			|||||||
double pop(StEk* stek) {
 | 
					double pop(StEk* stek) {
 | 
				
			||||||
    if (isEmpty(stek)) {
 | 
					    if (isEmpty(stek)) {
 | 
				
			||||||
        printf("not enough operands\n");
 | 
					        printf("not enough operands\n");
 | 
				
			||||||
 | 
					        end_program = 1;
 | 
				
			||||||
        return 0;
 | 
					        return 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return stek->chisla[--stek->vershina];
 | 
					    return stek->chisla[--stek->vershina];
 | 
				
			||||||
@ -44,7 +48,8 @@ int main() {
 | 
				
			|||||||
    StEk stek;
 | 
					    StEk stek;
 | 
				
			||||||
    inicStEk(&stek);
 | 
					    inicStEk(&stek);
 | 
				
			||||||
    char bufer[256];
 | 
					    char bufer[256];
 | 
				
			||||||
    while (fgets(bufer, sizeof(bufer), stdin) != NULL) {
 | 
					    while (fgets(bufer, sizeof(bufer), stdin) != NULL ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (bufer[0] == '\n') {
 | 
					        if (bufer[0] == '\n') {
 | 
				
			||||||
            if (isEmpty(&stek)) {
 | 
					            if (isEmpty(&stek)) {
 | 
				
			||||||
                printf("no input\n");
 | 
					                printf("no input\n");
 | 
				
			||||||
@ -61,15 +66,19 @@ int main() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if (c == '\n' && *bufer != '\n' && *bufer != ' ') {
 | 
					        if (c == '\n' && *bufer != '\n' && *bufer != ' ') {
 | 
				
			||||||
            push(&stek, chislo);
 | 
					            push(&stek, chislo);
 | 
				
			||||||
 | 
					            if(end_program == 1) {
 | 
				
			||||||
 | 
					                return 0;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        } else if (c == '+' || c == '-' || c == '*' || c == '/') {
 | 
					        } else if (c == '+' || c == '-' || c == '*' || c == '/') {
 | 
				
			||||||
            if (isEmpty(&stek)) {
 | 
					            if (isEmpty(&stek)) {
 | 
				
			||||||
                printf("not enough operands\n");
 | 
					                printf("not enough operands\n");
 | 
				
			||||||
 | 
					                end_program = 1;
 | 
				
			||||||
                return 0;
 | 
					                return 0;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            double b = pop(&stek);
 | 
					            double b = pop(&stek);
 | 
				
			||||||
            if (isEmpty(&stek)) {
 | 
					            if (isEmpty(&stek)) {
 | 
				
			||||||
                printf("not enough operands\n");
 | 
					                printf("not enough operands\n");
 | 
				
			||||||
 | 
					                end_program = 1;
 | 
				
			||||||
                return 0;
 | 
					                return 0;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            double a = pop(&stek);
 | 
					            double a = pop(&stek);
 | 
				
			||||||
@ -82,15 +91,18 @@ int main() {
 | 
				
			|||||||
            } else if (c == '/') {
 | 
					            } else if (c == '/') {
 | 
				
			||||||
                if (b == 0) {
 | 
					                if (b == 0) {
 | 
				
			||||||
                    printf("division by zero\n");
 | 
					                    printf("division by zero\n");
 | 
				
			||||||
 | 
					                    end_program = 1;
 | 
				
			||||||
                    return 0;
 | 
					                    return 0;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                push(&stek, a / b);
 | 
					                push(&stek, a / b);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } else if (!isdigit(c) || !isalpha(c)) {
 | 
					        } else if (!isdigit(c) || !isalpha(c)) {
 | 
				
			||||||
            printf("bad input\n");
 | 
					            printf("bad input\n");
 | 
				
			||||||
 | 
					            end_program = 1;
 | 
				
			||||||
            return 0;
 | 
					            return 0;
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            printf("no input\n");
 | 
					            printf("no input\n");
 | 
				
			||||||
 | 
					            end_program = 1;
 | 
				
			||||||
            return 0;
 | 
					            return 0;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        for (int i = 0; i < stek.vershina; i++) {
 | 
					        for (int i = 0; i < stek.vershina; i++) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user