Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230

    [C] Controllare i parametri di ingresso

    Ciao ragazzi,
    ho scritto un programma semplicissimo per il prodotto di due interi.
    In pratica un intero viene preso dallo stdin e l'altro gli è già assegnato il valore nel codice.
    Per prendere l'input dallo stdin uso scanf().
    Ora supponiamo che mi viene forntio in ingresso la stringa:uiiu o qualsisasi cosa che nn siano numeri, io vorrei che si sollevasse un errore e dicesse qualcosa del tipo: inserisci numero non stringhe!
    vi ringrazio in anticipo.


    Vi riporto il codice:
    Codice PHP:
    #ifndef SIZE_MAX
    #define SIZE_MAX ((size_t)-1)
    #endif
    int main()
    {     
    size_t q;
          for(;;){
               
    /*quantiy*/
             
    size_t p 10000000 ;/*price*/
             
    size_t t;     /*total*/
             
    int n;
             
    printf("%s","Suppose the article costs 10.000.000 E \n");       
             
    printf("%s","Enter quantity: ");
             
    /*qui vorrei inserire il controllo per verificare se è un numero o una stringa*/
             
    scanf("%d",&q);
             
    printf("%d",n);

               if(
    n<|| n>1){
                      
    printf("%s","INVALID INPUT");
               }
             
    /*
             if(q==0//condizione per chiudere  uscire dal for
             return 0;
             }
                        if(q>0 && SIZE_MAX/p>=q){

                               t = q*p;
                               printf("%s %d","Total:",t); 
                               printf("%s %s","\n","\n");

                        }
                        else{
                               printf("%s", "TOO BIG");
                        }     */
          
    }
          
    system("PAUSE");
          return 
    0;


  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Allora dovrai controllare ogni singolo carattere con la funzione isdigit
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230
    Grazie Oregon l'ho riscritto seguendo i tuoi consigli.
    Ora sembra funzionare, ma non capisco perchè quando inserisco il valore 343 mi restituisce il valore (Total) -18...... , perchè mi compare il segno "-".
    Codice PHP:
    #include <stdio.h>
    #include <stdlib.h>
    #include <cctype>
    #includ#ifndef SIZE_MAX
    #define SIZE_MAX ((size_t)-1)
    #endif
    #define BUFSIZE 100

    int main()<errno.h>

    {     
    size_t q/*quantiy*/
          
    char buff[BUFSIZE];
          
    int n 0;
          
    charend_ptr;
          
    bool flag;
          for(;;){
             
    size_t p 10000000 ;/*price*/
             
    size_t t 0;     /*total*/
             
    printf("%s","Suppose the article costs 10.000.000 E \n");
             
    printf("%s","Enter quantity: ");
             
    int char_count 0;
             
    char ch;
             
    ch getchar();
             if(
    ch == EOF )
                   
    perror("NO INPUT");
             
    char_count 0;
                while((
    ch != '\n')  &&  (char_count <BUFSIZE)) {
                    
    flag true;
                    
    buff[char_count++] = ch;
                    if(
    isdigit(ch)==0){
                       
    flag false;
                    }
                    
    ch getchar();
                    if(
    ch == EOF )
                          
    perror("NO INPUT");
                }
                
    buff[char_count] = 0x00;      /* null terminate buffer */
                
    if(flag == true){
                        
    errno 0;
                        
    = (int) strtoul(buff,NULL,0);
                        if (
    ERANGE == errno) {
                                   if (
    puts("number out of range\n") == EOF) {
                                    }
                        }
                        else if (
    end_ptr == buff) {
                             if (
    puts("not valid numeric input\n") == EOF) {
                             }
                        }
                        else {
                             if(
    q==0){
                               return 
    0/*with 0 we terminate*/
                             
    }
                             if(
    q>&& SIZE_MAX/p>=q){
                               
    q*p;
                               
    printf("%s %d","Total:",t);
                               
    printf("%s %s","\n","\n");
                             }
                             else{
                               
    printf("%s""TOO BIG \n");
                             }
                        }
               }
          }
          
    system("PAUSE");
          return 
    0;


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.