Amigos no es por molestar pero tengo el presente ejercicio y me siento perdido
Pedir un número entero, e imprimir la suma de los dígitos impares
llevo esto:
#include<iostream>
using namespace std;
int main()
{
long num,sum;
short nn,cop,cd=0;
cout<< "ingrese un numero entero positivo: ";
cin>>num;
cop=num;
while (num!=0)
{cd++;num%=10;
}
nn==num%10;
if (nn%2==0)
sum=cd+cd++;
cout << " para el numero" <<cop << "la suma de sus impares es igual a: " <<sum;
}
- pero no me siento con buena base para arreglarlo ¿podrian ayudarme?
· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex
tu identación no es buena y hace el codigo dificil de entender
no entiendo tu codigo o más o menos que intenta...
en linea 13 tienes un error, eso que colocaste literalmente no hace nada (comparas con ==, pero el valor comparado no hace nada)
en la linea 14, no es recomendable que uses estructuras de control sin llaves {} si eres principante
la linea 15 es poco recomendable, ya que cd+cd++ puede generarte un resultado inesperado ya que podría variar depende del compilador
hay 2 maneras de hacerlo... por algoritmo o la matemática
por algoritmo
lo haría igual hasta la linea 8
pero luego usaría un for desde 1 hasta menor o igual que num, usando cop como iterador y el paso +=2
es decir
for(cop=1; cop <= num; cop+=2)
esto haría que el codigo fuera solo por los impares
y solo tendrías que sumar todos los numeros...
por matemática
sabemos que la suma de una continuidad es igual la mitad del primero sumado al ultimo, siendo los numeros impares la mitad de esta continuidad, sería la mitad de eso, con un ajuste de 1 según el caso
yo lo haría
muchas gracias por la guía intentare arreglar eso y en caso tal podría enviar el progreso?
lo que trato a veces es confundirme usando los bucles como no son.
si quieres publica aquí lo que lleves cuando lo consideres listo o te tranques gravemente...
Amigo he cambiado la estructura, asi me quedo:
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int n,cop;
int s=0,a;
cout<< "ingrese un numero: ";
cin>>n;
cop=n;
while (n>0)
{a=n%10;
n=n/10;
if(a%2!=0)
s=s+a;
}
cout << "para el numero " <<cop << " la suma de sus impares es igual a: " <<s;
}
una ultima pregunta amigo, si yo quiero expresar esto en pseudo codigo como denoto los valores como s=0, antes de la funcion while?
había entendido el problema anteriormente mal.. no es la suma de ls impares hasta el numero, sino la suma de sus digitos impares (empezando por la izquierda o derecha? es decir de 12 el resultado es 1 o 2?)
el if está de más... puedes dividir 2 veces seguidas y no necesitas el control de flujo...
math.h sobra, si contar que estás en c++, math.h es c, debes usar cmath
usa identación y usa nombre de variables comprensibles para que el codigo sea legible
main siempre debe retornar 0
· Los códigos deben ir en etiquetas GeSHi segunda vez que lo corrijo...
puedes hacer directamente
while (n>0){
s+=n%10;
n=n/100;
}
en pseudo código, depende de la notación que use tu clase... usualmente es así mismo
entero s = 0
muchas gracias ;-) ;D