Puntatori

di il
16 risposte

Puntatori

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

  • Re: Puntatori

    Non è chiaro cosa tu voglia ottenere. Non ti funziona qualcosa? Posta tutto il codice.
  • Re: Puntatori

    In effetti non si capisce nulla.
  • Re: Puntatori

    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.
  • Re: Puntatori

    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?
  • Re: Puntatori

    1) esattamente
    2) i prototipi sono i seguenti:
    void Frequenza(int E[DIM]);
    int VettoreConIConteggi(int count,int i);
  • Re: Puntatori

    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?
  • Re: Puntatori

    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;
    }
  • Re: Puntatori

    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.
  • Re: Puntatori

    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 ?
  • Re: Puntatori

    Quindi hai definito il prototipo ma non la funzione. Ovvio che non funzioni
  • Re: Puntatori

    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
  • Re: Puntatori

    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
  • Re: Puntatori

    If (E==E[j]){
    count++;
    }
    se scrivo printf("%d",count) , non ottengo il conteggio effettuato
  • Re: Puntatori

    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