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;
}
}
}
}
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;
}
}
}
}