Ciao a Tutti,

da giorni sto impazzendo su questo programma che sto scrivendo a scopo didattico:

#include <stdio.h>
#define MAX 30

int main()
{

int i, j, k, s, c, a[MAX], minori[MAX], maggiori[MAX], count1, count2, n;

count1=0;
count2=0;
j=0;
k=0;
s=0;

printf("Inserire i valori interi\nE per terminare\n30 Inserimenti disponibili\n");

for (i=0; (i<=MAX-1) && (c=getchar()!='e'); i++)
scanf("%d", &a[i]);


printf("Sono stati inseriti %d valori\n\n", i-1);

printf("I valori inseriti:\n");

for (s=0 ; s<i-1; s++)
printf("%d\n", a[s]);

printf("Inserire il valore di confronto n: ");
scanf("%d",&n);

for (s=0 ; s<i-1; s++){
if (a[s]==n)
continue;
if (a[s]<n){
minori[k]=a[s];
++k;
++count1;
}
else{
maggiori[j]=a[s];
++j;
++count2;
}
}

if (count1 != 0){
printf("Ci sono i seguenti elementi minori di %d nell'array\n", n);
for (i=0 ; i<=count1-1; i++)
printf("%d\n", minori[i]);
}
if (count2 != 0){
printf("Ci sono i seguenti elementi maggiori di %d nell'array\n", n);
for (i=0 ; i<=count2-1; i++)
printf("%d\n", maggiori[i]);
}
return 0;
}

La parte incriminata è quella in rosso bold (almeno credo)!

Compilando il file.c si vede che il semplice programma funziona ma non memorizza la prima cifra del primo valore immesso.

Qualcuno ha una vaga idea di perchè non prende solo la prima cifra del primo valore???

Se il comando (c=getchar()!='e'); non è corretto dovrebbe dare lo stesso problema con tutte le prime cifre di tutti i primi numeri immessi!!

AIUTOO!!!

Grazie a Tutti,
Ciao,
Antonio