Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C]Algoritmo per eseguire addizione aritmetica in base due

    Ecco il testo dell'esercizio:
    codice:
    Scrivere una function C per eseguire l'addizione aritmetica in base 2 mediate gli operatori bitwise
    Ed ecco il codice del programma, mi dà errori nelle void...consigli??
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX_BIT 7
    void somma_binaria (int[], int[], int[]);
    void bitXOR (int[], int[], int[]);
    void bitAND (int[], int[], int[]);
    void leftSHIFT(int[], int);
    void main ()
    {
    	int i,j,z, op1[MAX_BIT] , op2[MAX_BIT], risultato[MAX_BIT];
    	printf("Inserire i codici binari da addizionare (MAX 7 BIT):\n");
    	puts("Primo operatore=");
    	for (i=0;i<MAX_BIT;i++){
    		printf("\n Inserire bit numero %d: ",i+1);
    		scanf("%d",&op1[i]);}
    	puts("Secondo operatore=");
    	for (j=0;j<MAX_BIT;j++){
    		printf("\n Inserire bit numero %d: ",j+1);
    		scanf("%d",&op2[j]);}
    	puts("Somma dei seguenti bit: ");
        for (i=0;i<MAX_BIT;i++){
    		printf("%d",op1[i]);}
    	puts("   +\n");
    	for (j=0;j<MAX_BIT;j++){
    		printf("%d",op2[j]);}
        somma_binaria(op1[MAX_BIT],op2[MAX_BIT], risultato[MAX_BIT]);
    	puts("Ecco il risultato: \n");
    	for (z=0;z<MAX_BIT;z++){
    		printf("%d",risultato[z]);}
    	fflush(stdin);
    	getchar();
    }
    void bitXOR(int x[], int y[],int xor[MAX_BIT])
    {
    	int i;
    	for(i=0; i<MAX_BIT; i++)
    	{if (x[i]==y[i])
    		xor[i]=0;
    	else
    		xor[i]=1;}
    }
    void bitAND(int x[], int y[],int and[MAX_BIT])
    {
    	int i;
    	for(i=0; i<MAX_BIT; i++)
    	{
    	if (x[i]==1 && y[i]==1)
    		and[i]=1;
    	else
    		and[i]=0;}
    }
    void leftSHIFT(int x[], int n)
    {
    	int i;
    	for (i=0;i<MAX_BIT;i++)
    		x[i]=x[i-n]; x[i-n]=0;
    }
    void somma_binaria(int x[], int y[], int sum[MAX_BIT])
    {
    	int i,j,z,rip[MAX_BIT];
    	for (z=0;z<MAX_BIT;z++){
    		rip[z]=1;}
    	for(i=0;i<MAX_BIT;i++)
    	{
    	while (rip[i]>0) {
    		sum[i] = bitXOR(x[i],y[i],sum[i]); 
    		rip[i] = bitAND(x[i],y[i],rip[i]);
    		rip[i] = leftSHIFT(rip[i],1);
    		x[i] = sum[i]; y[i] = rip[i]; }
    	}
    }

  2. #2
    ho modificato il codice ma ho ancora problemi
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX_BIT 7
    int somma_binaria (int[], int[]);
    int bitXOR (int, int);
    int bitAND (int, int);
    int leftSHIFT(int[], int);
    void main ()
    {
    	int i,j,z, op1[MAX_BIT] , op2[MAX_BIT];
    	int risultato[MAX_BIT];
    	printf("Inserire i codici binari da addizionare (MAX 7 BIT):\n");
    	puts("Primo operatore=");
    	for (i=0;i<MAX_BIT;i++){
    		printf("\n Inserire bit numero %d: ",i+1);
    		scanf("%d",&op1[i]);}
    	puts("Secondo operatore=");
    	for (j=0;j<MAX_BIT;j++){
    		printf("\n Inserire bit numero %d: ",j+1);
    		scanf("%d",&op2[j]);}
    	puts("Somma dei seguenti bit: ");
        for (i=0;i<MAX_BIT;i++){
    		printf("%d",op1[i]);}
    	puts("   +\n");
    	for (j=0;j<MAX_BIT;j++){
    		printf("%d",op2[j]);}
        risultato[MAX_BIT] = somma_binaria(op1[MAX_BIT],op2[MAX_BIT]);
    	puts("Ecco il risultato: \n");
    	for (z=0;z<MAX_BIT;z++){
    		printf("%d",risultato[z]);}
    	fflush(stdin);
    	getchar();
    }
    int bitXOR(int x, int y)
    {
    	int xor;
    	if (x==y)
    		xor==0;
    	else
    		xor==1;
    	return xor;
    }
    int bitAND(int x, int y)
    {
    	int and;
    	if (x==1 && y==1)
    		and==1;
    	else
    		and==0;
    	return and;
    }
    int leftSHIFT(int x[], int n)
    {
    	int i;
    	for (i=0;i<MAX_BIT;i++){
    		x[i]=x[i-n]; x[i-n]=0;}
    	return x[MAX_BIT];
    }
    int somma_binaria(int x[], int y[])
    {
    	int i,z,rip[MAX_BIT],sum[MAX_BIT];
    	for (z=0;z<MAX_BIT;z++){
    		rip[z]=1;}
    	for(i=0;i<MAX_BIT;i++)
    	{
    	while (rip[i]>0) {
    		sum[i] = bitXOR(x[i],y[i]); 
    		rip[i] = bitAND(x[i],y[i]);
    		rip[i] = leftSHIFT(rip[i],1);
    		x[i] = sum[i]; y[i] = rip[i]; }
    	}
    	return sum[MAX_BIT];
    }

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.