[C con Clase] ayuda con el siguiente codigo

Davidson, Steven srd4121 en njit.edu
Vie Dic 7 06:16:02 CET 2012


Hola Francisco,

2012/12/6 FRANCISCO SANTIBAÑEZ ALONSO <pandoras_box_789 en hotmail.com>:
> segun yo este es un programa que calcula los factores de cualquier numero
> cualquiera y te los muestra y no se cierra asta que que se oprima 0 de no
> ser asi seguira calculando los factores de los numeros que se le ingresen
> este es el codigo:
>

Veamos el código fuente.

> #include <stdio.h>
> #include <stdlib.h>

En C++, los nombres son: <cstdio> y <cstdlib>.

> #include <conio.h>

Ten presente que este fichero de cabecera no es estándar.

> #include <iostream>
>
> using namespace std;
>
> int main()
> {
> int x;
> do
> {
> int y=3;
> cout << "ingrese un numero exepto 0 para mostrar sus factores su su seleccion es cero 0 el programa se cerara:";
> cin >> x;
> while(x%2==0);

Aquí está el error. Al indicar el punto y coma, el bucle 'while' no
tiene cuerpo a iterar, por lo que seguirá comprobando su condición sin
cesar.

Como te interesa que el bucle 'while' controle las sentencias
posteriores entre las llaves, elimina el punto y coma anterior.

> {
> cout<<"2" <<"*";
> x=x/2;

Intenta acostumbrarte a usar los operadores de asignación para estos
casos. Por ejemplo, puedes reescribir lo anterior así:

x /= 2;

Otra expresión (algo avanzada) para este caso es la siguiente:

x >>= 1;

> }
> while(x>y);

Aquí tenemos el mismo problema anterior. Elimina el punto y coma.

> {
> if(x%y==0)
> {cout<<"y" <<"*";
> x=x/y;}
> else
> {y=y+2;
> continue;}

Intenta no usar 'continue' ni 'break'; ni desde luego 'goto'. En este
caso, 'continue' no tiene ninguna utilidad, porque al terminar la
sentencia 'if/else', volvemos al comienzo del bucle 'while'.

> }
> }
> while(!x==0);

Esta condición no es lógicamente correcta. Creo que lo que quieres
hacer es comprobar si ambos operandos no son iguales. El operador a
usar es !=; esto ahora es,

x != 0

> }
>


Espero que esto te sirva.

Steven




Más información sobre la lista de distribución Cconclase