Guest User

Untitled

a guest
Apr 24th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.43 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <math.h>
  5.  
  6.  
  7. void cubo(int);
  8. void cubo(int num){
  9.   int i, b, a, z, cubo;
  10.   int c = 100, sum = 0;
  11.   b = num;
  12.   for(i = -1; c >= 100; i++){
  13.     c = num/(pow(10, i));
  14.      }
  15.   do{
  16.   z = pow(10, i);
  17.   a = b % z;
  18.   if ((b-a) != 0){
  19.   cubo = pow(((b-a)/pow(10, i)), 3);
  20.   } else {
  21.     cubo = a;
  22.   }
  23.   sum += cubo;
  24.   i--;
  25.   b = a;
  26.   a = 0;
  27.   } while (i > -1);
  28.   printf("La somma dei cubi delle cifre decimali che compongono il numero %d è  %d \n", num, sum);
  29.   if( sum == num){
  30.     printf("Il numero %d è un numero narcisista \n", num);
  31.   }
  32.   else {
  33.     printf("Il numero %d non è un numero narcisista \n", num);
  34.   }
  35. }
  36.  
  37.  
  38. void ricerca_cubi(int, int *);
  39. void ricerca_cubi(int nmax, int *numeriC){
  40.   int i, s;
  41.   int a, b, c;
  42.    
  43.   for ( i = 0; i < nmax; i++){
  44.     a = i/100;
  45.     b = (i/10) - (a * 10);
  46.     c = i - (a * 100) - (b * 10);
  47.     if ( (a * a * a + b * b * b + c * c * c) == i){
  48.       numeriC[s] = i;
  49.       s++;
  50.     }
  51.   }
  52. }
  53.  
  54. void numeri_narcisisti(int *, int);
  55. void numeri_narcisisti(int *numeriC, int M){
  56.   FILE *p;
  57.   int i, a, b, c;
  58.   p = fopen("numeriC.dat", "w+");
  59.   for (i = 0; i <= M; i++){
  60.     a = numeriC[i] / 100;
  61.     b = (numeriC[i] / 10) - (a * 10);
  62.     c = numeriC[i] - (a * 100) - (b * 10);
  63.     fprintf(p, "%d ^ 3 + %d ^ 3 + %d ^ 3   = %d \n", a, b, c, numeriC[i]);
  64.   }
  65.   fclose(p);
  66. }
  67.  
  68. int calcolo_max_min(int *);
  69.   int calcolo_max_min(int *numeriC){
  70.   int min, max, i;
  71.   for ( i = 0; numeriC[i + 1] > numeriC[i]; i++){
  72.     if (numeriC[i+1] > numeriC[i]){
  73.       max = numeriC[i+1];
  74.     }
  75.   }
  76.   min = numeriC[0];
  77.   printf("Il max è %d e il min è %d \n", max, min);
  78.   return i;
  79. }
  80.    
  81.  
  82.   main(){
  83.   int nmax;
  84.   int numeriC[1000] = {0};
  85.   int i;
  86.   int num, M, scelta;
  87.  
  88.  
  89.   printf("Premere 1 per testare se un numero è un numero narcisista \n");
  90.   printf("Premere 2 per calcolare tutti i numeri narcisisti da 0 a un Nmax inserito da tastiera \n");
  91.   scanf("%d", &scelta);
  92.  
  93.   if (scelta == 2){
  94.   do{
  95.     printf("Inserire un numero naturale < 1000 \n");
  96.     scanf("%d", &nmax);
  97.     if( (nmax > 1000) || (nmax < 0)){
  98.       printf("Valore non conforme \n");
  99.     }
  100.   } while ( (nmax > 1000) || (nmax < 0));
  101.  
  102.   ricerca_cubi(nmax, numeriC);
  103.   M = calcolo_max_min(numeriC);
  104.   numeri_narcisisti(numeriC, M);
  105.   }
  106.   if (scelta == 1){
  107.  printf("Inserisci un numero \n");
  108.  scanf("%d", &num);
  109.  cubo(num);
  110.   }
  111.   }
Add Comment
Please, Sign In to add comment