Frequenza numero con funzione esterna

di il
2 risposte

Frequenza numero con funzione esterna

Salve volevo chiedere se qualcuno poteva aiutarmi con questo programma di c++ con le funzioni esterne: calcola la massima,minima e la moda (quante volte è contenuto un numero in un array)
Io l'ho fatto così solo che la moda non funzione e risulta sempre 0 se qualcuno riuscisse a capire dove sbaglio gli sarei davvero grata:
#include <iostream>
using namespace std;
  int minore (int a[],int n){
       int pos=0;
       for (int i=0;i<n;i++){
       if (a[i]<a[pos])
       pos=i;}
       return a[pos];}
       
       int massimo (int a[],int n){
       int pos=0;
       for (int i=0;i<n;i++){
       if (a[i]>a[pos])
       pos=i;}
       return a[pos];}
       
       int frequenza (int a[],int b,int n){
       int count;      
       for (int i=0;i<n;i++){
           if (a[i]==b)
           count++;}
       return count;}
       int main() {
              int n;
              char scelta;
cout<<"Questo programma compie tre operazioni:\na)trova gli elementi massimi\nb)il numero di elementi minimi c)la moda.\nInserisci il numero di interi che hai intenzione di inserire.\n";
cin>>n;
int a[n];

for(;;){
cout<<"\nQuale operazione vuoi scegliere? Premi:\na)Per i numeri massimi .\nb)Per verificare quanti interi sono massimi.\nc)per vedere quante volte è contenuto un numero\n";
cin>>scelta;
switch(scelta){
           
              case 'a':{ 
                  
              cout<<"inserisci i numeri.\n";
              for (int i=0;i<n;i++)
              cin>> a[i];
              cout<< "il numero più alto è "<<massimo(a,n);
              break;}
              case 'b':{ 
              cout<<"inserisci i numeri.\n";
              for (int i=0;i<n;i++)
              cin>> a[i];
              cout<< "il numero più basso è  .\n"<<minore(a,n);
              break;}
              case 'c':{int b;
                   cout<<"inserisci i numeri.\n";
              for (int i=0;i<n;i++)
              cin>> a[i];
              cout<<"la moda è" <<frequenza (a,b,n);
                   break;}
              
              system ("pause");
              return 0;
             
             }
             }
              }

2 Risposte

  • Re: Frequenza numero con funzione esterna

    Aggiungi i tag CODE e indenta il codice, altrimenti si fa fatica a leggerlo e a risponderti ...
  • Re: Frequenza numero con funzione esterna

    Prima un appunto: perchè per ogni scelta fai caricare l'array? Ti suggerisco di farlo caricare una sola volta all'inizio ed eventualmente di inserire una voce di "menù" che ti permetta di ricaricarlo; se vuoi velocizzare le tue prove (non perdendo tempo ogni volta a digitare tutti questi valori) ti consiglio di commentare il caricamento da tastiera e caricare dei valori "di debug" direttamente nel codice.
    Per quanto riguarda il tuo problema:
    {int b;
                       cout<<"inserisci i numeri.\n";
                  for (int i=0;i<n;i++)
                  cin>> a[i];
                  cout<<"la moda è" <<frequenza (a,b,n);
                       break;}
    Tu cerchi b all'interno dell'array a[] che ha dimensione n: ma b è indefinito!!!
    E poi la funzione frequenza()
           int frequenza (int a[],int b,int n){
           int count;     
           for (int i=0;i<n;i++){
               if (a[i]==b)
               count++;}
           return count;}
    
    anche count parte da un valore indefinito!
Devi accedere o registrarti per scrivere nel forum
2 risposte