Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [C] Complemento a 2

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    33

    [C] Complemento a 2

    Sono tre giorni che sto su questo algoritmo e non riesco a capire cosa non vada...

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main ()
    {
             printf("Inserisci il numero intero\n");
             int n,s,conta,resto,cambia;
             conta=0;resto=0;s=0;cambia=0;
             scanf("%d",&n);
             do {
                           resto = n%2;
                           n=floor(n/2);
                           if (cambia = 0)
                           {
                                      if (resto=0)
                                      {
                                      }
                                      else
                                      {
                                          cambia=1;
                                      }
                           }
                           else
                           {
                               if (resto=0)
                               {
                                   resto=1;
                               }
                               else
                               {
                                   resto=0;
                               }
                           }
                           s=s+resto*pow(10,conta);
                           conta++;
             } while (n!=0);
             printf("%d \n",s);
             system("PAUSE");
             return 0;
             
    }
    Il risultato è che inserendo qualsiasi numero che sia paro o dispari, il programma stampa "0"

    Chiedo il vostro aiuto per la soluzione

    Grazie

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Spiega qual'è lo scopo dell' algoritmo: che problema deve risolvere?
    Altrimenti se il problema è un errore semantico uno come fa a capire cosa c'è che non va?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    33
    Pensavo di essermi espresso bene...

    Comunque... ho deciso di creare un algoritmo che esegua il complemento a 2 di un numero intero. Il mio problema è che qualsiasi numero io inserisca, il programma stampa "0"

  4. #4
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Il problema è che non so per cosa usi queste variabili:
    codice:
    int n,s,conta,resto,cambia;
             conta=0;resto=0;s=0;cambia=0;
    Puoi spiegare come le usi nel programma, cioè a cosa servono?

  5. #5
    Non ho guardato l'algoritmo e non l'ho nemmeno analizzato.

    Una cosa: in ogni if, ci deve essere una espressione che può essere vera o falsa.


    Nel tuo caso:

    if (cambia = 0)

    questa espressione il compilatore la vede intanto come un'assegnazione, e poi una espressione falsa perché è uguale a zero. E sarà sempre falsa, il blocco di codice interno non verrà mai eseguito
    Quello che vorresti fare tu è:

    if (cambia == 0)

    Capita la differenza? "=" è assegnazione, "==" è confronto.

    Stessa cosa per tutti gli altri if

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    33
    Grazie... ora stampa sequenze di 1 e di 0 ma purtroppo non sono vere

    come posso risolvere? secondo voi c'è qualche altro errore?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    33
    Grazie... ora stampa sequenze di 1 e di 0 ma purtroppo non sono vere

    come posso risolvere? secondo voi c'è qualche altro errore?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    L'errore del confronto è di tipo sintattico.

    Adesso devi spiegare l'algoritmo che intendevi usare per capire gli errori logici ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    33
    ho notato che facendo il complemento a 2 di un numero binario, il risultato era l'opposto dopo aver incontrato 1

    Es.

    01010 //Numero binario
    10101 //Complemento a 1 (cambio di numeri)
    10110 //Complemento a 2

    Se notate il risultato è l'opposto dei numeri dopo aver incontrato 1

    Era questo il mio intento

    Quando cambia=1 vuol dire che ha già incontrato 1 se 0 ancora no.

    Spero abbiate capito

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma non devi inventarti tu un metodo o una "legge" ... devi seguire la regola.

    Per il C2 devi ottenere

    il C1
    sommare 1 al risultato
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.