PDA

View Full Version : [c]non esegue


emiliano30
16-05-2005, 19:36
cosa c'è di sbagliato in questo programma? :mc:
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;
}

Darkslide
16-05-2005, 22:24
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.... :D

Super_Cloud
16-05-2005, 22:38
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

mjordan
17-05-2005, 01:03
Ma perche' non usate mai quel caxxo di tag code... :muro:

mjordan
17-05-2005, 01:05
Se dovessimo partecipare ad una gara di obfuscated code, vincerebbe di sicuro il forum di programmazione di HWUpgrade, doppiando in punti il secondo classificato. :muro: