Vettore di interi

di Anonimizzato23166 il
10 risposte
Salve a tutti
ho un problema, sto cercando di fare la seguente operazione.

supponiamo di avere un numero intero n e un vettore di interi h=[2,3,5,7]
dovrei ottenere un secondo vettore in cui ogni singola componente sia pari al numero di divisioni che hanno resto zero.
ad esempio supponiamo n=12 e h=[2,3]; il mio vettore risultante dovra' essere g=[2,1]

questo sotto e' il mio pseudo codice che pero' non funziona.

for(i=0;i<Q;i++)
k=0;
while(n%h[i]==0)
k=k+1;
printf("%d\n",k);
grazie in anticipo per ogni aiuto

10 Risposte

  • Premetto che anche con l'esempio che hai fatto, non ho capito cosa deve fare il programma.
    - Q chi è?
    - Il ciclo for non serve a nulla.
    - Se n%h==0 è vera il ciclo while è infinito.
  • Spiega meglio
  • Sia g un vettore di interi della stessa dimensione di h e con tutti gli elementi inizializzati a 0. Sia m una variabile intera. All'interno di un ciclo for poni m=n e finché m%h[j]==0 aumenti g[j] di 1; quest'ultima operazione va ovviamente eseguita all'interno di un altro ciclo, ma non dimenticarti di modificare m ad ogni iterazione.
  • Si scusate ho spiegato il problema malamente, ma nel frattempo l ho risolto con questa funzione che allego.
    in parole povere dovevo fissare ogni valore del vettore g mentre verificavo una certa condizione
    grazie a tutti per le risposte
    
    int ottavo (int *g,int n) { //funzione che stampa gli esponenti dei fattori primi
    
                     int i,k,tmp;
    
                    printf("esponenti dei fattori primi\n");
                                
    		for(i=0;i<n;i++){
                    k=0;
                    tmp=g[i];
                    while(n%tmp==0){
                    n=n/tmp;
                    k=k+1;         }
    
                               printf ("%d\n",k);
                                   }
    
                                      }
    
  • Void ottavo?
  • Come dici?
  • Intende dire che la tua funzione non restituisce in intero quindi dovrebbe essere

    void ottavo

    e non

    int ottavo
  • Grazie per la delucidazione, ho corretto, avrei un altra domanda da fare

    vorrei definire i punti di una griglia supponiamo 3x3 (vedi file allegato) e da questa vorrei essere in grado di definire i punti di una griglia piu' fitta e la possibilita' di muovermi tra una griglia e l altra.
    questo per quanto riguarda la dimensione 2.
    per dimensioni superiori vorrei fare la stessa cosa, ad esempio se la dimensione e' 3 e partendo da una griglia tridimensionale in questo caso 3x3 vorrei avere la possibilita' di muovermi avanti e indietro tra griglie piu' o meno fitte.
    questo e' il primo punto.

    fatto questo e supponendo di rimanere nella dimensione 2 mi piacerebbe creare un nuovo oggetto immagine dei punti della griglia nxn (dimensione 2) in cui ogni punto ha subito una "migrazione" nel piano.

    fatto questo mi piacerebbe costruire in qualche modo le linee geodetiche del nuovo piano. (vedo altro file allegato).

    a questo punto la mia domanda e': come impostereste il problema? con quali oggetti (vettori, vettori di vettori, vettori di strutture etc per cercare di non creare un codice con un numero eccessivo di linee.

    ogni idea e' benvenuta, grazie in anticipo per le risposte.
    ciao
    Allegati:
    secondo file
    secondo file

    primo file
    primo file
  • Crea un altro thread non puoi usare lo stesso per più domande
  • In attesa di un eventuale nuovo thread, inizio a dirti che non ho capito quello che intendi fare. Magari contestualizzare meglio il problema e fare qualche esempio potrebbe aiutare.
Devi accedere o registrarti per scrivere nel forum
10 risposte