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.
/* 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;
}
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
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.
}
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:
#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!. ...(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Genial leosansan!!!!!