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).