Puntatori

di thomas99 il
16 risposte
Salve, come posso riportare il valore della variabile count++ negli input della sottofunzione "VettoreConIConteggi(count,i)" ? Dovrei usare i puntatori?
Grazie.
void Frequenza(int E[DIM])
{
 
   int i=1;
   while (i<=DIM){
       int j=1;
       int count=0;
       while (j<=DIM){
          if (E[i]==E[j]){
          count++;    <---------------------------------
          }
          j++;
       }
   VettoreConIConteggi(count,i);  <---------------------------------
   i++;
   }

return;
}

16 Risposte

  • Non è chiaro cosa tu voglia ottenere. Non ti funziona qualcosa? Posta tutto il codice.
  • In effetti non si capisce nulla.
  • Nella sottofunzione "VettoreConIConteggi(count,i);" , l'input count non corrisponde con il valore count++ calcolato precedemente,invece io voglio fare in modo che la variabile count presente nell' input dalla funzione VettoreConIConteggi abbia il valore di count++ precedentemente calcolato.
  • 1) count++ è un'istruzione, quindi quello che dici non ha alcun senso. Intendevi che il count passato alla funzione non corrisponde al count calcolato prima?
    2) posta il prototipo di VettoreConIConteggi. Per caso c'è un puntatore a int come primo parametro?
  • 1) esattamente
    2) i prototipi sono i seguenti:
    void Frequenza(int E[DIM]);
    int VettoreConIConteggi(int count,int i);
  • E allora devi postare tutto il codice come ha detto Andrea. Che ne sappiamo noi di quale sia il count giusto? Lo tiriamo a indovinare?
  • Il count giusto è questo
     if (E[i]==E[j]){
              count++;    <---------------------------------
    voglio fare in modo che il valore di count++ vada a finire anche negli input della funzione VettoreConIConteggi

    questo è l'intero codice ma non ho ancora risolto tutte le funzioni:
    /*Leggere in input un elenco E di numeri interi compresi tra 18 e 90, estremi inclusi, contenente almeno 10 elementi. Considerare i controlli sugli input.
    Calcolare il valore di E piu’ presente e quello meno presente in E.
    Visualizzare i risultati ottenuti.
    Esempio:
    E = (19, 23, 25, 67, 19, 67, 25, 19, 25, 19)
    Valore piu’ presente = 19
    Valore meno presente = 23*/
    
    #include <stdio.h>
    #include <stdlib.h>
    #define DIM 5
    
    void Frequenza(int E[DIM]);
    int VettoreConIConteggi(int count,int i);
    int ValoreMenoPresente(int C[DIM],int E[DIM]);
    int ValorePiuPresente(int C[DIM],int E[DIM]);
    void StampaPresenza(int MinFreq,int MaxFreq);
    
    int main()
    {
        int MinFreq,MaxFreq;
        int e,z;
        z=1;
        int  E[DIM],C[DIM];
        int i=1;
    
        while (i<=DIM && e!=z){ //carattere di fine lettura = 1
            printf("Inserisci un numero alla volta compreso tra 18 e 90: ");
            scanf("%d",&e);
            if (e<=90 && e>=18){
            E[i]=e;
            i++;
            }else if (e!=z)
             printf("Non puoi inserire valori <18 e >90\n");
        }
    
        if (i>5){
           Frequenza(E);
          // MinFreq=ValoreMenoPresente(C,E);
         //  MaxFreq=ValorePiuPresente(C,E);
         //  StampaPresenza(MinFreq,MaxFreq);
        }else
        printf("devono essere presenti almeno 5 elementi \n");
        system("pause");
        return 0;
    }
    
    void Frequenza(int E[DIM])
    {
      // printf("%d %d %d %d %d",E[1],E[2],E[3],E[4],E[5]);
       int C[DIM];
       int i=1;
       while (i<=DIM){
           int j=1;
           int count=0;
           while (j<=DIM){
             if (E[i]==E[j]){
             count++;
             }
             j++;
           }
       VettoreConIConteggi(count,i);
       i++;
       }
    
    return;
    }
  • Qui i puntatori non c'entrano nulla e ti spieghi malissimo.

    Se la linea
     if (E[i]==E[j]){
    non viene eseguita, la count non viene incrementata ma questo non lo possiamo sapere.

    In ogni caso quando chiami la "sottofunzione" il parametro count che passi ha il valore attuale corretto.
  • thomas99 ha scritto:


    Il count giusto è questo
     if (E[i]==E[j]){
              count++;    <---------------------------------
    Ma che dici? Quella è una istruzione e viene eseguita SOLO se la if è vera.
    voglio fare in modo che il valore di count++ vada a finire anche negli input della funzione VettoreConIConteggi
    count++;

    NON E' un valore! Come ti si deve dire? Forse tu non hai chiaro il funzionamento delle variabili ...

    E poi DOVE sta questa funzione VettoreConIConteggi ?
  • Quindi hai definito il prototipo ma non la funzione. Ovvio che non funzioni
  • Ok, allora io sto usando count per contare , quindi lo sto usando come se fosse un valore.
    Quello che ho scritto funziona, in quanto ottengo il risultato voluto , però ho bisogno di passare alla funzione VettoreConIConteggi il conteggio (count++) solo se la condizione (E==E[j]) risulta vera
  • Weierstrass ha scritto:


    Quindi hai definito il prototipo ma non la funzione. Ovvio che non funzioni
    Non credo sia questo ... penso che lui pensi che count e count++ siano due variabili con valori diversi
  • If (E==E[j]){
    count++;
    }
    se scrivo printf("%d",count) , non ottengo il conteggio effettuato
  • Usa i tag CODE per riportare il codice.

    Se hai un problema con i valori di count probabilmente è perché la if non viene eseguita. Controlla con il debug prima di chiedere cose assurde.
Devi accedere o registrarti per scrivere nel forum
16 risposte