Calculadora Infinita,sofrimento e drama Pt II

0 respostas
Beatrizbarbosainfo

/t/calculadora-infinita/330513

Estava com esse problema,uso CODEBLOCKS por causa da facul,evolui um pouco e fiz isso:(foi mal,o site não formatou muito bem,eu acho…)
crie um txt com dois numeros enormes e guarde na mesma pasta do projeto e veja a minha nota baixa acontecer,rsrs,alguém poderia me explicar o que é que está de errado???

#include <stdio.h>

typedef struct {

double *digito;

}numero;
void soma(numero *bla,numero *ble,int i,int j){

numero blu;

int g=0,c=1,t,z;

t=i;z=j;

blu.digito=calloc(1,sizeof(double));

if(i<j){

while(i>0){

blu.digito = realloc(blu.digito,(++c)*sizeof(double));

<a href="//blu.digito">//blu.digito</a>[g]=NULL;

blu.digito[g]=bla.digito[i]+ble.digito[j];

if(blu.digito[g]>9){

blu.digito[g]=blu.digito[g]-10;

ble.digito[j–]=1+ble.digito[j–];

j++;

}

g++;

i;j;

}

while(j>0){

blu.digito = realloc(blu.digito,(++c)*sizeof(double));

<a href="//blu.digito">//blu.digito</a>[g]=NULL;

blu.digito[g]=0+ble.digito[j];

if(blu.digito[g]>9){

blu.digito[g]=blu.digito[g]-10;

ble.digito[j–]=1+ble.digito[j–];

j++;

}

g++;

j;

}

printf(RESULTADO: \n);

while(g>0){

printf("%dXXX",blu.digito[g]);

g;

}

}else{

while(j>0){

blu.digito = realloc(blu.digito,(++c)*sizeof(double));

<a href="//blu.digito">//blu.digito</a>[g]=NULL;

blu.digito[g]=bla.digito[i]+ble.digito[j];

if(blu.digito[g]>9){

blu.digito[g]=blu.digito[g]-10;

bla.digito[i–]=1+bla.digito[i–];

i++;

}

g++;

i;j;

}

while(i>0){

blu.digito = realloc(blu.digito,(++c)*sizeof(double));

<a href="//blu.digito">//blu.digito</a>[g]=NULL;

blu.digito[g]=0+bla.digito[i];

if(blu.digito[g]>9){

blu.digito[g]=blu.digito[g]-10;

bla.digito[i–]=1+bla.digito[i–];

i++;

}

g++;

i;

}

printf("\n%d numeros\n",g);

printf(RESULTADO: \n);

while(g>0){

printf("%dxxx",blu.digito[g]);

g;

}

}

}
int menu(numero *bla,numero *ble,int i,int j){

int opcao;

printf("\n\nCALCULADORA ‘INFINITA’\n");

printf(“OPCOES:(digite numero correspondente)\n);

printf(“1-SOMA\n”);

printf(“2-SUBTRAÇÃO\n”);

printf(“3-MULTIPLICAÇÃO\n”);

printf(“4-DIVISÃO\n”);

printf(“5-RESTO\n”);

printf(“6-SAIR\n”);

scanf("%d",&opcao);

if((opcao<0)||(opcao>6)){

printf(“Opção inválida”);

//menu();

}

switch(opcao){

case 1:

soma(bla,ble,i,j);

break;

case 2:

//subtracao();

break;

case 3:

//multiplicacao();

break;

case 4:

//divisao();

break;

case 5:

//resto();

break;

}

}
double conversor(char cho){

numero blas;int ii=0;

if(cho==0){

blas.digito[ii]=0;

}else if(cho==1){

blas.digito[ii]=1;

}else if(cho==2){

blas.digito[ii]=2;

}else if(cho==3){

blas.digito[ii]=3;

}else if(cho==4){

blas.digito[ii]=4;

}else if(cho==5){

blas.digito[ii]=5;

}else if(cho==6){

blas.digito[ii]=6;

}else if(cho==7){

blas.digito[ii]=7;

}else if(cho==8){

blas.digito[ii]=8;

}else if(cho==9){

blas.digito[ii]=9;

}else{

printf(deu merda);

}

return blas.digito[ii];

}
int main(void)

{

char url[]=teste.txt;

char ch;

FILE *arq;

numero bla,ble;

int i=0,j=0,cont=0,contt=0,aux=0,auxx=0;

bla.digito=calloc(1,sizeof(double));

ble.digito=calloc(1,sizeof(double));
arq = fopen(url, "r");
if(arq == NULL){
    printf("Erro, nao foi possivel abrir o arquivo\n");
}else{
    while( (ch=fgetc(arq))!= EOF ){
        if((ch=='\n')||(ch=='\r')){
            break;
        }
    putchar(ch);
    bla.digito = realloc(bla.digito,(++cont)*sizeof(double));
    bla.digito[i]=conversor(ch);
    aux++;
    }
    printf("\n%d numeros\n",aux);
printf("\n\n");
    while( (ch=fgetc(arq))!= EOF ){
        putchar(ch);
        ble.digito = realloc(ble.digito,(++contt)*sizeof(double));
        ble.digito[j]=conversor(ch);
        auxx++;
    }
    printf("\n%d numeros\n",auxx);
}
fclose(arq);
menu(bla,ble,aux,auxx);
return 0;

}

Criado 2 de julho de 2016
Respostas 0
Participantes 1