PDA

View Full Version : [C] matrici a funzioni


Louder Than Hell
27-01-2006, 20:12
Basta non ne posso più, mi sono scraniato, ho cercato sul mio libro, ho cercato su internet ed ho cercato sul forum, vi prego toglietemi dell'impiccio l'8 ed il 15 febbraio ho programmazione e laboratorio di programmazione ed io e le funzioni non andiamo per niente d'accordo :mad:

In pratica non riesco a passare la matrice ed il vettore alla funzione, in compilazione mi dice56 C:\Documents and Settings\Louder Than Hell\Desktop\19-01-06.cpp cannot convert `float (*)[6]' to `float* (*)[6]' for argument `1' to `void punteggio(float* (*)[6], float**)'

/*Esercizio 2: [20] Si utilizzi una matrice di float voti[N][M], con N definito in una macro uguale a 7,
e M definito in una macro uguale a 6 per rappresentare i voti dati da M giudici a N atleti (con numero
di gara pari all'indice della riga più uno) di una gara di pattinaggio. Si riempia la matrice voti con
giudizi casuali con valori tra 4.0 e 10.0 interi o semi interi (es. 4.0, 4.5, 5.0, ecc., suggerimento:
calcolare intero e dividere per 2). Si scriva ed esegua dal main la funzione punteggio che accetti in
ingresso la matrice voti ed un vettore vuoti di float punteggi[N], riempia le caselle di quest'ultimo
con i punteggi ottenuti dai corrispondenti atleti. Il punteggio è calcolato facendo la media dei voti
ottenuti dall'atleta, esclusi il più alto ed il più basso.
Si considerino classificati solo gli atleti con punteggio superiore a 7.0 e si salvi un file chiamato
risultato.txt, ove ad ogni atleta corrisponda una riga, es.:

numero punteggio
3 8.00
4 9.33
7 7.33
9 8.50

Si visualizzi il contenuto del file a video e si stampi a video il podio della gara, cioè numero e
punteggio dei primi tre classificati in ordine. Si modifichi il file scrivendo il colore delle medaglie
sulle righe corrispondenti, esempio:
numero punteggio medaglia
3 8.00 bronzo
4 9.33 oro
7 7.33
9 8.50 argento


*/


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 7
#define M 6

void punteggio(float voti[N][M],float punteggi[N]);

main(){
srand(time(NULL));
float voti[N][M],punteggi[N];
int i,j;

//creo voti casuali
for(i=0;i<N;i++){
for(j=0;j<M;j++){
voti[i][j]=(4+rand()%7);
}
}
for(i=0;i<N;i++){
for(j=0;j<M;j++){
printf("%f ",voti[i][j]);
}
printf("\n");
}
punteggio(voti,punteggio);


}

void punteggio(float voti[N][M],float punteggi[N]){

float votomax,votomin;
int nvotomax[N],nvotomin[N],i,j;

for(i=0;i<N;i++,votomax=0,votomin=10){
for(j=0;j<M;j++){
if(voti[i][j]>votomax){
votomax=voti[i][j];
nvotomax[i]=j;
}
if(voti[i][j]<votomin){
votomin=voti[i][j];
nvotomin[i]=j;
}
}
}
}

andbin
27-01-2006, 20:50
punteggio(voti,punteggio);

Il secondo parametro deve essere punteggi (l'array) e non punteggio (la funzione).
Comunque, per fare i pignoli, il tuo sorgente non è propriamente in standard ANSI "C".

Louder Than Hell
28-01-2006, 12:31
Il secondo parametro deve essere punteggi (l'array) e non punteggio (la funzione).
Comunque, per fare i pignoli, il tuo sorgente non è propriamente in standard ANSI "C".

Cosa dirti se non :doh: :doh: :doh:

Potresti dirmi cosa c'è di non ANSI? :fagiano:

Fenomeno85
28-01-2006, 13:27
guardando velocemente:

1) manca int nel main con rispettivo return
2) una indentazione che fa paura :D

mi son sempre chiesto perchè ci si ostina a mettere i prototitpi delle funzioni quando bastarerebbe semplicemente ficcare la procedura sopra il main :D

~§~ Sempre E Solo Lei ~§~

Louder Than Hell
28-01-2006, 14:20
guardando velocemente:

1) manca int nel main con rispettivo return

Vero :rolleyes:

2) una indentazione che fa paura :D

Em..si questo è un problema perchè io idento per me, evidentemente ho un identatura autodidatta mi dovrò leggere qualcosa :p

mi son sempre chiesto perchè ci si ostina a mettere i prototitpi delle funzioni quando bastarerebbe semplicemente ficcare la procedura sopra il main :D

Questo è stravero però i prof ed il libro fanno cosi percui mi sono adeguato :confused:

AnonimoVeneziano
28-01-2006, 15:07
guardando velocemente:

1) manca int nel main con rispettivo return
2) una indentazione che fa paura :D

mi son sempre chiesto perchè ci si ostina a mettere i prototitpi delle funzioni quando bastarerebbe semplicemente ficcare la procedura sopra il main :D

~§~ Sempre E Solo Lei ~§~


Prototipi e funzioni sotto il main rulez.

Odio il codice con le funzioni sopra il main, mi costringe a muovermi di diverse pagine per andare a vedere cosa fa il main, invece col main come prima funzione si ha una buona visuale del suo codice più una panoramica del prototipo di tutte le altre funzioni sopra .

Comunque poi sono gusti ;)

Ciao

andbin
28-01-2006, 19:37
Potresti dirmi cosa c'è di non ANSI? :fagiano:
Tranquillo, solo poche cose non sono ANSI: ;)
- la dichiarazione della funzione main.
- La chiamata ad una funzione (srand) prima della dichiarazione delle variabili.
- Il commento //

Louder Than Hell
29-01-2006, 15:18
Tranquillo, solo poche cose non sono ANSI: ;)
- la dichiarazione della funzione main.
- La chiamata ad una funzione (srand) prima della dichiarazione delle variabili.
- Il commento //
Grazie! :)

PS: bel gatto :fagiano: