Problema Linguaggio c

Pubblicità

Davide9898

Nuovo Utente
Messaggi
17
Reazioni
0
Punteggio
21
Salve ragazzi, ho la seguente richiesta in linguaggio C:
Creare un programma che implementi una funzione che abbia come input 2 parametri:un vettore e la sua dimensione:.La funzione calcoli la media del vettore e restituisce il numero del vettore e restituisca il numero di volte in cui i valori del vettore sono superiori al secondo.

ho provato cosi: voi che ne dite?


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int funzione (int x [], int y); // Prototipo di funzione

int main ()
{
int v [10];
int j, l;

l = function (v, 10);

printf ("il numero di volte che i valori superano la media e '=% d \ n", l);


}

int funzione (int x [], int y) // Diesis
{

srand (time (NULL));

int i; // indice dei cicli
int media, somma;
somma = 0;

for (i = 0; i <y; i ++)
{
x = rand ()% 100;
somma = somma + x ;


}

media= somma / y;
printf ("La media e '=% d \ n", media);
somma = 0;


for (i = 0; i <y; i ++)
{
se (x > media)
{
somma ++;
}


}
return somma;


}
 
Ciao, mi pare di aver capito che la funzione deve calcolare la media degli elementi di un vettore fornito in input e il numero di volte che questo valore viene superato, giusto? Ok, tralasciando il fatto che nel codice ci sono alcuni errori, forse dovuti alla fretta di scriverlo sul forum (per assegnare un valore all'i-esimo elemento di un vettore devi includerne l'indice i tra parentesi quadre, poi devi fare attenzione agli spazi - \ n è diverso da \n) io l'inizializzazione del vettore la farei da un'altra parte, visto che la consegna ti chiede semplicemente di scrivere una funzione che faccia delle operazioni su un vettore dato in input (che si presume già esistente), non anche di inizializzarlo. È meglio attenersi a quanto esplicitamente richiesto, anche per rendere più generico e riutilizzabile il codice. Quindi prova a riscrivere la funzione facendogli fare esattamente quello che ti chiede la traccia, nulla di più. L'inizializzazione del vettore la puoi fare nel main. Poi, visto che la funzione deve produrre in output due valori, rispettivamente la media degli elementi del vettore e il numero di volte che tale valore è stato superato (cioè il numero di elementi superiori al valore medio), a meno che non sia specificato, puoi decidere tu come "esternarli": per esempio potresti far restituire il valore medio e scrivere con una printf il numero di elementi superiori (come hai fatto tu); ma potresti anche "restituire" il secondo valore come parametro di input-output tramite una variabile data in input alla funzione (quindi scrivendo una funzione che prende tre parametri: vettore, dimensione e numero di valori superiori alla media); oppure potresti produrre anche il primo valore modificando un parametro di input-output, realizzando così una procedura (con tipo di ritorno void) a quattro parametri (vettore, dimensione, media e numero di valori superiori alla media). Insomma ci sono varie possibilità, buon divertimento:ok:
 
Ho provato a riscrivere il codice in questo modo,può andare bene?

<code>
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100

/*Esercizio 2 31 gennaio*/

int main()
{
int vet[SIZE];//Sequenza di numeri interi
int N;//Dimensione del vettore
int valore;
int i;
int numero=0;

printf("Inserisci la dimensione del vettore\n");
scanf("%d",&N);

printf("\nInserisci il valore intero: ");
scanf("%d",&valore);

for(i=0;i<N;i++)
{
printf("\nInserisci i valori del vettore\n");
scanf("%d",&vet);

}

for(i=0;i<N;i++)
{
if(vet>valore)
numero=numero+1;
}
printf("Il numero dei valori del vettore che superano il valore immesso e' %d\n",numero);




return 0;
}
</code>
 
vet è un array, un array ha vari index (pensa ad un array di 100 elementi), tu lo stai chiamando come
C++:
if(vet > valore)
Vedi il problema qui?

Si vedo l'errore ho sbagliato io trascrivere in quanto avevo specificato "vet[ i ]".Grazie comunque,quindi il programma svolto in questa maniera va bene per la richiesta proposta giusto?
 
quindi il programma svolto in questa maniera va bene per la richiesta proposta giusto?
Quello non lo so, nel primo messaggio hai scritto
e restituisce il numero del vettore e restituisca il numero di volte in cui...
e il mio cervello quando ha visto comparire 2 volte la parola "restituire" ha smesso di porsi il problema :D
Forse ti sta chiedendo di ritornare uno struct con dentro 2 int?
 
Ultima modifica:
quindi il programma svolto in questa maniera va bene per la richiesta proposta giusto?
Una volta apportate le correzioni suggerite da Marcus Aseth il programma funziona, ma fa qualcosa di diverso rispetto a quello che avevi scritto nel primo post: non calcola una media, e non lo hai implementato in una funzione, ma nel main. Non avendo letto la traccia no so se va bene lo stesso, ma è diverso da quello di ieri. Da ultimo, dovresti inserire un controllo sul numero di elementi da inserire nell'array per evitare che si superi la dimensione SIZE.
 
Pubblicità
Pubblicità
Indietro
Top