C/Visual C - Buenas gente, alguien que me saque de dudas.

 
Vista:
sin imagen de perfil

Buenas gente, alguien que me saque de dudas.

Publicado por Mario (1 intervención) el 10/12/2021 17:40:18
Tengo que realizar un programa en C++ que permita capturar los elementos (N definido por el usuario) de un arreglo unidimensional ingresados por el usuario que contenga solo números enteros; de lo contrario rechazar el elemento y pedir un nuevo intento.

Por el momento mi codigo medio funciona hasta cierto punto...Cuando el numero es decimal funciona, pero al introducir una letra entra en un bucle infinito que no se como solucionar, si alguien pudiera ayudarme lo agradeceria... Este es el codigo que tengo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include<iostream>
#include<stdlib.h>
 
using namespace std;
 
// Prototipos de funciones
 
void pedirDatos_comprobar();
bool esNumero(int);
bool esEntero(float);
 
 
//Variables globales
float vector[100], n ;
 
int main(){
 
	pedirDatos_comprobar();
 
	system("pause");
	return 0;
 
}
 
//FUNCIONES
 
void pedirDatos_comprobar(){
	cout<<"Diga el numero de elementos del vector: ";cin>>n;
 
	for (int i=0; i<n;i++){
		do {
			cout<<i+1<<".- Diga un numero: ";
			cin>>vector[i];
 
			if((esNumero(vector[i]) && esEntero(vector[i]) ) == true){
				break;
			}else {
				cout<<"  ----->>   Por favor introduzca un valor entero\n";
				fflush(stdin);
			}
		}while(true);
	}
}
 
bool esNumero(int num){
	bool b = true;
	if (num==false){
 
		b = false;
	}
 
	return b;
}
 
bool esEntero(float decimal){
	bool b = true;
	int entero;
 
	entero = decimal;
 
	if ((decimal - entero)!= 0){
		b = false;
	}
 
	return b;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder