Ir ao conteúdo
  • Cadastre-se

C Erro de execução!!!O que fazer


Kevin Mikio

Posts recomendados

Prezados, estou tendo problemas com a execução de um programa que tem como intuito simular o uso de um dicionario...

Estou iniciando o estudo na linguagem C, então caso encontre um erro besta por favor me notifique...

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
char dic [][11]={"cat","gato",
                "dog","cachorro",
                "is", "é",
                "bad","ruim",
                 "","",};
char frase [50];
char palavra [11];
char *p;

void pega_palavra()
 {
  char *q;
  q=palavra;
  while (*p && *p!=' ')
  {
      *q=*p;
      p++;
      q++;
  }
  if (*p==' ')p++;
  *q='\0';
 }


 int traducao ()
 {
     int i;
     for(i=0;*dic;i=i+2)
     {
        if(strcmp(dic,palavra)==0) break;
     }
    if(*dic) return (i+1);
    else return (-1);
 }

int main()
{
    char opcao;
    int linha;
    do
    {
        printf("Insira a frase que queira traduzir: \n");
        getc(frase);
        fflush(stdin);
        p=frase;
        pega_palavra();
        printf("\n====Menu====\n");
        printf("A-Portugues\nB\nC\nS-Sair\n");
        printf("\nEscolha uma opcao: ");
        opcao=getchar();
        opcao=toupper(opcao);
        switch(opcao)
        {
        case 'A':
            linha=traducao();
                if(linha!=-1)
                    printf("%s ",dic[linha]);
                else
                    printf("%s ",palavra);
                pega_palavra();
                break;
        }
        while(*palavra);
        /*printf("\nQuer traduzir outra frase?s/n\n");
     opcao=getche();*/

    }while(opcao!='S');

    return 0;
}
 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Kevin Mikio

 int traducao ()
 {
     int i;
     for(i=0;*dic;i=i+2)
     {
        if(strcmp(dic,palavra)==0) break;
     }
    if(*dic) return (i+1);
    else return (-1);
 }

 O que você queria fazer nessa parte? ↑ 
 Primeiro você faz um for que fala que i é = 0, ai informa um ponteiro, depois fala que i é igual a i + 2 '-'
Em baixo você compara 2 chars e se forem iguais você para

 

getc(frase);

↑ Nessa linha você ta tentando converter um char em FILE
 

opcao=toupper(opcao);

↑ E nessa linha não foi declarado esse toupper

Segue o link com esses erros arrumados, tá compilando normal é só você consertar o código pra fazer o que você deseja (só consertei os erros pra compilar normal, conserta ai e posta se tiver dúvidas)

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
char dic [][11]={"cat","gato",
                "dog","cachorro",
                "is", "é",
                "bad","ruim",
                 "","",};
	char frase[50];
	char palavra[11];
	char *p;
void pega_palavra()
 {
  char *q;
  q=palavra;
  while (*p && *p!=' ')
  {
      *q=*p;
      p++;
      q++;
  }
  if (*p==' ')p++;
  *q='\0';
 }

 int traducao ()
 {
     int i,x;
     //for(i=0;*dic;i=i+2)
     for(i=0;x<=i;x++)
     {
        if(strcmp(palavra,*dic)!=0)
		{ 
		printf("Nao temos essa traducao");
		break;
     }
     else
     {
	return (i+1);
    }
}
}
int main()
{
	char opcao;
    int linha;
    int toupper(opcao);
    do
    {
        printf("Insira a frase que queira traduzir: \n");
        *palavra = getc(stdin);
		*palavra = fflush(stdin);
		p=palavra;
        pega_palavra();
        printf("\n====Menu====\n");
        printf("A-Portugues\nB\nC\nS-Sair\n");
        printf("\nEscolha uma opcao: ");
        opcao=getchar();
        toupper;
        switch(opcao)
        {
        case 'a':
            linha=traducao();
                if(linha!=-1)
                    printf("%s\n ",dic[linha]);
                else
                    printf("%s\n ",palavra);
                pega_palavra();
                break;
        }
        while(*palavra);
        //printf("\nQuer traduzir outra frase?s/n\n");
     //opcao=getche();
    }while(opcao!='s');
   exit(0);
}


 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...