#include <stdlib.h>
#include <iostream>
using namespace std;
main()
{
int a; /* limite inferiore */
int b; /* limite superiore */
int n; /* numero del quale calcolare i multipli */
int m; /* il multiplo vero e proprio (l'ho aggiunto per chiarezza) */
int i; /* contatore (in questo caso, anche moltiplicatore) */
cout <<"Inserisci l'intervallo a-b\n";
cin>>a>>b;
cout<<"Inserisci n\n";
cin>>n;
i=a; /* stai assegnando il limite inferiore al moltiplicatore: non va! */
while(n<=b) /* nell'ambito di questo ciclo, n non viene mai modificato!!!
Per questo se n>b fin dall'inizio, il ciclo non verra' MAI
eseguito, mentre se n<=b il ciclo sarà infinito */
{
i++; /* incrementi di uno il moltiplicatore, ma sei partito
da un punto inopportuno quando hai scritto i=a */
m = n*i; /* questo e' quello che mandi in uscita: e' multiplo di n? */
cout<<n*i<<endl; /* gia' dal primo passaggio stai moltiplicando
n*(a+1) e non credo proprio sia quel che ti serve
(poi n*(a+2), quindi n*(a+3) e cosi' via)*/
}
system("pause");
return 0;
}
#include <stdlib.h>
#include <iostream>
using namespace std;
main()
{
int a; /* limite inferiore */
int b; /* limite superiore */
int n; /* numero del quale calcolare i multipli */
int m; /* il multiplo vero e proprio */
int i; /* contatore (in questo caso, anche moltiplicatore) */
cout <<"Inserisci l'inervallo a-b\n";
cin>>a>>b;
cout<<"Inserisci n\n";
cin>>n;
i=1; /* parti con i = unita', ovvero n resta se stesso */
do /* il do "posticipa" il controllo della condizione d'uscita */
{
m = i*n; /* prendi i valori multipli di n, uno ad uno a partire da n */
if(m>=a && m<=b) /* solo se m e' compreso entro i limiti imposti... */
{
cout<<m<<endl; /* ...lo mostri in console */
}
i++; /* DOPO incrementi il moltiplicatore */
} while(m<=b);
system("pause");
return 0;
}
Prova entrambi i codici con un debugger e vedi cosa succede alle variabili nei due casi.