Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C] Primo valore array

  1. #1

    [C] Primo valore array

    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

  2. #2
    sono niubbo col c , lo sto cercando di imparare in questi giorni.... ma io al tuo posto farei così

    codice:
    #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); i++) {
    scanf("%d", &a[i]);
    if (a[i]=='e') break;
    }
    
    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;
    }
    debian:~$ uname -r
    2.6.18-1-686
    debian:~$

    Il quiz manager è nato!!! visitate http://shenk.altervista.org !!

  3. #3
    for (i=0; (i<=MAX-1); i++) {
    scanf("%d", &a[i]);
    if (a[i]=='e') break;
    }

    Putroppo non funziona!
    O almeno memorizza correttamente il primo valore e quelli successivi ma nel momento in cui digiti e esce ma poi visualizza tutti e 30 i valori massimi dell'array.

    E' come se il comando break non interrompesse il ciclo for.

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

    E' la prima soluzione che avevo ipotizzato ma i valori non vengono memorizzati e poi sono d'accordo con te che l'istruzione getchar non è quella corretta.

    AIUTOOOO!!!

    Grazie comunque Ragazzi!

    Antonio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.