Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <math.h>
- void cubo(int);
- void cubo(int num){
- int i, b, a, z, cubo;
- int c = 100, sum = 0;
- b = num;
- for(i = -1; c >= 100; i++){
- c = num/(pow(10, i));
- }
- do{
- z = pow(10, i);
- a = b % z;
- if ((b-a) != 0){
- cubo = pow(((b-a)/pow(10, i)), 3);
- } else {
- cubo = a;
- }
- sum += cubo;
- i--;
- b = a;
- a = 0;
- } while (i > -1);
- printf("La somma dei cubi delle cifre decimali che compongono il numero %d è %d \n", num, sum);
- if( sum == num){
- printf("Il numero %d è un numero narcisista \n", num);
- }
- else {
- printf("Il numero %d non è un numero narcisista \n", num);
- }
- }
- void ricerca_cubi(int, int *);
- void ricerca_cubi(int nmax, int *numeriC){
- int i, s;
- int a, b, c;
- for ( i = 0; i < nmax; i++){
- a = i/100;
- b = (i/10) - (a * 10);
- c = i - (a * 100) - (b * 10);
- if ( (a * a * a + b * b * b + c * c * c) == i){
- numeriC[s] = i;
- s++;
- }
- }
- }
- void numeri_narcisisti(int *, int);
- void numeri_narcisisti(int *numeriC, int M){
- FILE *p;
- int i, a, b, c;
- p = fopen("numeriC.dat", "w+");
- for (i = 0; i <= M; i++){
- a = numeriC[i] / 100;
- b = (numeriC[i] / 10) - (a * 10);
- c = numeriC[i] - (a * 100) - (b * 10);
- fprintf(p, "%d ^ 3 + %d ^ 3 + %d ^ 3 = %d \n", a, b, c, numeriC[i]);
- }
- fclose(p);
- }
- int calcolo_max_min(int *);
- int calcolo_max_min(int *numeriC){
- int min, max, i;
- for ( i = 0; numeriC[i + 1] > numeriC[i]; i++){
- if (numeriC[i+1] > numeriC[i]){
- max = numeriC[i+1];
- }
- }
- min = numeriC[0];
- printf("Il max è %d e il min è %d \n", max, min);
- return i;
- }
- main(){
- int nmax;
- int numeriC[1000] = {0};
- int i;
- int num, M, scelta;
- printf("Premere 1 per testare se un numero è un numero narcisista \n");
- printf("Premere 2 per calcolare tutti i numeri narcisisti da 0 a un Nmax inserito da tastiera \n");
- scanf("%d", &scelta);
- if (scelta == 2){
- do{
- printf("Inserire un numero naturale < 1000 \n");
- scanf("%d", &nmax);
- if( (nmax > 1000) || (nmax < 0)){
- printf("Valore non conforme \n");
- }
- } while ( (nmax > 1000) || (nmax < 0));
- ricerca_cubi(nmax, numeriC);
- M = calcolo_max_min(numeriC);
- numeri_narcisisti(numeriC, M);
- }
- if (scelta == 1){
- printf("Inserisci un numero \n");
- scanf("%d", &num);
- cubo(num);
- }
- }
Add Comment
Please, Sign In to add comment