PDA

Visualizza la versione completa : Vettore in C


Franzcecco
24-11-2015, 14:50
Salve ragazzi,
Studio al Poli a Torino e mi sto impratichendo con il linguaggio C ( I anno)...
Dovrei scrivere un programma che calcoli, dato un vettore di 5 elementi, la media dei suoi elementi e quante volte un certo valore limite viene superato dagli elementi del vettore... fin qui tutto semplice, anzi, ma il problema è che non ho capito bene come passare un vettore ad una funzione! Perchè con le funzioni lo devo risolvere! Io ho scritto ciò:



double vectmedia (int, int);
int limit(int, int, float);
int main()
{
int v[5], i, s=0, d;
float m, x;
printf("Inserisci valori del vettore:\n");
for(i=0; i<5; i++) {
scanf("%d", &v[i]);
}
d = upperlimit(v, i, x);
m = vectmedia(v, i);
printf("Numero dei valori trovati superiori a %d trovati: %lf\n", x, d);
printf("Media degli elementi: %lf", m);
return 0;
}


int limit( int a[], int b, int c) {
int flag =0,w;
for(w=0; w<b-1; w++) {
if( a[w]>c) {
flag++;
}
}
return flag;
}
double vectmedia(int a[],int b) {
int somma=0, w;
double media;
for(w=0; w<b-1; w++) {
somma=somma +a[w];
}
media = somma/(b-1);
return media;
}


ma mi dice sempre alla riga int limit( int a[], int b, int c) che c'è un confictyn types for "limit"... cosa significa? Non me lo fa compilare!

oregon
24-11-2015, 15:08
All'inizio hai dichiarato

int limit(int, int, float);

e poi scrivi

int limit( int a[], int b, int c)

Franzcecco
24-11-2015, 15:12
Oddio XD ma è corretta come sintassi ? Adesso che torno lo provo... Grazie in anticipo ^^

oregon
24-11-2015, 15:14
Oddio XD ma è corretta come sintassi ?

Che intendi?

Franzcecco
24-11-2015, 15:21
Che intendi?

Intendo il passaggio del vettore alla funzione... il mio dubbio era quello...

Franzcecco
24-11-2015, 19:20
Comunque non va lo stesso, stesso errore... adesso ricopio il nuovo codice per sicurezza:


#include <stdio.h>
#include <stdlib.h>
double vectmedia (int, int);
int limit(int, int, float);
int main()
{
int v[5], i, s=0, d;
float m, x;
printf("Inserisci valori del vettore:\n");
for(i=0; i<5; i++) {
scanf("%d", &v[i]);
}
d = upperlimit(v, i, x);
m = vectmedia(v, i);
printf("Numero dei valori trovati superiori a %d trovati: %lf\n", x, d);
printf("Media degli elementi: %lf", m);
return 0;
}


int limit( int a[], int b, float c) {
int flag =0,w;
for(w=0; w<b-1; w++) {
if( a[w]>c) {
flag++;
}
}
return flag;
}
double vectmedia(int a[],int b) {
int somma=0, w;
double media;
for(w=0; w<b-1; w++) {
somma=somma +a[w];
}
media = somma/(b-1);
return media;
}

oregon
24-11-2015, 19:24
Comunque non va lo stesso

Naturalmente dato che non hai corretto completamente la prima dichiarazione

Perché non la copi?

Franzcecco
24-11-2015, 19:29
Sarò ottuso, ma non vedo l'errore... Potresti indicarmelo?

oregon
24-11-2015, 20:06
Il primo parametro non deve essere un int ma un vettore di int

Franzcecco
24-11-2015, 20:19
#include <stdio.h>
#include <stdlib.h>
#define n 5
int limit(int v[],int);
float media (int v[]);
int main()
{
int i, x, f, v[n];
float m;
printf("Inserisci i valori del vettori:\n");
for(i=0; i<n; i++) {
scanf("%d", &v[i]);
}
printf("Inserisci il valore da confrontare:\n");
scanf("%d", &x);
m = media(v);
f = limit(v, x);
printf("Media %f invece il valore %d e' superato %d volte.", m, x, f);
return 0;
}
limit (vettore[], a) {
int d, flag=0;
for (d=0; d<n; d++) {
if (v[d]> a) {
flag++;
}
}
return flag;
}
media(vettore[]) {
int s, somma;
float media;
for(s=0; s<n; s++) {
somma = somma + vettore[s];
}
media = somma/n;
return media;
}

Ho riscritto così, ma mi dice adesso uknown type name 'vettore' and 'a'... cosa significa?

Loading