PDA

Visualizza la versione completa : [C] Problema con vettore


robe92
17-02-2012, 14:23
Salve a tutti, sono nuovo del forum nonché neofita programmatore (si fa perdire _:P) in C.. Ciò che vorrei proporvi come argomento di discussione è questo: ho creato un programma che acquisisce un vettore di 10 elementi e che stampa a video il minimo, il massimo e la media.. Fin qui tutto ok. Ciò che non riesco a risolvere, invece, è il problema che mi crea il printf() che vorrei inserire in output_vet (per raggruppare tutti i printf() in un'unica sottofunzione) perché, come vedrete, la sottofunzione max_min ritorna due valori e non saprei come indicare all'output di stampare due valori diversi dalla stessa sottofunzione. Sarebbe meglio usare puntatori?


#include <stdio.h>
#include <conio.h>
#define MAX 10

void input_vet (int v[], int dim);
int max_min (int v[], int dim);
float med (int v[], int dim);
void output_vet (int v[]);

main()
{
_ _ _int v[MAX];
_ _ _input_vet(v, MAX);
_ _ _max_min(v, MAX);
_ _ _med(v, MAX);
_ _ _output_vet(v);
}

void input_vet(int v[], int dim)
{
_ _ _int i;
_ _ _for(i=0;i<dim; i++)
_ _ _{
_ _ _ _ _printf ("Elemento %d del vettore: ", i);
_ _ _ _ _scanf ("%d", &v[i]);
_ _ _}
}


int max_min (int v[], int dim)
{
_ _ int i, max, min;
_ _ _max=min=v[0];
_ _ _for (i=0; i<dim; i++)
_ _ _{
_ _ _ _ _ _if (v[i]>max) max=v[i];
_ _ _ _ _ _if (v[i]<min) min=v[i];
_ _ _}
printf ("\nIl valore MASSIMO e': %d\n", max); _ _//Vorrei inserire questi due printf direttamente
printf ("Il valore MINIMO e': %d\n", min); _ _ _ _ _//in output, ma come fare per tornare due valori?
}


float med (int v[], int dim)
{
_ _int i, somma=0;
_ _float media;
_ _for (i=0; i<dim; i++)
_ _{
_ _ _ _somma+=v[i];
_ _}
media=(float)somma/dim;
return media;
}
// OUTPUT
void output_vet (int v[])
{
_ _ _printf ("Il valore della media e': %2.3f\n", med (v, MAX));
_ _ __getch();
}


Vi ringrazio in anticipo!

oregon
17-02-2012, 15:10
Non è il tuo forte spiegarti ...

Qual è il problema esattamente?

ESSE-EFFE
17-02-2012, 15:28
Originariamente inviato da robe92
la sottofunzione max_min ritorna due valori e non saprei come indicare all'output di stampare due valori diversi dalla stessa sottofunzione. Sarebbe meglio usare puntatori?


max_min(v, MAX);
int max_min (int v[], int dim)
{
}


Sì, non potendo restituire due valori, devi passare due puntatori che la funzione utilizzerà per il minimo e il massimo.

Qualcosa come:


int min, max;

max_min(v, MAX, &min, &max);

void max_min(int v[], int dim, int *min, int *max)
{
*min = ...;
*max = ...;
}

robe92
17-02-2012, 17:53
mentre per quanto riguarda l'acquisizione di elementi interi da tastiera in una matrice (di dimensione non definita) dei quali l'elemento nullo interrompe l'acquisizione e non viene considerato come potrei organizzarmi?

Loading