|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2005
Messaggi: 162
|
[c]aiutooo
cosa c'è di sbagliato in questo programma?
centrano sicuramente i puntatori... Scrivere un programma che inizializza un vettore di dimensione 100 con interi random tra 1 e 1000. Poi, con un sistema “menu” permetta di effettuare le seguenti operazioni: - trova il valore max - trova il valore min - trova la media aritmentica Il sistema di menu deve esser gestito con puntatori a funzioni.*/ #include<stdlib.h> #include<stdio.h> int menu (void); int trovaMax(int *pt); int trovaMin(int *pt); int media(int *pt); int main(){ int *pt;/*pt è un puntatore ad un intero*/ int n[100]; int scelta,i; scelta=0; for(i=0;i<100;i++){ n[i]=1+(rand()%1000); }/*fine comando for*/ while ((scelta)!=4){ switch (scelta){ case 1: system("clrscr"); trovaMax(pt); break; case 2: system("clrscr"); trovaMin(pt); case 3: system("clrscr"); media(pt); }/*fine comando switch*/ }/*fine comando while*/ return 0; }/*fine della funzione main*/ /*funzione menu*/ int menu(void) { int menuScelta; /*è la varaiabile in cui verrà memorizata la scelta*/ printf("inserisci la tua scelta:\n\n" "1- trova il valore massimo\n" "2- trova il valore minimo \n" "3- trova la media\n" "4- esci dal programma\n" ); scanf("%d",&menuScelta);/*l'utente ha inserito la propria scelta*/ if(menuScelta<1||menuScelta>4){ printf("è stata inserita uan scelta non valida\n"); }/*fine del ramo if*/ return menuScelta; }/*fine funzione menu*/ int trovaMax(int *pt) { int n[100]; int i; int max; max=n[0]; for(i=1;i<100;i++){ if(n[i]>max){ max=n[i]; }//chiude if printf("il valore massimo è %i:\n",max); }//chiude for return max; }//fine funzione int trovaMin(int *pt) { int n[100]; int i; int min; min=n[0]; for(i=1;i<100;i++){ if(n[i]<min){ min=n[i]; }//chiude if printf("il valore massimo è %i:\n",min); }//chiude for return min; }//fine funzione int media(int *pt) { int n[100]; int i, media,somma; for (i=1;i<100;i++){ somma+=n[i]; } media=somma/100; printf("la media è\n",media); return media; } Ultima modifica di emiliano30 : 16-05-2005 alle 20:57. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2003
Messaggi: 49
|
Dunque....non ho un compilatore sotto mano...cmq penso nn si riesca nemmeno a compilare....
Cmq dando un'occhiata veloce: mancano i "break" dopo case2 e case3 la funzione del menu non viene nemmeno utilizzata nel main... devi trovare i valori massimi e minimi nel vettore ma gli passi un puntatore ad intero che non hai nemmeno inizializzato Il codice è un gran casino....sembri un po' confuso... 2 consigli veloci (senza offesa...sono niubbo pure io...): i commenti così piazzati sono praticamente inutili il codice non indentato è praticamente impossibile da leggere Prova a ridare un'occhiata al codice e ripostalo... Non ti scrivo io la soluzione sennò nn ti serve a nulla.... |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2004
Città: Privincia di Torino
Messaggi: 181
|
Ho modidifcato il tuuo programma, così funziona:
#include<stdlib.h> #include<stdio.h> int menu (void); int trovaMax(); int trovaMin(int *pt); int media(int *pt); main() { int *pt;/*pt è un puntatore ad un intero*/ int n[100]; int scelta,i,MAX,MIN,MEDIA; scelta=0; for(i=0;i<100;i++){ n[i]=1+(rand()%1000); }/*fine comando for*/ pt=&n[0]; scelta=menu(); switch (scelta){ case 1: MAX=trovaMax(pt); printf("Massimo -> %d",MAX); break; case 2: MIN=trovaMin(pt); printf("Minimo -> %d",MIN); break; case 3: MEDIA=media(pt); printf("Media -> %d",MEDIA); break; }/*fine comando switch*//*fine comando while*/ printf("\n"); system("pause"); }/*fine della funzione main*/ /*funzione menu*/ int menu(void) { int menuScelta; /*è la varaiabile in cui verrà memorizata la scelta*/ printf("inserisci la tua scelta:\n\n" "1- trova il valore massimo\n" "2- trova il valore minimo \n" "3- trova la media\n" "4- esci dal programma\n" ); scanf("%d",&menuScelta);/*l'utente ha inserito la propria scelta*/ if(menuScelta<1||menuScelta>4){ printf("è stata inserita uan scelta non valida\n"); }/*fine del ramo if*/ return menuScelta; }/*fine funzione menu*/ int trovaMax(int *pt) { int i; int max; max=*pt; for(i=1;i<100;i++){ if(pt[i]>max){ max=pt[i]; }//chiude if }//chiude for return max; }//fine funzione int trovaMin(int *pt) { int i; int min; min=pt[0]; for(i=1;i<100;i++){ if(pt[i]<min){ min=pt[i]; }//chiude if }//chiude for return min; }//fine funzione int media(int *pt) { int i, media,somma; for (i=1;i<100;i++){ somma+=pt[i]; } media=somma/100; return media; } cerca di capire gli errori che hai fatto, confrontando il tuo con il mio, non ho tempo di farlo io ora
__________________
Mobo: Asus K8V-X chipset VIA K8T800 - Proc: AMD Athlon 64 Bit 3000+ Mem: 2x512 MB Ram DDR 400 Mhz - SV: GeForce 4 Mx200-300 HDD: 2x80 GB Maxtor - lettore CD 52x & masterizzatore DVD 8x (CD 40x) Dual Layer |
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Ma perche' non usate mai quel caxxo di tag code...
|
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Se dovessimo partecipare ad una gara di obfuscated code, vincerebbe di sicuro il forum di programmazione di HWUpgrade, doppiando in punti il secondo classificato.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:00.



















