source: liacs/da/fibo_queue/test2.cc@ 332

Last change on this file since 332 was 2, checked in by Rick van der Zwet, 15 years ago

Initial import of data of old repository ('data') worth keeping (e.g. tracking
means of URL access statistics)

  • Property svn:executable set to *
File size: 6.2 KB
Line 
1#include<iostream>
2#include<cstdlib>
3#include<string>
4#include<iomanip>
5#include<fstream>
6using namespace std;
7#include "fiboqueue.h"
8#include "storelist.h"
9#include "standaard.h"
10#include "leestekst.h"
11#include "communiceer.h"
12#define sv1 999
13#define sv7 100000
14#define sv57 12
15ifstream sv42;ofstream sv41;ofstream sv412;char sv58[sv57+1][30]=
16{"","Insert","DeleteMin","DeleteMin (2)","Decrease",
17"Delete","Show","Merge","Empty","Empty (2)","Reset","Switch","Stop"};bool sv14,
18sv16;int sv8,sv9,sv6,sv15;scl2*sv17,*sv18,*sv20,*sv19;FiboQueue*q1,*q2,*q,*sv21;
19#define sv59 43
20void sf3(char sv22[30],char sv24[30],char sv25[30]){int sv30;
21sv30=strcspn(sv22,".");strncpy(sv24,sv22,sv30);sv24[sv30]=EOS;
22strcat(sv24,".uit");strncpy(sv25,sv22,sv30);sv25[sv30]=EOS;strcat(sv25,".con");
23}/*sf3*/void sf4(int&Min,int&sv10){
24cout<<"U kunt een minimale en een maximale waarde aangeven\n";
25cout<<" voor de getallen in de Fibonacci rij.\n";Min=sf21(sv14,sv42,sv41,sv412,
26"Geef een minimale waarde",' ',-sv1,sv1," ActMin");
27sv10=sf21(sv14,sv42,sv41,sv412,"Geef een maximale waarde",' ',
28Min,sv1," ActMax");}void sf5(){sv6=sv7;sv15=1;sv17=new scl2(sv8,sv9);
29sv18=new scl2(sv8,sv9);sv20=sv17;sv19=sv18;q1=new FiboQueue;q2=new FiboQueue;
30q=q1;sv21=q2;}void sf6(){delete q1;delete q2;delete sv17;delete sv18;}
31void sf7(FiboQueue*q,int N){int sv31,i,r,p,sv32;float fr;QValueTp sv5;
32cout<<"Geef een positieve gehele waarde voor de random seed\n";
33cout<<" (<= 0 betekent: geen nieuwe seed) : ";if(sv14)cin>>sv31;else{sv42>>sv31;
34sf22(sv42);cout<<sv31<<EOL;sf23(sv41,sv31,"","");}if(sv31>0)srand(sv31);
35if(N<=sv59){cout<<EOL;
36cout<<"We voeren achtereenvolgens in de Fibonacci rij in:\n";}sv32=sv9-sv8+1;
37for(i=1;i<=N;i++){r=rand();fr=((float)r)/(((float)RAND_MAX)+1.0);fr*=sv32;
38p=(int)fr;sv5=p+sv8;sv20->sf24(sv5,q->Insert(sv5));sv6--;if(N<=sv59)
39{cout<<sv5<<EOL;if(!sv14){sf23(sv41,sv5,"","");}}}}void sf8(FiboQueue*q,int N)
40{int i;QValueTp sv5;char sv60[60];for(i=1;i<=N;i++)
41{strcpy(sv60,"Geef een waarde voor de ");strcat(sv60,ItoA(i));
42strcat(sv60,"-e in te voeren knoop");sv5=sf21(sv14,sv42,sv41,sv412,
43sv60,' ',sv8,sv9,"");sv20->sf24(sv5,q->Insert(sv5));sv6--;}}
44void sf9(FiboQueue*q){int N;bool sv114;char sv61='j';
45cout<<"Hoeveel knopen wilt u invoeren, nog maximaal "<<sv6<<" mogelijk : ";
46if(sv14)cin>>N;else{sv42>>N;sf22(sv42);cout<<N<<EOL;sf23(sv41,N,"","");}
47if((N<0)||(N>sv6))cout<<"Verkeerd aantal.\n";else if(N>=1)
48{cout<<"U kunt de waarde(s) zelf invoeren, of u kunt ze random laten genereren.\n";
49sv114=(N<=sv59);sv61=sf30(sv14,sv42,sv41,sv412,sv114,"Wilt u ze zelf invoeren");
50if(sv61=='N')sf7(q,N);else sf8(q,N);}}void sf10(FiboQueue*q,bool sv62)
51{QValueTp sv5;FiboNode*sv11;if(!q->IsEmpty()){sv11=q->Min;sv5=q->Minimum();
52sv20->sf18(sv5,sv11);sv5=q->DeleteMin();sv6++;
53cout<<"We hebben de (minimale) waarde "<<sv5<<
54" uit de Fibonacci rij gehaald.\n";if((!sv14)&&sv62)sf23(sv41,sv5,"","");}else
55cout<<"De Fibonacci rij was al leeg.\n";}void sf12(FiboQueue*q){QValueTp sv3,
56sv4;FiboNode*sv12;
57cout<<"Geef de oude waarde van de knoop die u wilt verlagen : ";if(sv14)
58cin>>sv3;else{sv42>>sv3;sf22(sv42);cout<<sv3<<EOL;sf23(sv41,sv3,"","");}
59if((sv3<=sv8)||(sv3>sv9))cout<<"Verkeerde waarde.\n";else if(!sv20->sf17(sv3))
60{cout<<"Deze waarde stond nog niet in de Fibonacci rij.\n";
61cout<<"We kunnen haar dus zeker niet verlagen.\n";}else
62{cout<<"Geef een nieuwe waarde voor deze knoop,\n";
63cout<<" minimaal "<<sv8<<", maximaal "<<sv3-1<<" : ";if(sv14)cin>>sv4;else
64{sv42>>sv4;sf22(sv42);cout<<sv4<<EOL;sf23(sv41,sv4,"","");}
65if((sv4<sv8)||(sv4>=sv3))cout<<"Verkeerde waarde.\n";else{sv12=sv20->sf18(sv3);
66q->Decrease(sv12,sv4);sv20->sf24(sv4,sv12);}}}void sf25(FiboQueue*q){
67cout<<"Helaas ... deze methode hoeft niet ge-implementeerd te worden\n";}
68void sf26(FiboQueue*q,bool sv62){QValueTp sv5,sv63;FiboNode*sv11;bool sv64,sv65;
69if(!q->IsEmpty()){cout<<"We proberen `Decrease' te gebruiken om het minimum\n";
70cout<<" van de Fibonacci rij op te hogen\n";sv11=q->Min;sv5=q->Minimum();
71q->Decrease(sv11,sv5+1);if((q->Minimum()!=sv5)||(q->Min!=sv11))
72{sv20->sf18(sv5,sv11);sv20->sf24(sv5+1,sv11);}}sv64=q->IsEmpty();sv63=sv8;
73sv65=true;cout<<
74"We maken de lijst leeg en komen daarbij de volgende waardes tegen:\n";
75while(!q->IsEmpty()){sv11=q->Min;sv5=q->Minimum();sv20->sf18(sv5,sv11);
76sv5=q->DeleteMin();sv6++;cout<<sv5<<EOL;if((!sv14)&&sv62)sf23(sv41,sv5,"","");
77if(sv5>=sv63)sv63=sv5;else sv65=false;}if(!sv64){cout<<EOL;if(sv65)
78cout<<"We kregen inderdaad steeds het minimum.\n";else
79cout<<"We kregen niet steeds het minimum.\n";if(!sv14)
80sf23(sv41,BtoI(sv65),"","");}
81cout<<"We proberen nog een element uit de lege Fibonacci rij te halen\n";
82sv11=q->Min;sv5=q->Minimum();sv20->sf18(sv5,sv11);sv5=q->DeleteMin();
83cout<<"Daarbij treffen we aan : "<<sv5<<EOL;}void sf91(){if(sv15==1){sv15=2;
84q=q2;sv21=q1;sv20=sv18;sv19=sv17;}else{sv15=1;q=q1;sv21=q2;sv20=sv17;sv19=sv18;}
85}int main(){ifstream sv40;int sv116,sv115,i,sv33;char sv22[30],sv24[30],
86sv25[30];bool sv65;cout.setf(ios::unitbuf);sv40.open("test.dat",ios::in);
87if(sv40){sf2(sv40,"InterActief = ");sv40>>sv116;sv14=bool(sv116);}else
88{cout<<"We konden `test.dat' niet openen\n";cout<<EOL;sv14=true;}if(!sv14)
89{sf2(sv40,"Invoer = ");sv40>>sv22;sf2(sv40,"Controleren = ");sv40>>sv115;
90sv16=bool(sv115);}else sv16=false;if(sv40)sv40.close();if(!sv14)
91{sf3(sv22,sv24,sv25);sv42.open(sv22,ios::in);if(sv42){sv41.open(sv24,ios::out);}
92else{cout<<"We konden "<<sv22<<" niet openen\n";cout<<EOL;sv14=true;sv16=false;}
93}sf4(sv8,sv9);sf5();do{cout<<EOL;cout<<"Fibonacci rij "<<sv15<<" is actief\n";
94for(i=1;i<=sv57;i++){cout<<setw(2)<<i;cout<<". "<<sv58[i]<<EOL;}
95cout<<"Maak een keuze : ";if(sv14)cin>>sv33;else{sv42>>sv33;sf22(sv42);
96cout<<sv33<<EOL;if((sv33>=1)&&(sv33<=sv57)){sf23(sv41,sv33,"","");}else
97{sf23(sv41,sv33,"","");}}cout<<EOL;switch(sv33){case 1:sf9(q);break;
98case 2:sf10(q,true);break;case 3:sf10(q,false);break;case 4:sf12(q);break;
99case 5:sf25(q);break;case 6:q->Show();break;case 7:q->Merge(sv21);
100sv20->Merge(sv19);break;case 8:sf26(q,true);break;case 9:sf26(q,false);break;
101case 10:sf6();sf5();break;case 11:sf91();break;case 12:break;
102default:cout<<"Verkeerde invoer. Probeer het nog eens.\n";}}while(sv33!=12);
103sf6();if(!sv14){sv41.close();sv42.close();}if(sv16){sv65=sf27(sv24,sv25);
104if(sv65)cout<<"GELIJK\n";else cout<<"NIET GELIJK\n";}return 0;}
Note: See TracBrowser for help on using the repository browser.