Dev - C++ - POR FAVOR AYUDA PARA TAREA

 
Vista:
sin imagen de perfil

POR FAVOR AYUDA PARA TAREA

Publicado por GERARDO (13 intervenciones) el 17/06/2017 23:59:45
Realice un programa que, dado un número entero positivo, mayor a cero, muestre en pantalla para cada uno de sus dígitos si son pares o impares, además de si el dígito es primo. No importa el orden en el que se evalúen los dígitos, de modo que se puede comenzar de derecha a izquierda. La entrada se debe recibir como un parámetro de tipo entero (int).

Para obtener los dígitos por separado de un número se debe dividir el número entre 10, el residuo de la división será el dígito de más a la derecha y el resto del número quedará como el cociente de la división. Debe volverse a dividir el cociente de la división anterior y tomar su residuo hasta que el nuevo cociente sea cero.

Por ejemplo, tomemos el número 473. Dividiendo 473 entre 10 tendríamos que el cociente de la división es 47 y el residuo sería 3. Volviendo a dividir el 47 entre 10 tenemos que el cociente es 4 y el residuo es 7. Finalmente, dividiendo el 4 entre 10 tenemos que el cociente es cero y el residuo es 4. Ya que el cociente de la división fue cero, terminamos. Podemos notar cómo los residuos dieron 3, 7 y 4, en ese orden, y corresponden a los dígitos del número en orden inverso (de derecha a izquierda).

En C++ el residuo de la división puede obtenerse con el operador ‘%’. De modo que 23 % 10 regresaría un 3.

El programa deberá contener al menos tres funciones: una en donde se haga la división del número en dígitos y se imprima si es par, impar y primo o no primo, otra función que reciba un número y regrese si es par o impar, y una tercera que reciba un número y regrese si es primo o no.


Recursos a utilizar:

• Funciones
• Ciclos
• Condicionales
• Operadores aritméticos


Ejemplo

Como entrada se recibirá un entero positivo mayor a cero, como salida el programa deberá imprimir en pantalla si sus dígitos son pares o impares. A continuación, se muestra un ejemplo de cómo deberá responder el programa.

Entrada:
4730
Salida:
0 es número par y no es primo
3 es número impar y es primo
7 es número impar y es primo
4 es número par y no es primo
Nótese que el cero es considerado número par y que el primer número primo es el dos

LES AGRADEZCO MUCHO SI ALGUIEN ME PUEDE AYUDAR
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
sin imagen de perfil
Val: 19
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

POR FAVOR AYUDA PARA TAREA

Publicado por Federico (11 intervenciones) el 18/06/2017 17:36:49
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>
 
using namespace std;
 
bool EsPrimo (int x);
bool EsPar (int x);
 
bool EsPrimo (int x){
	bool primo = false;
	int num_divisibles = 0;
	int y = x;
 
	while (x > 1){
		if (x%y == 0)
			num_divisibles++;
		y--;
	}
	if (num_divisibles == 2)
		primo = true;
	return primo;
}
 
bool EsPar (int x){
	bool par = false;
	if (x%2 == 0)
		par = true;
	return par;
}
 
 
 
 
 
 
int main(){
	int x;
	bool primo, par;
	string stpar = "es par";
	string stprimo = " es primo";
 
 
	cout << "Indique el numero: ";
	cin >> x;
 
	while (x/10 != 0){
		primo = EsPrimo (x%10);
		par = EsPar (x%10);
 
		if (primo == false)
			stprimo = " no es primo";
 
		if (par == false)
			stpar = " no es par";
 
 
		cout << "El numero " << x%10 << stprimo << " y " << stpar << endl;
		x = x/10;
 
		stprimo = " es primo";
		stpar = "es par";
	}
 
	return 0;
 
 
}

Prueba con esto, mira a ver porque peta al ver el primer dígito y no continua
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

POR FAVOR AYUDA PARA TAREA

Publicado por GERARDO (13 intervenciones) el 19/06/2017 02:16:32
TIENES RAZÓN, ÚNICAMENTE FUNCIONA CON EL CERO Y SE BLOQUEA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

POR FAVOR AYUDA PARA TAREA

Publicado por javier c (4 intervenciones) el 20/06/2017 03:16:41
pues es que hay una division por cero en el ciclo para obtener los primos entonces ahi truena el programa se hace la validacion de que no sea dividido x entre 0 y ya funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

POR FAVOR AYUDA PARA TAREA

Publicado por gerardo (13 intervenciones) el 20/06/2017 04:07:31
LO VOY A PROBAR, DE ANTEMANO TE AGRADEZCO TAMBIÉN TU AYUDA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

POR FAVOR AYUDA PARA TAREA

Publicado por javier c (4 intervenciones) el 20/06/2017 07:13:18
prueba en la linea 13 agregando a la condicion
&(y!=0)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

POR FAVOR AYUDA PARA TAREA

Publicado por gerardo (13 intervenciones) el 20/06/2017 20:21:55
gracias por tu comentario, me podrías ayudar indicándome en que parte del código y como quedaría la linea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 19
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

POR FAVOR AYUDA PARA TAREA

Publicado por Federico (11 intervenciones) el 21/06/2017 00:11:52
El código quedaría tal que así, lo único que me fallaba era en la línea 13 un condicional, como ha dicho javier antes
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>
 
using namespace std;
 
bool EsPrimo (int x);
bool EsPar (int x);
 
bool EsPrimo (int x){
	bool primo = false;
	int num_divisibles = 0;
	int y = x;
 
	while (x > 1 && y != 0){
		if (x%y == 0)
			num_divisibles++;
		y--;
	}
	if (num_divisibles == 2)
		primo = true;
	return primo;
}
 
bool EsPar (int x){
	bool par = false;
	if (x%2 == 0)
		par = true;
	return par;
}
 
 
 
 
 
 
int main(){
	int x;
	bool primo, par;
	string stpar = "es par";
	string stprimo = " es primo";
 
 
	cout << "Indique el numero: ";
	cin >> x;
 
	while (x/10 != 0){
		primo = EsPrimo (x%10);
		par = EsPar (x%10);
 
		if (primo == false)
			stprimo = " no es primo";
 
		if (par == false)
			stpar = " no es par";
 
 
		cout << "El numero " << x%10 << stprimo << " y " << stpar << endl;
		x = x/10;
 
		stprimo = " es primo";
		stpar = "es par";
	}
 
	return 0;
 
 
}

Con esto ya funcionaria perfectamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

POR FAVOR AYUDA PARA TAREA

Publicado por karla (2 intervenciones) el 21/06/2017 05:13:26
Oigan pero al ejecutarlo y darle por ejemplo el numero 4783, solo me indica que el 3 es primo e impar, el 8 no es primo y es par y que el 7 es primo e impar y hasta ahi no me valida el 4, ¿porque?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

POR FAVOR AYUDA PARA TAREA

Publicado por javier c (4 intervenciones) el 21/06/2017 05:48:03
bueno debuguea el programa fijate en la linea 45
while (x/10 != 0){ aqui esta el detalle
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

POR FAVOR AYUDA PARA TAREA

Publicado por gerardo (13 intervenciones) el 21/06/2017 06:16:23
LES AGRADEZCO MUCHO SU AYUDA, PERO ME PODRIAN DECIR COMO QUEDARIA EL CODIGO COMPLETO Y CORREGIDO PARA QUE VALIDE 4 NUMEROS?, GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 19
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

POR FAVOR AYUDA PARA TAREA

Publicado por Federico (11 intervenciones) el 21/06/2017 11:24:04
Ale era una tonteria en el while como ha dicho el compañero
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>
 
using namespace std;
 
bool EsPrimo (int x);
bool EsPar (int x);
 
bool EsPrimo (int x){
	bool primo = false;
	int num_divisibles = 0;
	int y = x;
 
	while (x > 1 && y != 0){
		if (x%y == 0)
			num_divisibles++;
		y--;
	}
	if (num_divisibles == 2)
		primo = true;
	return primo;
}
 
bool EsPar (int x){
	bool par = false;
	if (x%2 == 0)
		par = true;
	return par;
}
 
 
 
 
 
 
int main(){
	int x;
	bool primo, par;
	string stpar = "es par";
	string stprimo = " es primo";
 
 
	cout << "Indique el numero: ";
	cin >> x;
 
	while (x != 0){
		primo = EsPrimo (x%10);
		par = EsPar (x%10);
 
		if (primo == false)
			stprimo = " no es primo";
 
		if (par == false)
			stpar = " no es par";
 
 
		cout << "El numero " << x%10 << stprimo << " y " << stpar << endl;
		x = x/10;
 
		stprimo = " es primo";
		stpar = "es par";
	}
 
	return 0;
 
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

POR FAVOR AYUDA PARA TAREA

Publicado por Karla (2 intervenciones) el 21/06/2017 15:42:15
Ah! ahora si ya funciona muy bien, estoy aprendiendo mucho con ustedes.
Mil gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

POR FAVOR AYUDA PARA TAREA

Publicado por gerardo (13 intervenciones) el 22/06/2017 00:36:49
GRACIAS POR LA AYUDA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

POR FAVOR AYUDA PARA TAREA

Publicado por Humberto (1 intervención) el 22/06/2017 20:21:29
Excelente aporte. Solo tengo una duda...
Al correr el programa y meter el 4730 solo regresa los numero 0, 3 y 7. El 4 no lo muestra.
¿Como puedo corregir ese detalle?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar