86 e' un errore di battitura. al posto di 86 ci voleva la parola un
(scrivo da cellulare e il t9 ha preso 86)
detto questo volevo chiedervi la "correzione" del programma che ho battuto insieme ad un amico per fare la sottrazione tra due numeri naturali di massimo 20 cifre cad.
grazie mille
ciao
codice:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define TERM 100
int main(int argc, char *argv[])
{
char num[21];
char num2[21];
printf("Inserisci il primo numero\n");
scanf("%s",&num);
printf("Inserisci il secondo numero\n");
scanf("%s",&num2);
//Inizio a copiare l'array char dentro un array int
unsigned int num_i[20];
unsigned int num_i2[20];
int pos;
char temp[2];
temp[1]='\0';
for (pos=0; pos<=20; pos++)
{
temp[0]=num[pos];
num_i[pos]=atoi(temp);
printf("%i\n",num_i[pos]);
}
temp[1]='\0';
for (pos=0; pos<=20; pos++)
{
temp[0]=num2[pos];
num_i2[pos]=atoi(temp);
printf("%i\n",num_i2[pos]);
}
int numero[20],numero2[20];
memset(numero,'0',sizeof(numero));
memcpy(numero+20-strlen(num),num_i,strlen(num));
memset(numero2,'0',sizeof(numero2));
memcpy(numero2+20-strlen(num2),num_i2,strlen(num2));
//Inizio la sottrazione
int cicle,int result[20];
for (cicle=20;cicle>=0;cicle--)
{
if( sizeof(numero2) > sizeof(numero) )
printf("Errore! Perfavore inserire prima il numero maggiore!\n");
exit 0;
if( numero[cicle] > numero2[cicle])
result[cicle] = numero[cicle] - numero2[cicle];
if( numero[cicle] < numero2[cicle])
{
numero[cicle-1]--;
numero[cicle] += 10;
result[cicle] = numero[cicle] - numero2[cicle];
}
if( numero[cicle] < 0)
printf("Errore!\n");
printf("Il risultato della sottrazione è: %i",reult);
return(0);
}