PROBLEMA VETTORI, multipli di 11, C++
Salve ragazzi, sto lottando con questo problema che proprio non mi riesce:
in pratica devo inserire in automatico in un vettore tutti i numeri da 1 a 100 tranne i multipli di 11...
ora può sembrare facile, ma sto riscontrando varie difficoltà...
Questo è il codice che ho scritto, ma mi duplica dei numeri per ovvie ragioni... ma non trovo altri modi per risolverlo...
il vostro aiuto è gradito! GRAZIE
in pratica devo inserire in automatico in un vettore tutti i numeri da 1 a 100 tranne i multipli di 11...
ora può sembrare facile, ma sto riscontrando varie difficoltà...
Questo è il codice che ho scritto, ma mi duplica dei numeri per ovvie ragioni... ma non trovo altri modi per risolverlo...
il vostro aiuto è gradito! GRAZIE
#include <iostream>
using namespace std;
int main()
{
int vet[100];
for(int i=0; i<100; i++){
if((i+1)%11!=0){
vet[i]=i+1;
}else if(i+1)%11==0){
vet[i]=i+2;
}
cout<<vet[i]<<endl;
}
return 0;
}
Risposte
Ecco a te! Questa è la mia soluzione, se c'è qualcuno che ha un'idea migliore la proponga.
Il problema è che la prima if non sa se l'altra è stata valutata come true, quindi esegue comunque il suo lavoro stampandoti lo stesso numero d prima.
Il problema è che la prima if non sa se l'altra è stata valutata come true, quindi esegue comunque il suo lavoro stampandoti lo stesso numero d prima.
int main()
{
int vet[100];
for (int i = 0; i<100;) {
if (((i + 1) % 11 != 0))
{
vet[i] = i + 1;
cout << vet[i] << endl;
i++;
}
else if ((i + 1) % 11 == 0)
{
vet[i] = i + 2;
cout << vet[i] << endl;
i += 2;
}
}
ZfreS grazie mille per la spiegazione!
Prova a lanciare il seguente codice basato sulla risposta di @ZfreS
L'output ti sembra accettabile?
Io cmq avrei fatto qualcosa del genere:
#include <iostream>
using namespace std;
int main()
{
int vet[100];
for(int i = 0; i < 100;)
{
if(((i + 1) % 11 != 0))
{
vet[i] = i + 1;
i++;
}
else if((i + 1) % 11 == 0)
{
vet[i] = i + 2;
i += 2;
}
}
for(int i = 0; i < 100; i++)
{
cout << vet[i] << endl;
}
}L'output ti sembra accettabile?
Io cmq avrei fatto qualcosa del genere:
#include <iostream>
using namespace std;
int main()
{
int v[100];
unsigned int dim = 0;
unsigned int i;
for(i = 1; i <= 100; ++i)
{
if(i % 11)
{
v[dim++] = i;
}
}
for(i = 0; i < dim; ++i)
{
cout << v[i] << endl;
}
}
Non capisco perchè da quel problema. Comunque la tua soluzione è più semplice, più smart.
Ovviamente si può eliminare l'operazione di modulo usando 2 cicli e la dimensione finale può essere calcolata a priori (è 91).