¿Qué hago mal en el uso de for?

Iniciado por OmarHack, 4 Abril 2013, 18:40 PM

0 Miembros y 1 Visitante están viendo este tema.

OmarHack

Me imprime una y otra vez el número 6 y todo el cout  :-\ No sé que estoy haciendo mal, e buscado programas similares pero los pocos que e encontrado no me aclaran nada. A ver si sabéis que estoy haciendo mal.
Un saludo.

Código (cpp) [Seleccionar]
/* Escribe un programa que sume todos los múltiplos de 3
comprendidos entre dos números introducidos por el teclado. */

#include <iostream>
int numero1 = 0;
int numero2 = 0;
int multiplos = 3;
int multiplos3 = 3;
const int sumaTres = 3;

    using std::cout;
    using std::cin;
    using std::endl;

int main()
{
   
   
   
    cout << "Escribe el primer numero: " << endl;
    cin >> numero1;
    cout << "Escribe el segundo numero: " << endl;
    cin >> numero2;
       
        for(multiplos3 < numero2; multiplos3 + sumaTres;)
/*Mientras el valor de multiplos3 sea menor que el valor de numero2,
se aumenta 3 a multiplos3. */
          cout <<"Los multiplos de 3 comprendidos entre " << numero1 <<" y "
    << numero2 << " son: " << multiplos3;
       
 
   
    getchar();
    getchar();
    return 0;
}

   
I like to test things.

85

El FOR es así

for(;;){

...
}


Citarfor( PARTE1 ; PARTE2 ; PARTE3)

Como ves, las 3 partes son opcionales, pero te quedaría un FOR infinito, como en este caso:
for(;;){

...
}



Si vas a usar algunas de sus 3 partes, tenés que comprender que la primera es para asignaciones, la segunda es para condiciones y la tercera para incrementaciones.

Esto es lo que escribiste.. usaste la primera y la segunda.
for(multiplos3 < numero2; multiplos3 + sumaTres;)

Pero fijate si las 3 partes tienen sentido con esa línea



Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

$Edu$

Tienes que leerte un buen libro que te enseñen bien, has usado mal el for.

for(multiplos3 < numero2; multiplos3 + sumaTres;)

es:

for(multiplos3; multiplos3 < numero2; multiplos3 + sumaTres)
porque primero se indica la variable que aumentara en cada vuelta, luego hasta que condicion se ejecutara el for y luego cuanto aumentara esa variable.

Pero de todas formas esta mal lo que estas haciendo, no lo estas pensando bien.

Cuando pides el numero1 y el numero2, luego tienes que hacer un bucle for que ira desde numero1 hasta numero2 sumando los multiplos de 3 que hay entre ellos. Que se calcula de otra forma, porque no puedes simplemente sumarle 3 para que sea multiplo de 3, fijate que si el numero1 es 11 si le sumas 3 sera 14 y no es multiplo de 3. Se tiene que usar el operador de division entera que da como resultado el resto de la division.

int i = numero1;
int suma;

For (i; i = numero2; i++) {  // tendras que ver si incluiras los numero1 y numero2 en la suma si es que son multiplos de 3 o no, tu veras.

if (i % 3) == 0 {suma += i; }  // si el resto de por ejemplo 15/3 es 0, entonces se suma 15 a la variable suma ya que significa que es multiplo.

}

leosansan

Creo que sería más lógico averiguar si el numero1 es  o no múltiplo de tres, y si no lo es tomar el valor del correspondiente múltiplo y ya en el for ir de tres en tres, vamos esto:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main()
{
int numero1,numero2, multiplos3 =0,suma=0;
    cout << "Escribe el primer numero: " << endl;
    cin >> numero1;
    cout << "Escribe el segundo numero: " << endl;
    cin >> numero2;
    if (numero1%3!=0)
        numero1=numero1-numero1%3 +3;
    for(int i=numero1;i <= numero2; i+=3) {
            cout << i << "   ";
            multiplos3++;
            suma+=i;
        }
        cout <<endl<<"Los multiplos de 3 comprendidos entre " << numero1 <<" y "
    << numero2 << " son: " << multiplos3<<endl;
    cout <<endl<<"Y la suma de todoe ellos es " <<suma<<endl;
    return 0;
}



Saluditos!. ...

OmarHack

I like to test things.