Guest User

Untitled

a guest
Jun 19th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.59 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define LUNGHEZZA_INPUT 4
  4.  
  5. int radice_intera(int x)
  6. {
  7.     int a=1;
  8.    
  9.         while(a*a<=x)
  10.         a=a+1;
  11.        
  12.         return a-1;
  13.    
  14.    
  15. }
  16.  
  17. int potenza(int base, int esp)
  18. {
  19.     int i=0;
  20.     int a=1;
  21.     int risultato;
  22.    
  23.     if (esp==0) return a;
  24.     else
  25.     {
  26.         for(i=0;i<esp;i++)
  27.         {
  28.         risultato=a*base;
  29.         a=risultato;
  30.         }
  31.         return a;
  32.     }
  33. }
  34.  
  35.  
  36. int main()
  37. {
  38.     /* Progettare un programma RADICE che legga in ingresso una serie di numeri interi positivi di al piu
  39. 4 cifre e ne calcoli la radice quadrata intera. Il programma deve richiedere ciclicamente all'utente il
  40. numero del quale desidera la radice e visualizzare il risultato. Il programma deve terminare quando
  41. in ingresso riceve la parola FINE. */
  42.  
  43.     char ingresso_char[LUNGHEZZA_INPUT];
  44.     int ingresso_int[LUNGHEZZA_INPUT];
  45.     int radicando=0;
  46.     int lunghezza_input=LUNGHEZZA_INPUT;
  47.     int i=0, k=0;
  48.    
  49.  
  50.    
  51.    
  52.     printf("Inserire un numero di al piu' %d  cifre o la parola 'fine'.\n", lunghezza_input);
  53.    
  54.    
  55.     for(i=0;i<LUNGHEZZA_INPUT;i++)
  56.     {
  57.         scanf("%c", &ingresso_char[i]);
  58.         if (ingresso_char[i]=='\n')
  59.         {
  60.             k=i;i=LUNGHEZZA_INPUT;
  61.         }
  62.         else k=LUNGHEZZA_INPUT;
  63.        
  64.     }
  65.    
  66.     if((ingresso_char[0]=='f' || ingresso_char[0]=='F') &&
  67.         (ingresso_char[1]=='i' || ingresso_char[1]=='I') &&
  68.         (ingresso_char[2]=='n' || ingresso_char[2]=='N') &&
  69.         (ingresso_char[3]=='e' || ingresso_char[3]=='E') )
  70.         {
  71.             printf("Ricevuta la stringa 'fine'. Tanti saluti.");
  72.             return 0;
  73.         }
  74.     else
  75.     {
  76.         for(i=0;i<k; i++)
  77.         {
  78.             switch(ingresso_char[i])
  79.             {
  80.                 case '1':
  81.                 ingresso_int[i]=1;
  82.                 break;
  83.                
  84.                 case '2':
  85.                 ingresso_int[i]=2;
  86.                 break;
  87.                
  88.                 case '3':
  89.                 ingresso_int[i]=3;
  90.                 break;
  91.                
  92.                 case '4':
  93.                 ingresso_int[i]=4;
  94.                 break;
  95.                
  96.                 case '5':
  97.                 ingresso_int[i]=5;
  98.                 break;
  99.                
  100.                 case '6':
  101.                 ingresso_int[i]=6;
  102.                 break;
  103.                
  104.                 case '7':
  105.                 ingresso_int[i]=7;
  106.                 break;
  107.                
  108.                 case '8':
  109.                 ingresso_int[i]=8;
  110.                 break;
  111.                
  112.                 case '9':
  113.                 ingresso_int[i]=9;
  114.                 break;
  115.                
  116.                 case '0':
  117.                 ingresso_int[i]=0;
  118.                 break;
  119.                
  120.                 default:
  121.                 printf("Errore inserimento.");
  122.                 return 0;
  123.                
  124.             }
  125.         }
  126.        
  127.     }
  128.    
  129.     printf("Hai inserito il numero:\n");
  130.    
  131.     for(i=0;i<k; i++)
  132.     {
  133.         printf("%d", ingresso_int[i]);
  134.     }
  135.    
  136.     /*ora devo trasformare l'array ingresso_int in un numero, per questo mi serve la funzione potenza*/
  137.    
  138.    
  139.     printf("\n");
  140.     for(i=k-1;i>=0;i--)
  141.         radicando=radicando+ingresso_int[i]*potenza(10, k-1-i);
  142.    
  143.    
  144.     printf("La radice intera del numero %d corrisponde a %d.\n", radicando, radice_intera(radicando));
  145.     printf("\n\n \n");
  146.    
  147.    
  148.    
  149.    
  150. }
Add Comment
Please, Sign In to add comment