Algoritmo in C che non esegue correttamente

di il
14 risposte

Algoritmo in C che non esegue correttamente

Scrivi un programma che legga da tastiera una serie di numeri in virgola maggiori di zero salvandoli nel vettore VET[10]: l'inserimento termina quando l'utente inserisce 10 numeri o appena inserisce un numero minore o uguale a zero. Successivamente stampi a video il più grande tra i numeri inseriti e calcola la media.

Questo è la consegna del mio algoritmo che ho già scritto però quando vado ad eseguire non mi permette di inserire 10 numeri come previsti... ecco l' algoritmo. Non riesco a capire l'errore se sta nel ciclo.
/* ing Vincenzo Speroni - 2017 ese1.c */
#include <stdio.h>
#include <conio.h>

main()
{
int i;
float vet[10],max=0,el,med=0;
textmode(2);
printf("\nInserisci i numeri:\n");
for(i=0;i<10;i++)
{
scanf("%f",&el);
if(el<=0)
break;
if(el>max)
max = el;
med += el;
vet = el;
}
printf("Numero max inserito: %g\n",max);
printf("Numero elementi inseriti: %d", i);
printf("\nSomma finale %g", med);
printf("\nMedia valori: %g\n", med/(i-1));
system("pause");
}

14 Risposte

  • Re: Algoritmo in C che non esegue correttamente

    Che vuol dire "non ti permette di inserire"??
  • Re: Algoritmo in C che non esegue correttamente

    Usa la tag code per postare il codice
    
    #include <stdio.h> 
    #include <conio.h> 
    
    main()
    {
    	int i;
    	float vet[10], max = 0, el, med = 0;
    	textmode(2);
    	printf("\nInserisci i numeri:\n");
    	for (i = 0; i < 10; i++)
    	{
    		scanf("%f", &el);
    		if (el <= 0)
    			break;
    		if (el > max)
    			max = el;
    		med += el;
    		vet[i] = el;
    	}
    	printf("Numero max inserito: %g\n", max);
    	printf("Numero elementi inseriti: %d", i);
    	printf("\nSomma finale %g", med);
    	printf("\nMedia valori: %g\n", med / (i - 1));
    	system("pause");
    }
    
  • Re: Algoritmo in C che non esegue correttamente

    oregon ha scritto:


    Che vuol dire "non ti permette di inserire"??

    Che anziché farmi la media dopo aver inserito 10 numeri, me la fa direttamente dopo aver inserito 2 numeri.
  • Re: Algoritmo in C che non esegue correttamente

    Gigina26 ha scritto:


    oregon ha scritto:


    Che vuol dire "non ti permette di inserire"??

    Che anziché farmi la media dopo aver inserito 10 numeri, me la fa direttamente dopo aver inserito 2 numeri.
    Non vedo nulla di strano nel tuo codice (se non che la precisione dei tuoi float lasceranno a desiderare con un po' di decimali, e che il for sarebbe da sostituire con un while).

    Io l'ho compilata e funziona correttamente
  • Re: Algoritmo in C che non esegue correttamente

    Faccio un paio di osservazioni
    1 - è meglio che la dichiarazione di main includa il tipo ritornato che è int
    2 - è meglio non utilizzare le funzioni di conio.h, che sono specifiche di un sistema operativo
    3 - io non userei né texmode né system("pause")

    e nello specifico la media la ottieni dividendo per i e non per i+1.

    Per il resto non capisco qual'è il funzionamento anomalo che risconti?
  • Re: Algoritmo in C che non esegue correttamente

    Per il resto non capisco qual'è il funzionamento anomalo che risconti?[/quote]


    È quello che il programma non si arresta dopo aver inserito 10 numeri ma prosegue... anche se poi nel calcolo della media la fa solo tra i primi 10 numeri inseriti.
  • Re: Algoritmo in C che non esegue correttamente

    Allora, per essere chiari, quando inserisci un valore negativo p zero, l'input si interrompe ... Non è che inserisci due numeri e il secondo è negativo? Tu che fai esattamente?
  • Re: Algoritmo in C che non esegue correttamente

    oregon ha scritto:


    Allora, per essere chiari, quando inserisci un valore negativo p zero, l'input si interrompe ... Non è che inserisci due numeri e il secondo è negativo? Tu che fai esattamente?

    Ora l'ho un po' modificato però comunque inserisco 10 numeri Positivi e me ne fa inserire altri quindi non si ferma dopo 10 numeri. L'algoritmo funziona perfettamente il mio problema è che la consegna mi dice che "termina quando l'utente ha inserito 10 numeri".
  • Re: Algoritmo in C che non esegue correttamente

    Ci fai vedere come l'hai modificato o tiriamo ad indovinare?
  • Re: Algoritmo in C che non esegue correttamente

    [/code]

    oregon ha scritto:


    Ci fai vedere come l'hai modificato o tiriamo ad indovinare?

    Ho tolto la libreria conio e l'ho sostituita con stdlib,ho eliminato il textmode e anziché fare la media (media/(i-1)) la faccio direttamente/i
    #include <studio.h>
    #include<stdlib.h>

    main()
    {
    int i;
    float vet[10],max=0,el,med=0;
    printf("\nInserisci i numeri:\n");
    for(i=0;i<10;i++)
    {
    scanf("%f",&el);
    if(el<=0)
    break;
    if(el>max)
    max = el;
    med += el;
    vet = el;
    }
    printf("Numero max inserito: %g\n",max);
    printf("Numero elementi inseriti: %d", i);
    printf("\nSomma finale %g", med);
    printf("\nMedia valori: %g\n", med/i);
    system("pause");
    }
  • Re: Algoritmo in C che non esegue correttamente

    <studio.h>

    ???

    <stdio.h>
  • Re: Algoritmo in C che non esegue correttamente

    oregon ha scritto:


    <studio.h>

    ???

    <stdio.h>

    Si scusa ho sbagliato a scrive
  • Re: Algoritmo in C che non esegue correttamente

    Il resto funziona regolarmente ...
  • Re: Algoritmo in C che non esegue correttamente

    oregon ha scritto:


    Il resto funziona regolarmente ...

    Ah va bene probabilmente non avevo capito bene l'esercizio e quindi continuavo ad insistere con 10 valori. Grazie.
Devi accedere o registrarti per scrivere nel forum
14 risposte