Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - dimezzare un array
Forum - C/C++ - dimezzare un array

Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 18:36
Martedì, 24/06/2008
Salve a tutti, ho scritto questo codice sperando che qulcuno possa aiutarmi...il problema è questo:
Devo acquisire un numero n, elevare 2^n (es: 2^3 = 8)...e fin qui ci siamo...
il problema sta nel dimezzare (es: il numero 8) fino ad incontrare l'elemento di posto a[0] dell'array allocato dinamicamente...
es: 2 ^3 = 8;
    8 / 2 = 4;
    4 / 2 = 2;
    2 / 2 = 1
come posso fare???...è lo stesso procedimento usato per dimezzare fino ad 1 un numero naturale n???spero di essere stato chiaro...grazie....

Ultima modifica effettuata da giocala88 il 24/06/2008 alle 19:11
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 0:56
Mercoledì, 25/06/2008
Testo quotato

Postato originariamente da giocala88:
ho scritto questo codice



Penso ti sia dimenticato di postarlo.


Il mio blog: https://piero.dev
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 22:21
Lunedì, 30/06/2008
ciao giocala, non ho capito con esattezza il tuo problema, ma ho provato a darti comunque una soluzione.... io ho fatto cosi:
#include <stdio.h>

int main(void)
{
  int val=2,i,n;  /* Variabili utilizzate:
                                           val - valore finale della potenza di 2
                                           i - indice del ciclo for
                                           n - valore preso in input */
                                          
  int* a; /* puntatore alla prima cella del vattore allocato dinamicamente */
  
     printf("Inserisci n: ");
     scanf("%d",&n);
     for (i=1;i<n;i++) /* ciclo per l'elevamento a potenza */
        val*=2;
        
     a=(int)malloc(sizeof(int)*val); /* Allocazione dinamica array con lunghezza ugiuale alla potenza di 2 */
    
     while (!val<=0) /* cicla finche il valore finale della potenza e < = a 0 */
          {  
            printf("\n\n\t%d",*(a+val));  /* stampa il contenuto della cella puntata dal valore attuale di val val*/
            val/=2;
          }
return 0;
}

Spero di avere capito quale era il tuo problema, altrimenti prova a lasciare anche il codice che hai fatto tu :k:

PM Quote