Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636

    [C] riconoscimento carattere

    ciao a tutti...ho fatto questo ciclo per l'inserimento di un codice
    codice:
    char ISBN[N];
        int s1[N];
        int s2[N];
        char num;
    	int i
    
        printf("Inserisci elementi del codice ISBN\n");
    
        for (i = 0; i < N; i++){
            scanf ("%c", &num);
            if (num == 'X'){
                ISBN[i] = 10;
            }
                ISBN[i] = num;
               
        }
    cioè inserendo il carattere 'X' da tastiera, vorrei che nel vettore mi scrivesse '10'
    dove sbaglio?

  2. #2
    Utente di HTML.it L'avatar di abbax
    Registrato dal
    Feb 2009
    Messaggi
    227
    primadi tutto non inizializzi la N... non si sa quanto valga.
    poi s1 ed s2 cosa sono? le hai dichiarate ma non le usi...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    ecco tutto il codice


    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define N 10
    
    int main() {
    
        char ISBN[N];
        int s1[N];
        int s2[N];
        char num;
        int i;
    
        printf("Inserisci elementi del codice ISBN\n");
    
        for (i = 0; i < N; i++){
            scanf ("%c", &num);
            if (num == 'X'){
                ISBN[i] = 10;
            }
                ISBN[i] = num;
    
        }
    
        printf("Cifre contenute in ISBN\n");
        for (i = 0; i < N; i++){
            printf("%c\t", ISBN[i]);
        }
    
        printf("\nSomme parziali in s1\n");
        for (i = 0; i < N; i++){
            s1[0] = ISBN[0];
            s1[i + 1] = s1[i] + ISBN[i + 1];
           printf("%d\t", s1[i]);
        }
    
        printf("\nSomme parziali in s2\n");
        for (i = 0; i < N; i++){
            s2[0] = s1[0];
            s2[i + 1] = s2[i] + s1[i + 1];
            printf("%d\t", s2[i]);
        }
    
    	system("PAUSE");
    
        return 0;
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma perche' non spieghi meglio il problema? Perche' hai aperto un altro thread con un problema simile?

    Questo 10 cosa deve essere? Un intero? Insomma ... cosi' come hai scritto va bene ... ma se non dici cosa non va ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    non va perchè quando digito 'X' da tastiera,
    nel vettore ISBN non mi scive '10' ma il numero precedentemente inserito da tastiera

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da jurij7
    non va perchè quando digito 'X' da tastiera,
    nel vettore ISBN non mi scive '10' ma il numero precedentemente inserito da tastiera
    E perche' non lo dici prima? Perche' usare 20 messaggi prima di capire il problema ?

    Sei sicuro che digiti X oppure digiti x (minuscola) ?

    E come ti accorgi che non c'e' 10 ?

    Hai fatto un po' di debugging ?

    Non mi sembra che gli esercizi ti stiano servendo per imparare ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    si ho fatto un debugging passo passo..salta proprio la condizione if anche se digito 'X'

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da jurij7
    si ho fatto un debugging passo passo..salta proprio la condizione if anche se digito 'X'
    Lo fa perche' come IN TUTTI GLI ALTRI CASI la scanf accetta il carattere e il return ...

    Devi usare una

    fflush(stdin);

    (o un qualsiasi altro metodo) per ignorare il return. Quindi


    scanf ("%c", &num);
    fflush(stdin);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    ecco...ho fatto cosi
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define N 10
    /*
     * 
     */
    int main() {
    
        char ISBN[N];
        int s1[N];
        int s2[N];
        char num;
        int i;
    
    
        printf("Inserisci elementi del codice ISBN\n");
    
       for (i = 0; i < N; i++){
            scanf ("%d", &num);
    		fflush(stdin);
            if (num == 'X'){
                ISBN[i] = 10;
            }
                ISBN[i] = num;
    
        }
    	
        
        printf("Cifre contenute in ISBN\n");
        for (i = 0; i < N; i++){
    		
            printf("%d\t", ISBN[i]);
    
        }
    
        printf("\nSomme parziali in s1\n");
        for (i = 0; i < N; i++){
            s1[0] = ISBN[0];
            s1[i + 1] = s1[i] + ISBN[i + 1];
           printf("%d\t", s1[i]);
        }
    
        printf("\nSomme parziali in s2\n");
        for (i = 0; i < N; i++){
            s2[0] = s1[0];
            s2[i + 1] = s2[i] + s1[i + 1];
            printf("%d\t", s2[i]);
        }
    
    	system("PAUSE");
    
        return 0;
    }
    la 'X' può essere inserita solo come decimo elemento (è un carattere di controllo).
    Ovviamente inserendo la 'X', deve mettermi nel vettore il numero '10'..ma questo non avviene

  10. #10
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao . . . Premetto che quello che vorresti fare non l' ho capito . . . Comunque non pensi che ci sia qualcosa di strano in queste istruzioni :
    codice:
    if(num == 'X'){
    ISBN[i] = 10;
    }
    ISBN[i] = num;
    ??? Io direi proprio di si . . .
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

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 © 2024 vBulletin Solutions, Inc. All rights reserved.