I got 2 Declaration syntax error... i really need help :D Thanks!
Btw .. i'm using Borland C++
#include<iostream.h>
#include<graphics.h>
#include<stdlib.h>
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
void main()
{clrscr();
int opt,opt1,opt2,opt3,opt4,opt5,opt6;
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int style, midx, midy;
int size = 1;
int x,y;
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "C:\\BorlandC\\BGI");
Repeat:
cleardevice();
do
{
setbkcolor(BLUE);
settextstyle(TRIPLEX_FONT,0,4);
setcolor(GREEN);
outtextxy(265,10,"::Menu::");
settextstyle(TRIPLEX_FONT,0,3);
outtextxy(190,40,"::Metoda Backtracking::");
settextstyle(TRIPLEX_SCR_FONT,0,1);
outtextxy(20,100,"1. Teorie.");
settextstyle(TRIPLEX_SCR_FONT,0,1);
outtextxy(20,120,"2. Subprogramul Fix Back().");
settextstyle(TRIPLEX_SCR_FONT,0,1);
outtextxy(20,140,"3. Probleme.");
settextstyle(TRIPLEX_SCR_FONT,0,1);
outtextxy(20,160,"4. Iesire.");
gotoxy(24,13);
settextstyle(TRIPLEX_SCR_FONT,0,1);
outtextxy(20,184,"Alegeti Optiunea: ");cin>>opt;
switch(opt)
{
case 1:
{
clrscr();
//system("cls");
cleardevice();
setbkcolor(BLUE);
settextstyle(TRIPLEX_FONT,0,3);
setcolor(GREEN);
outtextxy(200,10,"::Metoda Backtracking::");
cout<<endl<<endl;
settextstyle(DEFAULT_FONT,0,1);
outtextxy(8,50,"La dispozitia celor care rezolva probleme cu ajutorul calculatorului exista mai");
outtextxy(3,60,"multe metode. Dintre acestea cel mai des utilizate sunt: ");
outtextxy(5,70," ¯ Metoda Greedy;");
outtextxy(5,80," ¯ Metoda Divide et Impera;");
outtextxy(5,90," ¯ Metoda Branch and Bound;");
outtextxy(5,100," ¯ Metoda Backtracking.");
outtextxy(5,110,"Metoda Backtracking se aplica problemelor in care solutia poate fi reprezentata");
outtextxy(3,120,"sub forma unui vector - x=(x1,x2,x3,...xk,...xn) î S, unde S este multimea");
outtextxy(3,130,"solutiilor probleme si S=S1*S2*...*Sn, si Si sunt multimi finite avand s elem.");
outtextxy(3,140,"si xi î Si, ()i = 1...n.");
outtextxy(8,150,"Pentru fiecare problema se dau relatii intre componentele vectorului x, care");
outtextxy(3,160,"sunt numite conditii interne; solutiile posibile care satisfac conditiile");
outtextxy(3,170,"interne se numesc solutii rezultat. Metoda de generare a tuturor solutiilor");
outtextxy(3,180,"posibile si apoi de determinare a solutiilor rezultat prin verificarea");
outtextxy(3,190,"indeplinirii conditiilor interne necesita foarte mult timp.");
outtextxy(8,200,"Metoda backtracking evita aceasta generare si este mai eficienta. Elementele");
outtextxy(3,210,"vectorului x, primesc pe rand valori in ordinea crescatoare a indicilor,x[k]");
outtextxy(3,220,"va primi o valoare numai daca au fost atribuite valori elementelor x1...x[k-1].");
outtextxy(3,230,"La atribuirea valorii lui x[k] se verifica indeplinirea unor conditii de");
outtextxy(3,240,"continuare referitoare la x1...x[k-1]. Daca aceste conditii sunt indeplinite,");
outtextxy(3,250,"la pasul km acest lucru inseamna ca orice valori i'am atribui lui x[k+1]..x[n]");
outtextxy(3,260,"nu se va ajunge la o solutie rezultat.");
outtextxy(8,270,"Metoda backtracking construieste un vector solutie in mod progresiv incepand");
outtextxy(3,280,"cu prima componenta a vectorului si mergand spre ultima cu eventuale reveniri");
outtextxy(3,290,"asupra atribuirilor anterioare.");
outtextxy(8,300,"Metoda se aplica astfel: ");
outtextxy(5,310," ¯ se alege prima valoare din S1 si i se atribuie lui x1;");
outtextxy(5,320," ¯ se presupun generate elementele x1...x[k-1], cu valori din S1...S[k-1];");
outtextxy(3,330,"pentru generarea lui x[k] se alege primul element din S[k] disponibil si pentru");
outtextxy(3,340,"valoarea aleasa se testeaza indeplinirea conditiilor de continuare.");
outtextxy(8,350,"Pot aparea urmatoarele situatii:");
outtextxy(5,360," ¯ x[k] indeplineste conditiile de continuare. Daca s'a ajuns la solutia finala");
outtextxy(3,370,"(k==n) atunci se afiseaza solutia obtinuta. Daca nu s'a ajuns la solutia finala");
outtextxy(3,380,"se trece generarea elementului urmator - x[k-1];");
outtextxy(5,390," ¯ x[k] nu indeplineste conditiile de continuare. Se incearca urmatoarea valoare");
outtextxy(3,400,"disponibila din S[k]. Daca nu se gaseste nici o valoare in S[k] care sa");
outtextxy(3,410,"indeplineasca conditiile de continuare, se revine la elem. x[k-1] si se reia");
outtextxy(3,420,"algoritmul pentru o noua valoare a acestuia. Algoritmul se incheie cand au fost");
outtextxy(3,430,"luate in considerare toate elementele lui S1.");
outtextxy(8,440,"Este o tehnica de programare aplicabila algoritmilor care ofera mai multe solutii");
outtextxy(3,450,"si are ca rezultat obtinerea tuturor solutiilor problemei.");
do
{outtextxy(5,460,"1. Continuare Teorie.");
gotoxy(1,1);
outtextxy(5,470,"Alegeti Optiunea: ");cin>>opt1;
switch(opt1)
{case 1:
{clrscr();
//system("cls");
cleardevice();
setbkcolor(BLUE);
setcolor(GREEN);
outtextxy(8,10,"Fiecare solutie se memoreaza intr'o structura de date de tip stiva implemenetata");
outtextxy(3,20,"cu ajutorul unui vector. Deci fiecare solutie poate fi pusa sub forma unui vector.");
outtextxy(8,30,"Intr'un algoritm backtracking ne intereseaza toate solutiile posibile. Pentru a");
outtextxy(3,40,"obtine fiecare solutie finala se completeaza stiva nivel cu nivel trecand astfel");
outtextxy(3,50,"prin niste solutii partiale. Astfel solutiile finale cat si cele partiale pentru");
outtextxy(3,60,"a fi luate in considerare trebuie sa indeplineasca anumite conditii, numite");
outtextxy(3,70,"conditii de validare. O solutie care indeplineste o astfel de conditie se numeste");
outtextxy(3,80,"solutie valida. Toate configuratiile stivei ce reprezinta solutii finale sunt");
outtextxy(3,90,"alcatuite din elementele aceleiasi multimi bine definite pe care o numim multimea");
outtextxy(3,100,"solutiilor. Fiecare noua solutie partiala se obtine prin completarea solutiei");
outtextxy(3,110,"partiale precedente cu inca un nivel pe stiva. La fiecare nivel se pun valori");
outtextxy(3,120,"din multimea solutiilor care nu au fost incercate pana cand se obtine o solutie");
outtextxy(3,130,"valida. In acest moment se trece la nivelul urmator in stiva pentru a completa");
outtextxy(3,140,"mai departe solutia reluand incercarile pe noul nivel.");
outtextxy(8,150,"La un moment dat pe un anumit nivel nu mai exista nici o valoare neincercata");
outtextxy(3,160,"din multimea valorilor probleme. In acest caz se face un pas inapoi in stiva");
outtextxy(3,170,"la nivelul anterior si se reia cautarea cu valorile ramase neincercate pe acest");
outtextxy(3,180,"nivel anterior. Respectivul nivel a mai fost vizitat dar l'am abandonat dupa ce");
outtextxy(3,190,"am pus o valoare care a general o solutie valida. Deci este posobil sa fi ramas");
outtextxy(3,200,"aici valori neincercate.Daca nici pe acest nivel nu mai avem valori neincercate");
outtextxy(3,210,"mai facem un pas inapoi in stiva. Mecanismul revenirilor a determinat denumirea");
outtextxy(3,220,"de metoda backtracking.Plecand de la nivelul 1 si repetand algoritmul pana cand");
outtextxy(3,230,"pe toate nivelele au fost incercate toate valorile din multimea valorilor se");
outtextxy(3,240,"obtin solutii finale care se tiparesc.");
outtextxy(8,250,"Vom implementa metoda backtracking iterativ folosind o rutina unica aplicabila");
outtextxy(3,260,"oricarei probleme. Rutina va apela proceduri si functii care au intotdeauna");
outtextxy(3,270,"acelasi nume si parametri si care din punct de vedere al metodei realizeaza");
outtextxy(3,280,"acelasi lucru.");
outtextxy(8,290,"Metoda backtracking are urmatoarele subprograme: ");
outtextxy(5,300," ¯Init() - functia de initializare.");
outtextxy(5,310," ¯Succesor() - gasirea unui element al multimii Ak.");
outtextxy(5,320," ¯Valid() - testeaza daca elementul ales indeplineste conditiile de continuare.");
outtextxy(5,330," ¯Solutie() - face testul daca s'a ajuns sau nu la solutie finala.");
outtextxy(5,340," ¯Tipar() - tipareste rezultatul.");
do{
outtextxy(5,363,"1. Meniu.");
gotoxy(19,24);
outtextxy(5,373,"Alegeti Optiunea: ");cin>>opt2;
if(opt2=='1')
clrscr();
//system("cls");
goto Repeat;
system("pause");
system("cls");
break;
}
while(opt2!='1');
system("pause");
system("cls");
break;
}
default:
{ clrscr();
//system("cls");
cleardevice();
setbkcolor(BLUE);
setcolor(GREEN);
outtextxy(250,150," Optiune Gresita!");
system("pause");
clrscr();
cleardevice();
//system("cls");
break;
}
} }
while(opt1!='1');
system("pause");
system("cls");
break;
}
case 2:
{ clrscr();
//system("cls");
cleardevice();
setbkcolor(BLUE);
settextstyle(TRIPLEX_FONT,0,3);
setcolor(GREEN);
outtextxy(220,10,"::Suprogramul Fix::");
settextstyle(TRIPLEX_FONT,0,2);
outtextxy(285,40,"::Back::");
settextstyle(DEFAULT_FONT,0,1);
outtextxy(5,90,"void back() //partea fixa a algoritmului.");
outtextxy(5,100," {k=1; //se initializeaza varful stivei.");
outtextxy(5,110," init(); //se initializeaza stiva pentru primul element al sol.");
outtextxy(5,120," while(k>0) //cat timp stiva nu s'a golit.");
outtextxy(5,130," {as=1;ev=0; ");
outtextxy(5,140," while(as && !ev) //cat timp are succesor si nu s'a gasit elementul k");
outtextxy(212,150,"al solutiei.");
outtextxy(5,160," {as=succesor(); //se cauta succesor.");
outtextxy(5,170," if(as) //daca are succesor.");
outtextxy(5,180," ev=valid();} //se verifica daca este element al solutiei.");
outtextxy(5,190," //se iese din structura repetitiva while daca nu mai");
outtextxy(212,200,"exista succesor sau daca s'a gasit elementul solutiei.");
outtextxy(5,210," if(as) //daca are succesor, atunci.");
outtextxy(5,220," if(solutie()) //daca s'au obtinut toate elementele solutiei,");
outtextxy(5,230," tipar(); //atunci se afiseaza elementele solutiei.");
outtextxy(5,240," else {k++; //altfel, se urca in stiva pentru a inregistra.");
outtextxy(5,250," //urmatorul element al solutiei.");
outtextxy(5,260," init();} //si se initializeaza stiva pentru urmatorul element");
outtextxy(212,270,"al solutiei.");
outtextxy(5,280," else k--;} //altfel, se coboara in stiva pentru a reveni la");
outtextxy(212,290,"elementul anterior al solutiei.");
outtextxy(5,300," }");
do{
outtextxy(5,314,"1. Meniu.");
gotoxy(19,21);
outtextxy(5,324,"Alegeti Optiunea: ");cin>>opt3;
if(opt3=='1')
system("cls");
clrscr();
goto Repeat;
system("pause");
system("cls");
}
while(opt3!='1');
system("pause");
system("cls");
break;}
case 3:
{ clrscr();
//system("cls");
cleardevice();
do{setbkcolor(BLUE);
settextstyle(TRIPLEX_SCR_FONT,0,1);
setcolor(GREEN);
outtextxy(5,12,"1. Prima Problema.");
outtextxy(5,32,"2. A doua Problema.");
outtextxy(5,52,"3. Meniu.");
gotoxy(22,6);
outtextxy(5,72,"Alegeti Optiunea: ");cin>>opt4;
switch(opt4)
{case 1:
{clrscr();
//system("cls");
cleardevice();
setbkcolor(BLUE);
settextstyle(TRIPLEX_FONT,0,3);
setcolor(GREEN);
outtextxy(160,5,"::Generarea Aranjamentelor::");
int st[100],n,m,ev,as,k;
void init()
{st[k]=0;} // DECLARATION SYNTAX ERROR!
int succesor()
{if(st[k]<n)
{st[k]=st[k]+1;
return 1;}
else
return 0;
}
int valid()
{int i;
for(i=1;i<k;i++)
if(st[k]==st[i])
return 0;
return 1;
}
int solutie()
{return k==m;}
void tipar()
{for(int i=1;i<=k;i++)
cout<<st[i]<<" ";
cout<<endl;
}
void back()
{k=1;init();
while(k>=1)
{ev=0;as=1;
while(as&&!ev)
{as=succesor();
if(as)
ev=valid();}
if(as)
if(solutie())
tipar();
else
{k++;
init();}
else
k--;}
}
void main()
{cout<<"n=";cin>>n;
cout<<"m=";cin>>m;
back();
}
system("pause");
clrscr();
cleardevice();
//system("cls");
break;
}
case 2:
{clrscr();
//system("cls");
cleardevice();
setbkcolor(BLUE);
settextstyle(TRIPLEX_FONT,0,3);
setcolor(GREEN);
outtextxy(180,5,"::Generarea Combinarilor::");
int st[100],n,m,ev,as,k;
void init()
{st[k]=0;} // DECLARATION SYNTAX ERROR!
int succesor()
{if(st[k]<m)
{st[k]=st[k]+1;
return 1;
else
return 0;
}
}
int valid()
{if(k>1)
if(st[k]<=st[k-1])
return 0;
return 1;
}
int solutie()
{return k==m;}
void tipar()
{for(int i=1;i<=k;i++)
cout<<st[i]<<" ";
cout<<endl;
}
void back()
{k=1;init();
while(k>=1)
{ev=0;as=1;
while(as&&!ev)
{as=succesor();
if(as)
ev=valid();}
if(as)
if(solutie())
tipar();
else
{k++;
init();}
else
k--;}
}
void main()
{cout<<"n=";cin>>n;
cout<<"m=";cin>>m;
back();
}
system("pause");
//system("cls");
clrscr();
cleardevice();
break;
}
case 3:
{clrscr();
//system("cls");
goto Repeat;
clrscr();
cleardevice();
system("pause");
cleardevice();
system("cls");
break;
}
default:
{clrscr();
//system("cls");
cleardevice();
setbkcolor(BLUE);
setcolor(GREEN);
outtextxy(5,10," Optiune Gresita!");
system("pause");
clrscr();
cleardevice();
//system("cls");
break;}
}
}
while(opt4!='3');
system("pause");
system("cls");
break;
}
case 4:
{
exit(1);
}
default:
{ clrscr();
//system("cls");
cleardevice();
setbkcolor(BLUE);
setcolor(GREEN);
outtextxy(5,10," Optiune Gresita!");
system("pause");
clrscr();
cleardevice();
//system("cls");
break;
}
}
}
while(opt!='4');
getch();
}