Risolto esercizio array aiuto

Marilungo33

Utente Iron
7 Febbraio 2022
7
2
0
5
Ultima modifica da un moderatore:
Inserire dei numeri interi in
un array


Visualizzare gli elementi di
un array


Calcolare la media aritmetica
delle componenti in posizione dispari


Calcolare la media aritmetica
delle componenti in posizione pari
C++:
#include <iostream>
using namespace std;
#define N 3

int main() {
  int arr[N];


  for (int i = 0; i < N; i++) {
   cout << "Inserisci il valore dell'elemento in posizione " << i << ": ";
   cin >> arr[i];
  }


  for (int i = 0; i < N; i++) {
  cout<<"Elemento in posizione " << i << ": " << arr[i] <<endl;
  }


  float media_pari = 0, media_dispari = 0;
  for (int i = 0; i < N; i++) {
    if (i % 2) media_dispari=arr[i];
    else media_pari=arr[i];
  }
  media_dispari= N / 2;
  media_pari= N / 2 + (N % 2);

  return 0;
}

perche la media non va?
 
All'interno del for devi fare += invece di =
C++:
if (i % 2) media_dispari += arr[i];
else media_pari += arr[i];
e poi aggiungerei un cout alla fine di tutto per stampare le due medie.
 
All'interno del for devi fare += invece di =
C++:
if (i % 2) media_dispari += arr[i];
else media_pari += arr[i];
e poi aggiungerei un cout alla fine di tutto per stampare le due medie.
Allora media_dispari= N/2 è media_pari=N/2+(N%2) è sbagliato?
Messaggio unito automaticamente:

Allora media_dispari= N/2 è media_pari=N/2+(N%2) è sbagliato?

All'interno del for devi fare += invece di =
C++:
if (i % 2) media_dispari += arr[i];
else media_pari += arr[i];
e poi aggiungerei un cout alla fine di tutto per stampare le due medie.
All'interno del for devi fare += invece di =
C++:
if (i % 2) media_dispari += arr[i];
else media_pari += arr[i];
e poi aggiungerei un cout alla fine di tutto per stampare le due medie.
Codice:
float media_pari = 0, media_dispari = 0;
  for (int i = 0; i < N; i++) {
    if (i % 2) media_dispari += arr[i];
    else media_pari += arr[i];
  }
  media_dispari = N / 2;
  media_pari = N / 2 + (N % 2);
Intendi così? Non viene comunque anche se metto /=N/2
 
Sostituisci = con += sopra e = con /= sotto. Così
C++:
float media_pari = 0, media_dispari = 0;
for (int i = 0; i < N; i++) {           
  if (i % 2) media_dispari += arr[i];   
  else media_pari += arr[i];            
}                                       
media_dispari /= N / 2;                 
media_pari /= N / 2 + (N % 2);
 
Io adotterei una soluzione più pulita, ovvero utilizzerei funzioni separate per restituire la media delle posizioni pari e la media di quelle dispari:
C++:
float mediaDispari(int array[N]){
    float somma = 0;
    for (int i  = 0; i < N; i += 2){
        somma += array[i];
    }
    return somma / (N/2) ;
}

float mediaPari(int array[N]){
    float somma = 0;
    for (int i = 1; i < N; i += 2){
        somma += array[i];
    }
    return somma / (N/2) ;
}
 
Io adotterei una soluzione più pulita, ovvero utilizzerei funzioni separate per restituire la media delle posizioni pari e la media di quelle dispari:
C++:
float mediaDispari(int array[N]){
    float somma = 0;
    for (int i  = 0; i < N; i += 2){
        somma += array[i];
    }
    return somma / (N/2) ;
}

float mediaPari(int array[N]){
    float somma = 0;
    for (int i = 1; i < N; i += 2){
        somma += array[i];
    }
    return somma / (N/2) ;
}
Scusi il disturbo, ma non ho ben capito perché mettere +=, a cosa serve?
 
Ultima modifica da un moderatore:
È l'operatore che si utilizza per scrivere gli incrementi in modo più compatto. Esempio:
i = i + 1; ( metodo più lungo)
i += 1; (metodo più breve)
C++:
using namespace std;
#define N 3

int main() {
  int arr[N];


  for (int i = 0; i < N; i++) {
   cout << "Inserisci il valore dell'elemento in posizione " << i << ": ";
   cin >> arr[i];
  }


  for (int i = 0; i < N; i++) {
  cout<<"Elemento in posizione " << i << ": " << arr[i] <<endl;
  }



float mediaDispari(int array [N]){
    float somma = 0;
    for (int i  = 0; i < N; i += 2){
        somma += array[i];
    }
    return somma / (N/2) ;
}


float mediaPari(int arr[N]){
    float somma=0;
    for (int i = 1; i < N; i+=2){
        somma += array[i];
    }
    return somma / (N/2) ;
}

}

non so perchè ma mi dice errore nella media dispari
 
Codice:
using namespace std;
#define N 3

int main() {
  int arr[N];


  for (int i = 0; i < N; i++) {
   cout << "Inserisci il valore dell'elemento in posizione " << i << ": ";
   cin >> arr[i];
  }


  for (int i = 0; i < N; i++) {
  cout<<"Elemento in posizione " << i << ": " << arr[i] <<endl;
  }



float mediaDispari(int array [N]){
    float somma = 0;
    for (int i  = 0; i < N; i += 2){
        somma += array[i];
    }
    return somma / (N/2) ;
}


float mediaPari(int arr[N]){
    float somma=0;
    for (int i = 1; i < N; i+=2){
        somma += array[i];
    }
    return somma / (N/2) ;
}

}

non so perchè ma mi dice errore nella media dispari
Perché hai passato il nome dell'array sbagliato...fai attenzione...o lo chiami "array[N]" oppure lo chiami "arr[N]. Devi passare lo stesso Array in entrambe le funzioni, ossia quello che hai dichiarato. Nel tuo caso devi passare arr[N]
 
  • Mi piace
Reazioni: Marilungo33