Esempio n. 1
0
File: main.cpp Progetto: CCJY/coliru
int main() {
    std::cout << countNum(0) << '\n';
    std::cout << countNum(1) << '\n';
    std::cout << countNum(5) << '\n';
    std::cout << countNum(197) << '\n';
    std::cout << countNum(59345) << '\n';
}
int main(int argc, char const *argv[]){
	
	if (argc != 2){
		printf("usar: a.out <nombre archivo>\n");
		return -1;
	}else{

		FILE *inFile;	
		char *fileName;		
		int * numeros;
		int length;

		fileName=argv[1];
		inFile = fopen(fileName, "r"); //Se abre el archivo que contiene los datos

		if(inFile == NULL){
			printf("No se puede abrir el fichero: %s\n", fileName);
			exit(EXIT_FAILURE);
		}else{

			length = countNum(inFile);
			numeros = (int *)malloc(sizeof(int)*length); //Se reserva espacio en memoria para los valores ingresados
			getData(&length, numeros, inFile); //Se asigna el espacio en memoria a los valores ingresados
			//printData(&length, numeros);
		}	

		free(numeros);
		int value;
		value =	fclose(inFile);
		if (value == 0) printf("Se cerro el fichero\n");
		return 0;	
	}	
}
int countNum(int n){
	if(n<=0) return 0;

	int grade=1000000000;
	while(n<grade){
		grade/=10;
	}

	if(grade==1) return 1;

	int result=0;
	int highVal=n/grade;
	if(highVal>1){
		result=grade+countNum(grade-1)*highVal+countNum(n%grade);
	}else{
		result=n%grade+1+countNum(grade-1)+countNum(n%grade);
	}
	return result;
}
Esempio n. 4
0
File: main.cpp Progetto: CCJY/coliru
int countNum(int n){
    return (n >= 10)
        ? 1 + countNum(n/10)
        : 1;
}
//------!!!错误1:没有考虑输入-1的情况
//------!!!错误2:题目需要计算包含1的数字中1出现次数总和,而不是包含1的数字的个数
//------!!!错误3:输入10
//------!!!错误4:输入20
//------!!!错误5:输入101
//------!!!错误5:输入110
int Solution::countDigitOne(int n){

	return countNum(n);
}