прочитать неопределенное количество целых чисел и распечатать файл - PullRequest
0 голосов
/ 16 февраля 2020

* эта программа считывает целые числа до отрицательного значения, а затем печатает в файле характеристику c каждого из них: на сколько целых чисел она может быть разделена. проблема в том, что он продолжает спрашивать целые числа, даже когда я инертный отрицательные. пожалуйста, дайте мне знать, если вы можете исправить это, не меняя слишком много кода

#include <stdio.h>
#include <stdlib.h>
int checkdiv(int *n);
int main(int argc, char * argv[]){
    int *p;
    int i, j;
    FILE *fp;
    int amount;
    i=0;
    p=NULL;

    if(fp = fopen("ris.txt", "w")){
        do{i++;
        p=realloc(p,sizeof(int)*i);
        scanf("%d", (p+i-1));
        amount=checkdiv(p+i-1);
        if(amount!= -1);
        fprintf(fp,"%d  %d\n", *(p+i-1),amount);
        }while(p+i-1>0);

    }else{
        printf("errore");
    }
    fclose(fp);
    free(p);
    return 0;
}
int checkdiv(int *n){
int i;
int amount=0;
for(i = 2;i < *n; i++){
    if(*n % i == 0){
        amount++;
    }
}
if(*n <= 0){
    amount= -1;
}
return amount;
}

Ответы [ 2 ]

0 голосов
/ 16 февраля 2020

Вы должны удалить точку с запятой в строке

if(amount!=-1);

, чтобы оператор под ним можно было включить в блок if.

0 голосов
/ 16 февраля 2020

Ваша проблема в:

}while(p+i-1>0);

должно быть;

}while(*(p+i-1)>0);

HTH

...