[C] Generazione sequenza di Armstrong

di il
13 risposte

[C] Generazione sequenza di Armstrong

Salve sono un nuovo iscritto del forum . Non riesco a risolvere questo problema in c per il calcolo dei numeri di armstrong. Cioè se è un numero di armstrong mi stampa il numero stesso. Questo è il codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int n;
    int k=0;
    int i;
    int vett[100];
    int sum=0;
    
    printf("inserisci numero");
    scanf("%d",&n);
    for(i=0;n!=0;i++){
       vett[i] =n%10;
      n=n/10;
      k++;
    }

 for(i=0;i<k;i++){
   sum= sum +pow(vett[i],k);
 }

if(n==sum)
    printf("armstrong");

    return 0;
}

13 Risposte

  • Re: [C] Generazione sequenza di Armstrong

    Spiega cosa è un numero di Armstrong e cosa succede nel tuo programma. Usa i tag code per presentare il codice nel forum in modo che si legga meglio.
  • Re: [C] Generazione sequenza di Armstrong

    I numeri di Armstrong sono numeri tali che la somma delle n cifre che li costituiscono, ciascuna elevata ad n, è uguale al numero stesso.Con il primo ciclo for si riesce a scomporre il numero nelle sue cifre che lo costituiscono.Con il secondo ho la somma delle potenze del numero.Alla fine non stampa niente. Ho provato ad inserire usando un altro metodo le potenze delle cifre in un altro vettore e per 153 numero di Armstrong mi fa 5 elevato al cubo 124??
  • Re: [C] Generazione sequenza di Armstrong

    Ok ... se rifletti bene, tu alla fine confronti n, ma n non è più il numero iniziale perché è diventato 0
  • Re: [C] Generazione sequenza di Armstrong

    Ho risolto parzialmente salvando all'inizio in un altra variabile il valore di n.Però con 153 non va .
  • Re: [C] Generazione sequenza di Armstrong

    Con 153, salvando la variabile, il codice che hai mostrato funziona. Se hai apportato modifiche allora devi riproporre il codice modificato.
  • Re: [C] Generazione sequenza di Armstrong

    No come ti ho detto prima ho provato anche a salvare in un altro array le potenze delle cifre e mi fa 5 al cubo 124????
  • Re: [C] Generazione sequenza di Armstrong

    Ti ripeto ... il codice che hai mostrato NEL PRIMO POST, con la modifica che ti ho detto, va bene.

    SE HAI UN ALTRO CODICE, diverso dal primo, probabilmente è sbagliato e non lo devi usare. Se vuoi farlo, almeno MOSTRALO.
  • Re: [C] Generazione sequenza di Armstrong

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int main()
    {
        int n;
        int k=0;
        int i;
        int vett[100];
        int sum=0;
        int numero;
        printf("inserisci numero");
        scanf("%d",&n);
        numero=n;
        for(i=0;n!=0;i++){
           vett[i] =n%10;
          n=n/10;
          k++;
        }
    
     for(i=0;i<k;i++){
       sum= sum +pow(vett[i],k);
     }
    
    if(numero==sum)
        printf("armstrong");
    
        return 0;
    }
  • Re: [C] Generazione sequenza di Armstrong

    Ho compilato questo codice e funziona con il 153

    Con cosa stai compilando?

    P.S. I tag CODE non li vuoi proprio usare eh?
  • Re: [C] Generazione sequenza di Armstrong

    Sto usando codeblocks e mi da molti problemi......
  • Re: [C] Generazione sequenza di Armstrong

    Probabilmente utilizzi il compilatore mingw che ha evidenti problemi con le funzioni matematiche. Con Visual C++ il codice ha risultati corretti. Puoi "rimediare" usando la funzione di approssimazione ceil, così

    sum= sum + ceil(pow(vett,k));
  • Re: [C] Generazione sequenza di Armstrong

    Risolto!!grazie!all'università di solito cosa si usa code blocks o visual c++?
  • Re: [C] Generazione sequenza di Armstrong

    Dipende ... a volte il devc++ con mingw ... una tristezza ...
Devi accedere o registrarti per scrivere nel forum
13 risposte