Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Successione in un array
Forum - C/C++ - Successione in un array

Avatar
daniele_ (Normal User)
Newbie


Messaggi: 7
Iscritto: 12/03/2009

Segnala al moderatore
Postato alle 9:07
Martedì, 31/03/2009
Ciao a tutti! Allora dovrei fare una cosa del genere:

111111
111112
111113
111121
111123
111131
......
333333

in realtà è un singolo array (in questo caso di dimensione 6) che varia dopo aver effettuato un controllo.
I numeri sono prelevati da un altro array.
Ho provato con un paio di for e while ma non sono arrivato ad una soluzione
Codice sorgente - presumibilmente Plain Text

  1. for(j=0;j<mon;j++){
  2.       while(dim>0){
  3.       for(i=0;i<dim;i++){
  4.                          bin[i]=vet[j];
  5.                          printf("%d",bin[i]);
  6.                          }
  7.                          dim--;
  8.                          printf("\n");
  9.                          }
  10.                          dim=dim2;
  11.                          }



c'è una soluzione più semplice?
grazie ;)

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 695
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 14:16
Martedì, 31/03/2009
Testo quotato

Postato originariamente da daniele_:

Ciao a tutti! Allora dovrei fare una cosa del genere:

111111
111112
111113
111121
111123
111131
......
333333

in realtà è un singolo array (in questo caso di dimensione 6) che varia dopo aver effettuato un controllo.
I numeri sono prelevati da un altro array.




Non ho compreso molto il tuo codice, ma penso di aver compreso il problema, io lo risolverei così:

Codice sorgente - presumibilmente C++

  1. int dim = 6, mon = ...;
  2. int bin[dim], vet[mon], i, j, k;
  3.  
  4. [...]
  5. // avvaloramento  di vet[]
  6. [...]
  7.  
  8. for (i = 0; i < dim; i++)
  9.   bin[i] = vet[0];
  10.  
  11. do {
  12.         i = dim - 1;
  13.        
  14.         while ((bin[i] == vet[mon - 1]) && (i >= 0)) { i-- }
  15.        
  16.         if (i >= 0)
  17.            {
  18.                 for (j = i + 1; j < dim; j++)
  19.                     { bin[j] := vet[0] }
  20.                    
  21.                 k = 0;
  22.         while (bin[i] != vet[k]) { k++ }               
  23.  
  24.                 bin[i] = vet[k + 1];
  25.            }
  26.  
  27. } while (i < 0);



Testo quotato


grazie ;)



Di niente.

Ciao. :k:


Le cose si fanno per bene o non si fanno affatto
PM Quote
Avatar
daniele_ (Normal User)
Newbie


Messaggi: 7
Iscritto: 12/03/2009

Segnala al moderatore
Postato alle 15:21
Martedì, 31/03/2009
ok ti ringrazio! Solo che non va...però probabilmente perchè non ho capito due punti.

Allora il primo è: dove finisce il primo for? Prima del do o dopo il while?

E poi l'altro è:  bin[j] := vet[0]. I due punti sono errori di battitura?

PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 16:43
Martedì, 31/03/2009
io mi sono divertito con un po' di ricorsione
non so se risponde al requisito, ma magari ti puo' essere utile come traccia... :)

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <malloc.h>
  3.  
  4. const int minimo = 1;
  5. const int massimo = 3;
  6.  
  7. void gencont(int ncifre, int index, char * buf)
  8. {
  9.     int i;
  10.     char *p = buf + index;
  11.  
  12.     for (i = minimo; i <= massimo; ++i)
  13.     {
  14.         *p = i + '0';
  15.         if (index + 1 < ncifre)
  16.             gencont(ncifre, index + 1, buf);
  17.         else
  18.             puts(buf);
  19.     }
  20. }
  21.  
  22. int main()
  23. {
  24.     int cifre;
  25.     char * buf;
  26.  
  27.     printf("quante cifre: ");
  28.     scanf("%d", &cifre);
  29.     if (cifre < 1 || cifre > 100)
  30.     {
  31.         puts("errore parametro");
  32.         getchar();
  33.     }
  34.  
  35.     buf = malloc(cifre + 1);
  36.     memset(buf, 0, cifre + 1);
  37.  
  38.     gencont(cifre, 0, buf);
  39.  
  40.     free(buf);
  41.  
  42.     getchar();
  43.     return 0;
  44. }


PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 695
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 16:46
Martedì, 31/03/2009
Testo quotato

Postato originariamente da daniele_:

ok ti ringrazio! Solo che non va...però probabilmente perchè non ho capito due punti.

Allora il primo è: dove finisce il primo for? Prima del do o dopo il while?

E poi l'altro è:  bin[j] := vet[0]. I due punti sono errori di battitura?



ooops! Scusa.

E' che sono abituato a usare il Delphi :rotfl:

Comunque il primo for contiene solo un'istruzione e l'altro era:

Codice sorgente - presumibilmente Plain Text

  1. bin[j] = vet[0]



Ciao.

Ultima modifica effettuata da gigisoft il 31/03/2009 alle 18:41


Le cose si fanno per bene o non si fanno affatto
PM Quote
Avatar
daniele_ (Normal User)
Newbie


Messaggi: 7
Iscritto: 12/03/2009

Segnala al moderatore
Postato alle 17:40
Mercoledì, 01/04/2009
ok grandi ragazzi! Ho risolto!

Grazie! :k:

PM Quote