Ir para conteúdo
Fórum Script Brasil

Pesquisar na Comunidade

Mostrando resultados para as tags ''#segmentationfault''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • Programação & Desenvolvimento
    • ASP
    • PHP
    • .NET
    • Java
    • C, C++
    • Delphi, Kylix
    • Lógica de Programação
    • Mobile
    • Visual Basic
    • Outras Linguagens de Programação
  • WEB
    • HTML, XHTML, CSS
    • Ajax, JavaScript, XML, DOM
    • Editores
  • Arte & Design
    • Corel Draw
    • Fireworks
    • Flash & ActionScript
    • Photoshop
    • Outros Programas de Arte e Design
  • Sistemas Operacionais
    • Microsoft Windows
    • GNU/Linux
    • Outros Sistemas Operacionais
  • Softwares, Hardwares e Redes
    • Microsoft Office
    • Softwares Livres
    • Outros Softwares
    • Hardware
    • Redes
  • Banco de Dados
    • Access
    • MySQL
    • PostgreSQL
    • SQL Server
    • Demais Bancos
  • Segurança e Malwares
    • Segurança
    • Remoção De Malwares
  • Empregos
    • Vagas Efetivas
    • Vagas para Estágios
    • Oportunidades para Freelances
  • Negócios & Oportunidades
    • Classificados & Serviços
    • Eventos
  • Geral
    • Avaliações de Trabalhos
    • Links
    • Outros Assuntos
    • Entretenimento
  • Script Brasil
    • Novidades e Anúncios Script Brasil
    • Mercado Livre / Mercado Sócios
    • Sugestões e Críticas
    • Apresentações

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Encontrado 1 registro

  1. Então galera, sou novato no fórum me avisem se fiz algo errado, já pesquisei sobre mas não achei exatamente minha dúvida. Então to fazendo programação na faculdade, e tenho um trabalho para fazer uma calculadora polonesa. Ainda não tenho conhecimentos sobre ponteiros e nem funções por isso não utilizei no meu programa. O mesmo compila (compilador = gcc), mas quando digito qualquer equação ele dá um Segmentation Fault, que sei que é um problema relacionado a alocação de memória mas não tenho ideia de como resolver-lo nem como achá-lo, só sei que o mesmo está dentro de um if que criei na função que está sinalizado abaixo. Gostaria da ajuda de vocês. Segue o código: #include <stdio.h> #include <string.h> #include <stdlib.h> void main (){ int vas, num_e=1; // vassoura, número de equações char equacao[160],ch1,ch2; //2n-1 + /0. int cont1,cont3, cont2, lim, i=0, num1, num2,final=0,num3, numr; char res[3]; char eq2[80],eq3[80],ch3[2]; printf("Calculadora Polonesa:\nEste programa só aceita números de 0 à 9 e os operadores \"+,-,*,%%,/\". \n\n"); printf("Para inserir uma equação, digite números de 0 à 9 e\ndepois os operadores todos separados por espaços. \n\n"); printf("Digite \"exit\" para terminar o programa.\n\n"); for (vas=1;;vas++){ printf("Insira a %dº equação: \n",num_e); gets(equacao); lim = strlen(equacao); for(cont3=1;cont3<lim;cont3+=2){ //TESTE DE ESPAÇOS NA EQUAÇÃO if (equacao[cont3]!=' '){ printf("Erro. Partes da equação não estão separadas por um espaço.\n"); strcpy(equacao,""); printf("Insira a %dº equação novamente: \n",num_e); gets (equacao); cont3=1; } lim = strlen(equacao); } if((equacao[0]=='e') && (vas==1)){ printf("Encerrando o programa...\n"); break; } if((equacao[0]=='e') && (vas>1)) break; for(cont3=0;cont3<lim;cont3++){ //For para imprimir a equação de entrada printf("%c",equacao[cont3]); } for (cont1=0; cont1<lim; cont1++){ //RESULOÇÃO DA EQUAÇÃO NESTE FOR lim = strlen(equacao); ch3[0] = equacao[cont1]; num3 = atoi(ch3); if (((num3>57) || (num3<48)) && equacao[cont1]!=' ') { //O PROBLEMA ESTÁ NESSE IF...LEU UM SINAL, E PEGA OS 2 NÚMEROS ANTERIORES. ch1 = equacao[cont1-2]; //Convertendo caracteres para inteiro ch2 = equacao[cont1-4]; num1 = ch1-48; num2 = ch2-48; switch (equacao[cont1]){ case '+': numr=num1+num2; break; case '-': numr=num2-num1; break; case '*': numr=num1*num2; break; case '/': numr=num2/num1; break; case '%': numr=num2%num1; break; } cont2=0; while(cont2<(cont1-4)){ //Copiando a parte inicial da equação para eq2(antes do sinal) eq2[cont2]=equacao[cont2]; cont2++; } cont2=(cont1+1); //Copiando a parte final da equação(após o sinal) while(cont2<lim){ eq3[i]=equacao[cont2]; i++; } res[0]=numr+48; strcat(eq2,res); //Concatenando a parte inicial da equação mais o resultado da operação realizada strcat(eq2,eq3); //Concatenando parte inicial + resultado + parte final strcpy(equacao,""); strcpy(equacao,eq2); //Copiando nova equação concatenada para a principal strcpy(eq2,""); // Zerando strings strcpy(eq3,""); cont1=0; i=0; //zerando tudo para para repetir o for } } printf(" = %c\n",equacao[0]); final += atoi(equacao); //SOMANDO AO RESULTADO FINAL num_e++; } if ((vas>1) && (equacao[0]=='e')) printf("O resultado final é: %d\n",final); }========================================================= AVISO: Favor postar as suas duvidas no Forum Principal ( C, C++ )
×
×
  • Criar Novo...