• In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Pag 1 di 2 12 UltimoUltimo
Visualizzazione risultati da 1 a 15 di 24

Discussione: Aiuto programmino C

Cambio titolo
  1. #1
    Thrash 'til deth L'avatar di Drizzt
    Registrato il
    05-03
    Località
    Lissone (MB)
    Messaggi
    8.057

    Aiuto programmino C

    #include <stdio.h>

    int sexag (int n){
    int m=n, r, i=0, k;

    do{
    r=n%60;
    n=n/60;
    i++;
    }while(n>0);

    int vect[i];

    for(k=0; k<i; k++){
    r=m%60;
    m=m/60;
    vect[k]=r;
    }

    for(i; i>0; i--)
    printf("%c",vect[i]);

    return 0;
    }

    int main(){
    int num;

    printf("Inserisci il numero da convertire in base 60: ");
    scanf("%d",&num);

    printf("La sua rappresentazione in base 60 e': ");

    sexag(num);

    return 0;
    }

    Come mai per ogni numero che inserisco mi ritorna L (in verità non capisco se 1 o l )?

    Un'altra cosa, già che ci sono: che vuol dire void main? Io ho sempre usato int main, e i prof non mi hanno ancora spiegato che è il void (e penso non lo faranno)!
    Citazione Kelvan Visualizza Messaggio
    Io sono contro i biclasse perché non servono a niente.

  2. #2
    Thrash 'til deth L'avatar di Drizzt
    Registrato il
    05-03
    Località
    Lissone (MB)
    Messaggi
    8.057
    No lasciate perdere forse ci sono.
    Citazione Kelvan Visualizza Messaggio
    Io sono contro i biclasse perché non servono a niente.

  3. #3
    Thrash 'til deth L'avatar di Drizzt
    Registrato il
    05-03
    Località
    Lissone (MB)
    Messaggi
    8.057
    No non ci sono, help ^^
    Citazione Kelvan Visualizza Messaggio
    Io sono contro i biclasse perché non servono a niente.

  4. #4
    Utente L'avatar di MarcoM82
    Registrato il
    10-04
    Località
    (BA)
    Messaggi
    2.107
    Perchè la funzione è int??? prova a mettere void visto che non restituisce nessun valore intero.

  5. #5
    Utente Tostapane L'avatar di WarriorXP
    Registrato il
    10-02
    Località
    MI C.le - LE
    Messaggi
    23.429
    Citazione MarcoM82
    Perchè la funzione è int??? prova a mettere void visto che non restituisce nessun valore intero.
    Bhe, ritorna 0...

  6. #6
    Utente L'avatar di MarcoM82
    Registrato il
    10-04
    Località
    (BA)
    Messaggi
    2.107
    Citazione WarriorXP
    Bhe, ritorna 0...
    Allora essendo int nel main ci sarebbe bisogno di un'assegnazione a un intero...

  7. #7
    Thrash 'til deth L'avatar di Drizzt
    Registrato il
    05-03
    Località
    Lissone (MB)
    Messaggi
    8.057
    Citazione MarcoM82
    Allora essendo int nel main ci sarebbe bisogno di un'assegnazione a un intero...
    Cioè? Devo scrivere void main? Spiegatemi che è void pls 8(

    Cmq mi sono corretto:il ciclo for di stampa dei numeri dev'essere

    for(i-1; i>=0; i--)

    visto che (ad esempio) l'elemento 10 in un vettore di 10 elementi non c'è, giusto?
    Citazione Kelvan Visualizza Messaggio
    Io sono contro i biclasse perché non servono a niente.

  8. #8
    Utente L'avatar di MarcoM82
    Registrato il
    10-04
    Località
    (BA)
    Messaggi
    2.107
    Citazione Drizzt
    Cioè? Devo scrivere void main? Spiegatemi che è void pls 8(

    Cmq mi sono corretto:il ciclo for di stampa dei numeri dev'essere

    for(i-1; i>=0; i--)

    visto che (ad esempio) l'elemento 10 in un vettore di 10 elementi non c'è, giusto?
    Si in C i vettori vanno da 0 a N-1 dove N è la dimensione del vettore.

    Puoi provare o a scrivere void al posto di int prima della funzione, oppure a inserire un intero a cui assegnare la funzione int.
    Ed esempio

    int valore
    valore = funzione(m)

    (non mi ricordo il nome della funzione che hai creato...)

  9. #9
    Utente L'avatar di Phoenix
    Registrato il
    10-02
    Località
    Midwich Street
    Messaggi
    6.699
    void non ritorna valori.
    int ritorna un intero.
    se usi "int main" alla fine del main (o della funzione dichiarata come int insomma) ci devi mettere "return #" dove generalmente #=0, perlomeno nel main.
    Quindi quello l'hai fatto giusto, anche se ti conviene mettere entrambe le funzioni come void.
    Ah, usa i tag CODE per indentare il codice


    He who is not bold enough to be stared at from across the abyss
    is not bold enough to stare into it himself.

  10. #10
    Thrash 'til deth L'avatar di Drizzt
    Registrato il
    05-03
    Località
    Lissone (MB)
    Messaggi
    8.057
    Fattostà che sta funzione dovrebbe convertire un numero in base qualsiasi a base 60 e stamparlo, ma non funziona.
    L'algoritmo è: faccio il modulo del numero (n%60) e divido il numero per 60 (n/60) finchè n>0. Il numero nella nuova base è la successione dei moduli così ottenuti, ma al contrario. In classe l'abbiamo visto così e veniva stampato al contrario, ma in questa funzione dovrebbe venir stampato nel modo giusto. Solo che la funzione non funziona
    Citazione Kelvan Visualizza Messaggio
    Io sono contro i biclasse perché non servono a niente.

  11. #11
    Utente L'avatar di MarcoM82
    Registrato il
    10-04
    Località
    (BA)
    Messaggi
    2.107
    Ho trovato l'inghippo (forse).

    Hai dichiarato "n" come int ma per fare le divisioni lo devi mettere float se no da errore (anche se non ricordo se "/" è la divisione tra interi o tra reali).

  12. #12
    Thrash 'til deth L'avatar di Drizzt
    Registrato il
    05-03
    Località
    Lissone (MB)
    Messaggi
    8.057
    No nell'algoritmo dev'essere int. Ti faccio un esempio:

    123 b10 -> x b7

    123%7 = 4, 123/7 = 17
    17%7 = 3, 17/7 = 2
    2%7 = 2, 2/7 = 0

    x = 234 b7 (2*49+3*7+4)

    Azzo perchè non va? 8( ABC se ci sei batti un colpo
    Citazione Kelvan Visualizza Messaggio
    Io sono contro i biclasse perché non servono a niente.

  13. #13
    Utente GNU/Linux
    Registrato il
    10-02
    Località
    Roma
    Messaggi
    3.246
    Citazione Drizzt
    [...]
    Cmq mi sono corretto:il ciclo for di stampa dei numeri dev'essere

    for(i-1; i>=0; i--)

    visto che (ad esempio) l'elemento 10 in un vettore di 10 elementi non c'è, giusto?
    Non ti sei corretto abbastanza
    i-1 fa solo il conto, non hai assegnato il risultato, quindi i non viene modificata, se vuoi usa i-- oppure --i oppure i=i-1 ; inoltre nel printf del risultato (all'interno dello stesso ciclo) hai sbagliato descrittore, è un vettore di int "%d", non di char "%c".

    Io sostituirei tutto quel for(i-1; i>=0; i--) con un semplice while(i-->0)

  14. #14
    Utente L'avatar di MarcoM82
    Registrato il
    10-04
    Località
    (BA)
    Messaggi
    2.107
    Citazione Nonno Cicala
    Non ti sei corretto abbastanza
    i-1 fa solo il conto, non hai assegnato il risultato, quindi i non viene modificata, se vuoi usa i-- oppure --i oppure i=i-1 ; inoltre nel printf del risultato (all'interno dello stesso ciclo) hai sbagliato descrittore, è un vettore di int "%d", non di char "%c".

    Io sostituirei tutto quel for(i-1; i>=0; i--) con un semplice while(i-->0)
    Usa un'altra variabile nel for.
    "
    int cont
    for(cont = i-1; cont>=0; cont--)
    "

    Prova.

  15. #15
    Utente
    Registrato il
    07-04
    Messaggi
    38
    #include <stdio.h>


    int dimensione_array(int numero,int newbase){

    int cifre=0;
    while(numero>0){
    cifre++;
    numero/=newbase;
    }

    return cifre;
    }


    void sexag (int n, int newbase) {

    int k=0,i,vect[dimensione_array(n,newbase)];
    while(n>0) {
    vect[k++]=n%newbase;
    n/=newbase;
    }

    for(i=k-1;i>=0;i--)
    printf("%d",vect[i]);

    return;
    }


    int main(void){

    int num,base;

    printf("Inserisci il numero da convertire:\n");
    scanf("%d",&num);
    printf("Inserisci la base in cui vuoi convertire il numero:\n");
    scanf("%d",&base);
    printf("La sua rappresentazione in base %d e': ", base);
    sexag(num,base);
    printf("\n");
    system("PAUSE");
    return 0;
    }


    Questo dovrebbe funzionare... newbase è la base in cui si vuole convertire il
    numero; nel tuo caso sarà 60.

Pag 1 di 2 12 UltimoUltimo

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •