AYUDA PORFAVOR!!!!
Necesito un programa que haga lo mismo que este pero que no utilice punteros ni ordenes "<<". Es decir, que sea lo mas básico posible. Lo necesito urgente para este finde. Contestarme a [email protected]
GRACIAS
#include <stdio.h>
#include <stdlib.h>
#define TAM 32
int funcion1(long int tempo, long int *pbinario)
{
int c;
for(c=0; c <TAM; c++)
{
*(pbinario+c) = tempo & 0x01; /* salvamos el bit menos significativo
*/
tempo = tempo>>1; /*desplazamos un lugar para coger el bit
siguiente*/
}
/* Lo visualizamos en complemento a dos */
printf("En complemento a dos:n");
for(c=TAM-1; c >=0; c--)
{
printf("%ld ", *(pbinario+c));
}
return 0;
}
int main(void)
{
int c; /* contador para los bucles */
long int tempo_1,tempo_2, tempo_3=0, numero_1,numero_2, binario1[TAM],
binario2[TAM],resultado[TAM];
/* numero_1 y numero_2 son los numeroS introducidos por
teclado.
tempo_1,tempo_2 y tempo_3 sirven para almacenar y manipular
los
valores de numero_1, numero_2 y resultado (en decimal),
respectivamente.
binario1, binario2 y resultado alamacenan numero_1,
numero_2 y
la suma de ambos numeros, en formato bit. */
/* Introducimos el primer numero */
printf("Introduce un numero en decimal:n");
scanf("%ld",&numero_1);
funcion1(numero_1,binario1);
/* Introducimos el segundo numero */
printf("nnIntroduce un numero en decimal:n");
scanf("%ld",&numero_2);
funcion1(numero_2,binario2);
/* Sumamos los dos numeros bit a bit */
for(c=0;c<TAM;c++)
{
resultado[c]=binario1[c]+binario2[c];
if(resultado[c]>1)
{
resultado[c]= resultado[c]& 0x01;
binario1[c+1]++;
}
}
/* convertimos a decimal */
for(c=TAM-1; c >0; c--)
{
tempo_3 = resultado[c] | tempo_3;
tempo_3 = tempo_3<<1;
}
tempo_3 = resultado[c] | tempo_3;
printf("nnLa suma vale:nEn decimal:n%ldn",tempo_3);
/*Visualizamos el resultado de la suma en complemento a dos */
printf("En complemento a dos:n");
for(c=TAM-1; c >=0; c--)
{
printf("%ld ", resultado[c]);
}
printf("n");
system("PAUSE");
return 0;
}
GRACIAS
#include <stdio.h>
#include <stdlib.h>
#define TAM 32
int funcion1(long int tempo, long int *pbinario)
{
int c;
for(c=0; c <TAM; c++)
{
*(pbinario+c) = tempo & 0x01; /* salvamos el bit menos significativo
*/
tempo = tempo>>1; /*desplazamos un lugar para coger el bit
siguiente*/
}
/* Lo visualizamos en complemento a dos */
printf("En complemento a dos:n");
for(c=TAM-1; c >=0; c--)
{
printf("%ld ", *(pbinario+c));
}
return 0;
}
int main(void)
{
int c; /* contador para los bucles */
long int tempo_1,tempo_2, tempo_3=0, numero_1,numero_2, binario1[TAM],
binario2[TAM],resultado[TAM];
/* numero_1 y numero_2 son los numeroS introducidos por
teclado.
tempo_1,tempo_2 y tempo_3 sirven para almacenar y manipular
los
valores de numero_1, numero_2 y resultado (en decimal),
respectivamente.
binario1, binario2 y resultado alamacenan numero_1,
numero_2 y
la suma de ambos numeros, en formato bit. */
/* Introducimos el primer numero */
printf("Introduce un numero en decimal:n");
scanf("%ld",&numero_1);
funcion1(numero_1,binario1);
/* Introducimos el segundo numero */
printf("nnIntroduce un numero en decimal:n");
scanf("%ld",&numero_2);
funcion1(numero_2,binario2);
/* Sumamos los dos numeros bit a bit */
for(c=0;c<TAM;c++)
{
resultado[c]=binario1[c]+binario2[c];
if(resultado[c]>1)
{
resultado[c]= resultado[c]& 0x01;
binario1[c+1]++;
}
}
/* convertimos a decimal */
for(c=TAM-1; c >0; c--)
{
tempo_3 = resultado[c] | tempo_3;
tempo_3 = tempo_3<<1;
}
tempo_3 = resultado[c] | tempo_3;
printf("nnLa suma vale:nEn decimal:n%ldn",tempo_3);
/*Visualizamos el resultado de la suma en complemento a dos */
printf("En complemento a dos:n");
for(c=TAM-1; c >=0; c--)
{
printf("%ld ", resultado[c]);
}
printf("n");
system("PAUSE");
return 0;
}