mister x (Normal User)
Newbie
Messaggi: 12
Iscritto: 22/10/2016
|
salve oggi ho iniziato a fare un programma in dev c , ma per qualche strano errore il programma non mi fa l'addizione giusta mi pottete aiutare
grazie in anticipo
ecco il codice
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
using namespace std;
int main(int argc, char *argv[])
{
char a[10];
char b[10];
char risultato[]="00000000";
int cifraA, cifraB, somma;
int riporto=0;
printf("inserisci cifraA :\t");
scanf("%d",&cifraA);
printf("inserisci cifraB :\t");
scanf("%d",&cifraB);
int i;
for (i=7; i >= 0; i--)
{
cifraA=a - 48;
cifraB=b - 48;
somma =cifraA + cifraB + riporto;
switch(somma)
{
case 0:
risultato = '0';
riporto = 0;
break;
case 1:
risultato = '1';
riporto = 0;
break;
case 2:
risultato = '0';
riporto = 1;
break;
case 3:
risultato = '1';
riporto = 1;
break;
}
}
printf("Risultato:\t%s",risultato); //errore nella stampa del risultato
printf("\n\n");
system("PAUSE");
return 0;
}
Ultima modifica effettuata da mister x il 22/10/2016 alle 19:22 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
|
Utilizza i tag CODE per il codice perché altrimenti non si capisce ...
E indica anche cosa non va un po' più in dettaglio.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
lumo (Member)
Expert
Messaggi: 449
Iscritto: 18/04/2010
|
Devi prendere l'errore che ti dà il compilatore e metterlo qui sul forum Non c'è chi si prende la briga di compilare il tuo codice per provarlo.
|
|
mister x (Normal User)
Newbie
Messaggi: 12
Iscritto: 22/10/2016
|
il programma dato in imput i 2 numeri binari non da il risultato sbagliato ex.
10000000+01111111=11111111
il programma mi dice che è ugualle a 00000000
Ultima modifica effettuata da mister x il 22/10/2016 alle 18:45 |
|
lumo (Member)
Expert
Messaggi: 449
Iscritto: 18/04/2010
|
Devi usare gli indici per selezionare la componente giusta da scrivere (risultato[ i ] = ...) .
Però è strano che il codice funzioni, sicuro di averlo compilato? Non dovrebbe essere possibile assegnare un carattere (tipo char) a 'risultato' (che è di tipo char[])
Ultima modifica effettuata da lumo il 22/10/2016 alle 19:01 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6403
Iscritto: 03/01/2010
|
Se non usi i tag CODE quando scrivi
[ i ]
(senza spazi) passi al corsivo e non si capisce nulla.
Comunque, ho visto che gli operandi su cui lavori dovrebbero essere
char a[10];
char b[10];
ma non esegui mai l'input dei singoli bit in questi vettori. Quindi è ovvio che non avrai mai un risultato corretto.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
lumo (Member)
Expert
Messaggi: 449
Iscritto: 18/04/2010
|
Postato originariamente da nessuno:
Se non usi i tag CODE quando scrivi
[ i ]
(senza spazi) passi al corsivo e non si capisce nulla.
|
Thanks, ci sono incappato pure io |
|
mister x (Normal User)
Newbie
Messaggi: 12
Iscritto: 22/10/2016
|
ecco l'esecuzione del programma
in realtà le variabili erano così ma visto che faceva solo ciò che c'era scritto all'interno gli altre combinazioni di numeri binari non li faceva stavo provando a risolvere questo piccolo problema senza riuscirci
char a[]="00001010";
char b[]="00001100";
char risultato[]="000000000";
Ultima modifica effettuata da mister x il 22/10/2016 alle 19:19 |
|
lumo (Member)
Expert
Messaggi: 449
Iscritto: 18/04/2010
|
Postato originariamente da mister x:
ecco l'esecuzione del programma
|
scanf interpreta i numeri in formato decimale, quindi ottieni 1000001 come somma, nessun case dentro lo switch viene eseguito. |
|