PROBLEMA VETTORI, multipli di 11, C++

Messaggioda Alex7337 » 22/06/2019, 10:29

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
Codice:
#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;
}
Alex7337
New Member
New Member
 
Messaggio: 16 di 61
Iscritto il: 25/01/2019, 16:42

Re: PROBLEMA VETTORI, multipli di 11, C++

Messaggioda ZfreS » 22/06/2019, 11:12

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.
Codice:
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
Cannot live without
Cannot live without
 
Messaggio: 1755 di 4589
Iscritto il: 22/10/2016, 17:52

Re: PROBLEMA VETTORI, multipli di 11, C++

Messaggioda Alex7337 » 22/06/2019, 11:31

ZfreS grazie mille per la spiegazione!
Alex7337
New Member
New Member
 
Messaggio: 17 di 61
Iscritto il: 25/01/2019, 16:42

Re: PROBLEMA VETTORI, multipli di 11, C++

Messaggioda Super Squirrel » 22/06/2019, 15:46

Prova a lanciare il seguente codice basato sulla risposta di @ZfreS
Codice:
#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:
Codice:
#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;
    }
}
Chi dorme in democrazia, si sveglia in dittatura.
Super Squirrel
Senior Member
Senior Member
 
Messaggio: 354 di 1486
Iscritto il: 16/05/2013, 22:05

Re: PROBLEMA VETTORI, multipli di 11, C++

Messaggioda ZfreS » 22/06/2019, 19:39

Non capisco perchè da quel problema. Comunque la tua soluzione è più semplice, più smart.
ZfreS
Cannot live without
Cannot live without
 
Messaggio: 1756 di 4589
Iscritto il: 22/10/2016, 17:52

Re: PROBLEMA VETTORI, multipli di 11, C++

Messaggioda vict85 » 23/06/2019, 17:29

Ovviamente si può eliminare l'operazione di modulo usando 2 cicli e la dimensione finale può essere calcolata a priori (è 91).
vict85
Moderatore
Moderatore
 
Messaggio: 9742 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite