Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327

    [c] Convertire Un Deciamale Ad Intero

    Ciao a tutti, di nuovo.
    Qualcuno sa dirmi una funzione che trasforma un double in un intero, arrotondando per difetto?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    No, perchè mi servirebbe in uscita un int..
    C'è qualcos'altro?

  4. #4
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Converti il risultato di floor in un int!!

    codice:
    int i = static_cast<int>(floor(2.8));
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  5. #5
    Ma fare direttamente un cast ad int?
    codice:
    int i = (int)2.6;
    printf("%d",i); /* 2 */
    @XWolverineX: occhio, stiamo parlando di C, per cui non puoi usare lo static_cast.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Grazie ragazzi, ho risolto il problema raggirandolo;
    Dovevo fare il paragone tra delle variabili e il risulatato della divisione approssimato per difetto..
    Anzi che trasformarlo, ho invece dichiarato gli altri termini di paragone come double...

  7. #7
    Ma comunque così non approssimi per difetto... :master:
    raggirandolo
    Gli hai venduto dei rolex falsi?
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Originariamente inviato da MItaly
    Ma comunque così non approssimi per difetto... :master:

    Gli hai venduto dei rolex falsi?
    Approssimo perchè prima ho usato floor

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Ho creato un programma che conta le parole in input e dispone in una matrice ( che finalmente sono riuscito a creare) tanti asterischi quante sono le parole in ingresso, e il progrmma funziona:
    codice:
    #include<stdio.h>
    #include <math.h>
    #define R 12
    #define C 8
    
    char matrix[R][C];
    
    int getline(char[]);
    int contaparole(char[]);
    void crea();
    void stampa(); 
    void illumina(int,int);
    void trovaipunti (int);
    
    main()
    {     int k;
          char vett[10000];
          printf("Inserisci una frase :\n");
          getline(vett);
          k=contaparole(vett);
          printf("Il numero di parole che hai inserito corrispondera' al numero di asterischi..\n");
          crea();
          trovaipunti(k); 
          stampa();
          getch();
    }
           
    
    void crea()
    {
          int r,c;
          for(r=0;r<R;r++)
            for(c=0;c<C;c++)
                matrix[r][c]='.';
    }
    
    void illumina(int x,int y)
    {
         matrix[x][y]='*';
    }
    
    
    void stampa()
    {
         int c,r;
         for(r=0;r<R;r++)
         {
             for(c=0;c<C;c++)
             printf("%c\t",matrix[r][c]);
             printf("\n");
         }
    }
    
    
    int getline (char vettore[]){
    int c,i=0;
                                while((c=getchar())!= '\n')
                                                      vettore [i++]=c;
                                if (c=='\n')
                                             vettore[i++]=c;
    
                                vettore[i]= '\0';
                                return i;
                                }
                                
    int contaparole(char line[])
        {
            int a=0,b=1,i=0,stato,parola=0;
            stato=a;
            while(line[i]!=EOF)   
            {
            if(line[i]!=' ' && stato==a)
               {
               i++;
               parola++;
               stato=b;
               }   
            if(line[i]==' '&& stato==b)
            {
            stato=a;
            i++;
            }
            else i++;
            }
            return parola;
         }
            
     void trovaipunti (int k)
     {
          double t,o,c,r;
          int h;
          t=k/C;
          o=floor(t);
    	  if(k<=C)
          {
              for(r=0;r<=0;r++)
              {
                  for(c=0;c<k;c++)
                  illumina(r,c);
              }
                     
          }
          
          if(k>C)
          {
              for(r=0,h=0;r<=o;r++,h++)
              {
                  for(c=0;c<C && h<=k;c++,h++)
                  illumina(r,c);
              }
          }
    }

    Ho dunque deciso di disporre gli asterischi, non piu' in riga ma in colonna.. Stavolta, se inserisco meno parole del numero di righe, o al piu' uguali, funziona.. se inserisco piu' parole non funziona..
    Non riesco a trovare l'errore:

    codice:
         
    #include<stdio.h>
    #include <math.h>
    #define R 12
    #define C 8
    
    char matrix[R][C];
    
    int getline(char[]);        //in colonna
    int contaparole(char[]);
    void crea();
    void stampa(); 
    void illumina(int,int);
    void trovaipunti (int);
    
    main()
    {     int k;
          char vett[10000];
          printf("Inserisci una frase :\n");
          getline(vett);
          k=contaparole(vett);
          printf("Il numero di parole che hai inserito corrispondera' al numero di asterischi..\n");
          crea();
          trovaipunti(k); 
          stampa();
          getch();
    }
           
    
    void crea()
    {
          int r,c;
          for(r=0;r<R;r++)
            for(c=0;c<C;c++)
                matrix[r][c]='.';
    }
    
    void illumina(int x,int y)
    {
         matrix[x][y]='*';
    }
    
    
    void stampa()
    {
         int c,r;
         for(r=0;r<R;r++)
         {
             for(c=0;c<C;c++)
             printf("%c\t",matrix[r][c]);
             printf("\n");
         }
    }
    
    
    int getline (char vettore[]){
    int c,i=0;
                                while((c=getchar())!= '\n')
                                                      vettore [i++]=c;
                                if (c=='\n')
                                             vettore[i++]=c;
    
                                vettore[i]= '\0';
                                return i;
                                }
                                
    int contaparole(char line[])
        {
            int a=0,b=1,i=0,stato,parola=0;
            stato=a;
            while(line[i]!=EOF)   
            {
            if(line[i]!=' ' && stato==a)
               {
               i++;
               parola++;
               stato=b;
               }   
            if(line[i]==' '&& stato==b)
            {
            stato=a;
            i++;
            }
            else i++;
            }
            return parola;
         }
            
     void trovaipunti (int k)
     {
          double t,o,c,r;
          int h;
          t=k/R;
          o=floor(t);
    	  if(k<=R)
          {
              for(r=0;r<k;r++)
              {
                  for(c=0;c<=0;c++)
                  illumina(r,c);
              }
                     
          }
          
          if(k>R)
          {
              for(r=0,h=0;r<=R;r++,h++)
              {
                  for(c=0;c<=o && h<=k;c++,h++)
                  illumina(r,c);
              }
          }
    }

  10. #10
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Originariamente inviato da MItaly
    Ma fare direttamente un cast ad int?
    codice:
    int i = (int)2.6;
    printf("%d",i); /* 2 */
    @XWolverineX: occhio, stiamo parlando di C, per cui non puoi usare lo static_cast.
    Sono un distratto esagerato...
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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