Salve, ho realizzato questo algoritmo che permette l'interruzione della lettura di un vettore ,tuttavia quando vado a compilare il programma con l'implementazione di questo codice il programma non mi restituisce valori corretti, cosa posso aver sbagliato? Grazie.
do{
printf("Inserisci un numero alla volta compreso tra 18 e 90: ");
scanf("%d",&e);
if (e<=90 && e>=18){
E[i]=e;
++i;
}else if (e!=z)
printf("Non puoi inserire valori <18 e >90\n");
}while (i<=DIM && e!=z); //carattere di fine lettura = 1
Questo è il codice completo del programma in caso potesse servire:
/*Leggere in input un elenco E di numeri interi compresi tra 18 e 90, estremi inclusi, contenente almeno 10 elementi. Considerare i controlli sugli input.
Calcolare il valore di E piu’ presente e quello meno presente in E.
Visualizzare i risultati ottenuti.
Esempio:
E = (19, 23, 25, 67, 19, 67, 25, 19, 25, 19)
Valore piu’ presente = 19
Valore meno presente = 23*/
#include <stdio.h>
#include <stdlib.h>
#define DIM 50
void Frequenza(int C[DIM],int E[DIM]);
int ValoreMenoPresente(int C[DIM],int E[DIM]);
int ValorePiuPresente(int C[DIM],int E[DIM]);
void StampaPresenza(int MinPres,int MaxPres);
int main()
{
int z;
int e;
z=1;
int E[DIM],C[DIM];
int i=1;
int MinPres;
int MaxPres;
do{
printf("Inserisci un numero alla volta compreso tra 18 e 90: ");
scanf("%d",&e);
if (e<=90 && e>=18){
E[i]=e;
++i;
}else if (e!=z)
printf("Non puoi inserire valori <18 e >90\n");
}while (i<=DIM && e!=z); //carattere di fine lettura = 1
if (i>=10){
Frequenza(C,E);
MinPres=ValoreMenoPresente(C,E);
MaxPres=ValorePiuPresente(C,E);
StampaPresenza(MinPres,MaxPres);
}else
printf("devono essere presenti almeno 10 elementi \n");
system("pause");
return 0;
}
void Frequenza(int C[DIM],int E[DIM])
{
int i=1;
while (i<=DIM){
int j=1;
int count=0;
while (j<=DIM){
if (E[i]==E[j]){
++count;
C[i]=count;
}
++j;
}
++i;
}
return;
}
int ValoreMenoPresente(int C[DIM],int E[DIM])
{
int MinFreq;
int k=0;
int end=0;
while (k<=1000 && end==0){
int j=1;
while (j<=DIM){
if (C[j]==k){
MinFreq=E[j];
end=1;
}
++j;
}
++k;
}
return MinFreq;
}
int ValorePiuPresente(int C[DIM],int E[DIM])
{
int MaxFreq;
int k=1000;
int end=0;
while (k<=1000 && end==0){
int j=1;
while (j<=DIM){
if (C[j]==k){
MaxFreq=E[j];
end=1;
}
++j;
}
--k;
}
return MaxFreq;
}
void StampaPresenza(int MinPres,int MaxPres)
{
printf("Il numero meno frequente e': %d\n",MinPres);
printf("Il numero piu' frequente e': %d\n",MaxPres);
return;
}