Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    43

    C:conversione decimale-binario

    salve raga..ho un piccolo problema.
    vorrei stampare, dato un numero da tastiera, i numeri decimali che vanno da 0 a quel numero, in binario. ad esempio digito 4 e vorrei che mi stampasse a video:
    0
    1
    10
    11
    100
    ecco come ho pensato:
    codice:
    #include<stdio.h>
    void binario(int);
    void main()
    { int n;
    printf("inserire numero da convertire:");
    scanf("%d",&n);
    binario(n);
    }
    void binario(int a)
    {
    	int i;
    	for(i=0;i<a;i++)
    	{
    		if(a!=0)
    	{
    		binario(a/2);
    		printf("%d\n",a%2);
    	}
    }
    }
    solo che mi stampa in questo modo...sempre ritornando all esempio di prima:
    0
    1
    1
    0
    1
    1
    1
    0
    0..insomma si è capito...dove può essere l errore?
    :berto:

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    43
    sono sempre io...mi é venuto in mente quest altro modo di risolvere il mio problema..anch esso con scarsi risultati...ecco un pò:
    codice:
    #include<stdio.h>
    void binario(int);
    void main()
    { int n;
    printf("inserire numero da convertire:");
    scanf("%d",&n);
    binario(n);
    }
    void binario(int a)
    {
    	int i;
    	int V[10];
    	for(i=0;i<a;i++)
    	{
    		if(a!=0)
    	{
    		binario(a/2);
    		scanf("%d",&V[i]);
    	}
    }
    	for(i=0;i<a;i++)	
    	printf("%d\n",V[i]);
    }
    ma niente...mi da problemi di scrittura...anche se presenta 0 errori e warnings

  3. #3
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao ... Non funziona perchè inserisci il ciclo dentro la funzione (quindi si ripete anche nella ricorsione) . . . Potresti creare una funzione che stampa un intero nella sua rappresentazione binaria (attenendosi alle tue richieste) tipo:
    codice:
    void  binario(int a)
    {
        static bool print0 = true;
        if (a != 0)
        {
            print0 = false;
            binario(a/2);
            printf("%d", a%2);
        }
        else if (print0)
            printf("0");
    print0 = true;
    }
    e poi stampare tutto con un ciclo for
    codice:
    for(int i=0; i<10; i++)
    {
       binario(i);
       printf("\n");
    }
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.