Pomo?żcie w tłumaczeniu z c na pascala

0

Witam
mam małe pytanko. Pomogl by mi ktoś przetlumaczyc kod z c na pascala? Mam już napisany poniżej program i potrzeba mi zrobić taki sam program w pascalu tylko ja za diabła nie wiem jak sie za to wziasc i w ogóle jak to zrobic, gdyż jestem zielony z pascala :(. Bylbym bardzo wdzieczny za każdą pomoc. Kod programu jest ponizej.
Pozdrawiam Marek.

/*Program zamieniajacy wyrazenie z Odwrotnej Notacji Polskiej na zwykla*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>

#define MAX 100

typedef struct WEZEL {
	struct WEZEL* nast;
	char znak[MAX]; } Wezel;

Wezel* push(Wezel*wierzcholek, char co_dod[MAX]);	/*odklada na stos tablice co_dod*/
Wezel* pop(Wezel *wierzcholek, char co_zdj[MAX]);	/*zejmuje (i kasuje)ze stosu tablice co_zdj*/

void przerwij();		/*przerywa dzialanie programu gdy wprowadzono zle dane*/
void info();


void main()
{
	
	int i, m=1, k;		/*liczniki petel*/
	int ile_arg=0, ile_oprt=0;			/*ile wystapilo argumentow*/
	char onp[MAX], tmp1[MAX],tmp2[MAX],out[MAX],out1[MAX];
	Wezel *wierzcholek;
 	FILE *plik;
	plik=(fopen("p.txt","r"));	
	for (i=0; i<MAX; i++) 		/*zerowanie tablic*/
	{
		onp[i]=NULL;
		out[i]=NULL;
		out1[i]=NULL;
		tmp1[i]=NULL;
		tmp2[i]=NULL;
	}

	for (i=0; i<MAX; i++) 		/*wczytuje do tablicy onp zapis w notacji onp*/
	{
		onp[i]=fgetc(plik);
		if ( (onp[i]=='(') || (onp[i]==')') ) przerwij();
		
	}
	for (i=0; onp[i]!=EOF; i++)
		if ( (onp[i]=='+') || (onp[i]=='-') || (onp[i]=='*') || (onp[i]=='/') ) 
		{	
			if(ile_arg<2) przerwij();	/*operator dotyczy 2 operandow*/
			else
			{
				wierzcholek=pop(wierzcholek,tmp1);
				wierzcholek=pop(wierzcholek,tmp2);
				out[0]='(';
				for (k=0; tmp2[k]!='\0'; k++) out[m++]=tmp2[k];
				out[m++]=onp[i];
				for (k=0; tmp1[k]!='\0'; k++) out[m++]=tmp1[k];
				out[m++]=')';
				out[m++]='\0';
				wierzcholek=push(wierzcholek,out);
				m=1;
				ile_oprt++;
			}
		}
		else 
		{
			out1[0]=onp[i];
			out1[1]='\0';
			wierzcholek=push(wierzcholek,out1);
			ile_arg++;
		}
	if(ile_arg!=(ile_oprt+1)) przerwij();	
	info();
	printf("%s",wierzcholek->znak);			/*wypisuje ostateczny wynik (w notacji zwyklej)*/
	fclose(plik);
}

Wezel* push(Wezel *wierzcholek, char co_dod[MAX])
{
	int i;
	Wezel *nowy;
	nowy = (Wezel*) malloc(sizeof(Wezel));
	nowy->nast=wierzcholek;
	for (i=0; co_dod[i]!='\0'; ++i)	nowy->znak[i]=co_dod[i];
	return nowy;
}

Wezel* pop(Wezel *wierzcholek, char co_zdj[MAX])
{
	int i;
	Wezel *temp=wierzcholek->nast;
	for (i=0; i<MAX;++i) co_zdj[i]=wierzcholek->znak[i];
	free(wierzcholek);
	return temp;

}

void przerwij()
{
	printf("Wprowadzono zle dane...\n");
	exit(1);
}

void info()
{
	printf("\n\nProgram zamienia wyrazenia z Odwrotnej Notacji Polskiej na zwykla.\n");
	printf("W pliku zrodlowym napisano wyrazenie w onp dla pojedynczych znakow.\n");
	printf("Dozwolone operatory: +, - , *, / \n");
	printf("Zapis w zwyklej notacji z nawiasami:\n");
	
}
0

Skoro jesteś <font color="green">zielony</span> w paszczaku to najpeirw przeczytaj któryś z manuali o pisaniu w tp/delphi (tutaj kliknij). Następnie poczytaj ten art.

1 użytkowników online, w tym zalogowanych: 0, gości: 1