Z Pascala na C++ = pomoże ktos?
Witam, muszę przerobić program z Pascala na C++, mam jednak duże problemy z tym.
Jeśli ktos chciałby mi pomóc niech odezwie sie na gg 40725626
Odwdzięcze sie jakoś...
spoiler start
tak tak czytałem poradniki itp itd jednak mi to nie pomogło
spoiler stop
Chodzi mi konkretnie o przepisanie programu, albo pomoc w tym - kompletnie nie ogarniam pascala i mam z tym spore problemy, próbowałem coś sam zdziałać jednak w ogóle mi to nie wychodzi.
Zależy mi na tym projekcie, ma on sporo linijek kodu i jeśli trzeba będzie to coś zapłace.
A konkretniej w czym problem? Ogarnięcie składni Pascala to kwestia godzin, nie lat. I jest niemal dokładne odwzorowanie pomiędzy elementami składni C a Pascala. Gorzej, gdy wchodzi C++ z obiektówką i template'ami, bo tu już klasyczny Pascal niestety nie pomoże.
Tutaj kod programu:
http://wklej.to/mUNzb
Próbowałem sam coś działac, jednak przerosło to moje umiejętności. Wiem, że nikt nie zrobi mi tego za free dlatego możemy się jakoś dogadać.
Pierwsze 235 linii programu. Dalej jest błąd w składni Pascala.
#include "ptoc.h"
/*#include "crt.h"*/
/*#include "dos.h"*/
struct dane ‹
varying_string<20> nazwisko;
varying_string<20> imie;
varying_string<4> rok;
char plec;
›;
byte y; array<1,100,dane> daneos; byte i,co; string baza;
boolean fileexists(string fname)
‹
file<byte> f;
boolean fileexists_result;
assign(f,fname);
/*$I-*/
reset(f);
/*$I+*/
if (ioresult == 0)
‹
close(f);
fileexists_result=true;
›
else
fileexists_result=false;
return fileexists_result;
›
string powieksz(string& tekst)
‹
byte cosik;
string powieksz_result;
for( cosik=1; cosik <= length(tekst); cosik ++) tekst[cosik]=upcase(tekst[cosik]);
return powieksz_result;
›
void writexy(byte x,byte y, string s)
‹
gotoxy(x,y);
output << s;
›
void ramka(byte x1,byte y1,byte x2,byte y2, string tekst)
‹
byte t;
writexy(x1,y1,chr(201));
writexy(x1,y2,chr(200));
writexy(x2,y1,chr(187));
writexy(x2,y2,chr(188));
for( t=x1+1; t <= x2-1; t ++) writexy(t,y1,chr(205));
for( t=x1+1; t <= x2-1; t ++) writexy(t,y2,chr(205));
for( t=y1+1; t <= y2-1; t ++) writexy(x1,t,chr(186));
for( t=y1+1; t <= y2-1; t ++) writexy(x2,t,chr(186));
writexy(x1+3,y1,tekst);
›
void nowa()
‹
string nazwa,sciezka; text plik; integer time; char c1;
clrscr;
Lnazwa_sprawdz:
ramka(12,9,70,14," Nowa baza ");
gotoxy(22,11); output << "Podaj nazwe bazy: ";
output << " ";
gotoxy(40,11);
input >> nazwa >> NL;
if (nazwa=="")
‹
gotoxy(22,12);
output << " ";
gotoxy(22,12);
output << "podana nazwa jest nieprawidlowa";
goto Lnazwa_sprawdz;
›
else
‹
sciezka=string("baz\\")+nazwa+".db";
if (fileexists(sciezka))
‹
gotoxy(22,12);
output << " ";
gotoxy(22,12);
output << "Baza o podanej nazwie juz istnieje";
goto Lnazwa_sprawdz;
›
else
‹
assign(plik,sciezka);
rewrite(plik);
close(plik);
for( time=3; time >= 1; time --)
‹
gotoxy(22,12);
output << "Baza danych " << nazwa << ".db zostala utworzona (" << time << ')';
delay(1000);
›
return;
›
›
›
void usun(string nazwa)
‹
text plik; string sciezka,napis; integer z;
clrscr;
sciezka=string("baz\\") + nazwa;
assign(plik,sciezka);
erase(plik);
gotoxy(10,11);
output << "Baza danych " << nazwa << " zostala usunieta";
gotoxy(10,12);
output << "Nacisnij aby kontynuowac...";
input >> NL;
›
void sortuj_nazwisko()
‹
byte x,koniec,j; dane t;
koniec=i;
for( x=2; x <= koniec; x ++)
‹
for( j=koniec-1; j >= x; j --)
if (daneos[j-1].nazwisko>daneos[j].nazwisko)
‹
t.nazwisko=daneos[j-1].nazwisko;
daneos[j-1].nazwisko=daneos[j].nazwisko;
daneos[j].nazwisko=t.nazwisko;
t.imie=daneos[j-1].imie;
daneos[j-1].imie=daneos[j].imie;
daneos[j].imie=t.imie;
t.rok=daneos[j-1].rok;
daneos[j-1].rok=daneos[j].rok;
daneos[j].rok=t.rok;
t.plec=daneos[j-1].plec;
daneos[j-1].plec=daneos[j].plec;
daneos[j].plec=t.plec;
›
›
›
void sortuj_imie()
‹
byte x,koniec,j; dane t;
koniec=i;
for( x=2; x <= koniec; x ++)
‹
for( j=koniec-1; j >= x; j --)
if (daneos[j-1].imie>daneos[j].imie)
‹
t.nazwisko=daneos[j-1].nazwisko;
daneos[j-1].nazwisko=daneos[j].nazwisko;
daneos[j].nazwisko=t.nazwisko;
t.imie=daneos[j-1].imie;
daneos[j-1].imie=daneos[j].imie;
daneos[j].imie=t.imie;
t.rok=daneos[j-1].rok;
daneos[j-1].rok=daneos[j].rok;
daneos[j].rok=t.rok;
t.plec=daneos[j-1].plec;
daneos[j-1].plec=daneos[j].plec;
daneos[j].plec=t.plec;
›
›
›
void sortuj_rok()
‹
byte x,koniec,j; dane t;
koniec=i;
for( x=2; x <= koniec; x ++)
‹
for( j=koniec-1; j >= x; j --)
if (daneos[j-1].rok>daneos[j].rok)
‹
t.nazwisko=daneos[j-1].nazwisko;
daneos[j-1].nazwisko=daneos[j].nazwisko;
daneos[j].nazwisko=t.nazwisko;
t.imie=daneos[j-1].imie;
daneos[j-1].imie=daneos[j].imie;
daneos[j].imie=t.imie;
t.rok=daneos[j-1].rok;
daneos[j-1].rok=daneos[j].rok;
daneos[j].rok=t.rok;
t.plec=daneos[j-1].plec;
daneos[j-1].plec=daneos[j].plec;
daneos[j].plec=t.plec;
›
›
›
void sortuj_plec()
‹
byte x,koniec,j; dane t;
koniec=i;
for( x=2; x <= koniec; x ++)
‹
for( j=koniec-1; j >= x; j --)
if (daneos[j-1].plec>daneos[j].plec)
‹
t.nazwisko=daneos[j-1].nazwisko;
daneos[j-1].nazwisko=daneos[j].nazwisko;
daneos[j].nazwisko=t.nazwisko;
t.imie=daneos[j-1].imie;
daneos[j-1].imie=daneos[j].imie;
daneos[j].imie=t.imie;
t.rok=daneos[j-1].rok;
daneos[j-1].rok=daneos[j].rok;
daneos[j].rok=t.rok;
t.plec=daneos[j-1].plec;
daneos[j-1].plec=daneos[j].plec;
daneos[j].plec=t.plec;
›
›
›
Popraw składnię w Pascalu, potem ściągnij jakiś program do konwersji Pascala na C i tam gdzie Ci wyrzuci warningi popraw kod ręcznie.