Olá pessoal, estou fazendo um trabalho na faculdade, que precisa converter um programa em pascal para c.
Meu programa tem dois arquivos em c... o Programa propriamente dito... e um arquivo .h com as funções que serã usadas...
Estou tendo problemas na hora de passar os 3 arquivos (programa em pascal, dicionario de conversao, e programa convertido) como referencia, para as funções do segundo arquivo...
Se alguém puder me dar uma mão, eu agradeço.
Estou usando o W7 Ultimate, compilador de c DEV C++ 4.9.9.2
Segue abaixo os dois codigos.
conversorPascalC.c
/*
ESSE PROGRAMA CONVERTE UM ARQUIVO EM PASCAL COM UM SWITCH E UMA ESTRUTURA DO TIPO WHILE PARA
UM ARQUIVO EM C
NÃO APAGAR O ARQUIVO GCC.EXE DA PASTA DO PROJETO. COMO NO FINAL ELE COMPILA E EXECUTA O
O PROGRAMA CONVERTIDO ELE PRECISA DE COMPILADOR DE C. ESSE COMPILADOR FOI COPIADO DA PASTA
C:\Dev-Cpp\bin DO COMPILADOR DEV-C++ VERSÃO 4.9.9.2. FIZ DIVERSOS TESTES PARA VER SE ELE
DARIA CONTA DE COMPILAR VARIOS ARQUIVOS DIFERENTES NA LIGUAGEM C, RODANDO ELE POR LINHA DE
COMANDO, NÃO TIVE NENHUM ERRO OU PROBLEMA EM RELACAO A ISSO, VARIOS CODIGOS EM C FORAM
COMPILADOS E EXECUTADOS EXATAMENTE COMO SE TIVESSEM SIDO COMPILADOS POR DENTRO DO DEV
*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include "./conversor.h"
//MAIN
void main()
{
FILE *base,
*convertido,
*dicionarioConversao;
//APAGA POSSIVEIS ARQUIVOS CONVERTIDOS ANTIGOS
apagaArquivosAntigos();
//ABERTURA DE ARQUIVOS
abreArquivos(&base, &convertido, &dicionarioConversao);
//POSICIONA TODOS OS ARQUIVOS NO COMEÇO
posicionaComeco(&base, &convertido, &dicionarioConversao);
//CONVERTE PROGRAMA PASCAL PARA C
converte(&base, &convertido, &dicionarioConversao);
//FECHA OS ARQUIVOS
fechaArquivos(&base, &convertido, &dicionarioConversao);
//COMPILA E EXECUTA O ARQUIVO CONVERTIDO EM C
compilaExecuta();
}
conversor.h
/*==============================================================================================
APAGA ARQUIVOS CONVERTIDOS ANTIGOS
==============================================================================================*/
void apagaArquivosAntigos()
{
system("cls");
printf("Apagando arquivos convertidos antigos!");
/*NÃO FOI USADO O remove() PARA REMOVER ARQUIVOS, PORQUE VAI SER MAIS DE UM ARQUIVO COM O
COM O NOME DE CONVERTIDO, MAS ELE VAI TER NO MINIMO DOIS ARQUIVOS DIFERENTES:
CONVERTIDO.C E CONVERTIDO.EXE. POR ISSO EU RESOLVI APAGAR OS ARQUIVOS COM A LINHA DE
COMANDO DO DOS, COM OS PARAMETROS DEL CONVERTIDO.*, QUE IRA APAGAR TODOS OS ARQUIVOS
CHAMADOS DE CONVERTIDO, MAS DE QUALQUER EXTENSÃO*/
system("del convertido.*");
printf("\nArquivos convertidos antigos foram apagados!"
"\n\nPressione qualquer tecla para iniciar o programa...");
system("pause>>NULL");
}
/*==============================================================================================
ABRE ARQUIVOS
==============================================================================================*/
void abreArquivos(FILE *base, FILE *convertido, FILE *dicionarioConversao)
{
system("cls");
//ARQUIVO BASE
if ((base = fopen("./base.pas", "rt")==NULL))
{
printf("não foi possivel abrir o programa base\n");
system("pause>>NULL");
exit(1);
}
else
printf("Arquivo base aberto com sucesso!\n");
//DICIONARIO DE CONVERSAO
if ((dicionarioConversao = fopen("./dicionarioConversao.txt", "rt")==NULL))
{
printf("não foi possivel abrir o dicionarioConversao\n");
system("pause>>NULL");
exit(1);
}
else
printf("Arquivo dicionarioConversao aberto com sucesso!\n");
//ARQUIVO CONVERTIDO
if ((convertido = fopen("./convertido.c","wt")==NULL))
{
printf("Não foi possivel criar o programa convertido\n");
system("pause>>NULL");
exit(1);
}
else
printf("Arquivo convertido criado com sucesso!\n");
printf("\nPressione qualquer tecla para iniciar a conversao...");
system("pause>>NULL");
}
/*==============================================================================================
//POSICIONA TODOS OS ARQUIVOS NO COMEÇO
==============================================================================================*/
void posicionaComeco(FILE *base, FILE *convertido, FILE *dicionarioConversao)
{
system("cls");
rewind(base);
rewind(convertido);
rewind(dicionarioConversao);
printf("\n\nTodos os arquivos foram voltados ao inicio!"
"\nPressione qualquer tecla para iniciar conversão!");
system("pause>>NULL");
}
/*==============================================================================================
//FECHA ARQUIVOS
==============================================================================================*/
void fechaArquivos(FILE *base, FILE *convertido, FILE *dicionarioConversao)
{
system("cls");
Sleep(1000);
//ARQUIVO BASE
fclose(base);
printf("Arquivo Base fechado com sucesso!\n");
//DICIONARIO DE CONVERSAO
fclose(dicionarioConversao);
printf("Arquivo dicionarioConversao fechado com sucesso!\n");
//ARQUIVO CONVERTIDO
fclose(convertido);
printf("Arquivo convertido fechado com sucesso!\n");
printf("\n\nPressione qualquer tecla para iniciar compilação do programa convertido!");
system("pause>>NULL");
}
/*==============================================================================================
//CONVERTE
==============================================================================================*/
void converte(FILE *base, FILE *convertido, FILE *dicionarioConversao)
{
//CONVERTE
printf("\nO programa foi convertido com sucesso!");
printf("\n\nPressione qualquer tecla para iniciar a compilacao do programa em C...");
system("Pause>>NULL");
}
/*==============================================================================================
//COMPILA E EXECUTA O PROGRAMA CONVERTIDO EM C
==============================================================================================*/
void compilaExecuta()
{
FILE *teste;
system("cls");
system("pause>>NULL");
printf("Compilando o arquivo convertido!");
system("start ./gcc.exe ./convertido -o ./convertido");
if ((teste = fopen("./convertido.exe" , "rb")) != NULL) //EXISTE O ARQUIVO CONVERTIDO.EXE
{
printf("\n\nPressione qualquer tecla para rodar o arquivo convertido");
system("pause>>NULL");
system("start ./convertido.exe");
}
else //NÃO EXISTE O ARQUIVO CONVERTIDO.EXE
printf("A Compilação deu erro verifique o arquivo convertido!");
printf("\n\nPressione qualquer tecla para finalizar o programa...");
system("pause>>NULL");
}
Pergunta
Farofa Pereira
Olá pessoal, estou fazendo um trabalho na faculdade, que precisa converter um programa em pascal para c.
Meu programa tem dois arquivos em c... o Programa propriamente dito... e um arquivo .h com as funções que serã usadas...
Estou tendo problemas na hora de passar os 3 arquivos (programa em pascal, dicionario de conversao, e programa convertido) como referencia, para as funções do segundo arquivo...
Se alguém puder me dar uma mão, eu agradeço.
Estou usando o W7 Ultimate, compilador de c DEV C++ 4.9.9.2
Segue abaixo os dois codigos.
conversorPascalC.c
conversor.hObrigado
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.