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