版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Chapter12
SeparateCompilationandNamespaces
1.SolutionstoandRemarksonSelectedProgrammingProblems
1.DigitalTime
AddthefollowingmemberfunctiontotheADTclassDigitalTime.definedinDisplay
12.1and12.2.
void
DigitalTime::interval_since(constDigitalTime&aPreviousTime,
int&hourslnlnterval,
int&minutesInInterval);
Thedifferenceintheelapsedtimebetweenthetimeofthecallingobjectandthetimeof
theargumentobjectisreportedintheargumentsfortheintreferenceshoursandminutes
parameters.
Questionarisinginthesolution:Inexactlywhatdays(previous,current,successor)are
thesetimesallowedtobe?
Bothtimesinthesame(current)day,orcurrenttimeisinthecurrentdayandtheprevious
timeisinthepreviousday.
ThisBooleanexpressionistrueiftheprevioustimeisinthepreviousday:
(hour<prev.hour||hour==prev.hour&&minute<
prev.minute)
Thetimedifference
(callingobjtime)-(argumentpreviousobjtime)
actuallymeans
(callinghours:minutes)-(argumentprevioushours:minutes)
Copyright?2008PearsonEducation,Inc.PublishingasPearsonAddison-Wesley
This(perhaps)maybemoreclearlywritten
(caller_hours-prev_hours):(caller_minutes-prev_minutes)
raw_difference=
(caller_hours-prev_hours):(caller_minutes-prev_minutes)
whichwillneedfixingifeitherthehourortheminutearenegative.
Someexamples:
Timesinsameday,bothdifferencespositive:
11:1515:30
a_previous_timecallertime
raw_difference=(15-11):(30-15)=4:15
0<difference_minutes<60,
Sowedon'tneedtofixthetime.
difference=raw_difference
Timesinsameday,minutesdifferencesnegative:
I.I
11:305:15
a_previous_timecallertime
raw_difference=(15-11):(15-30)=4:(-15)
Thedifference_minute<0,sowedecrementhoursandadd60minutesto
minute,gettingtheintervalsincea_previous_time=3:45
Exampleswhereprevioustimeislaterthancaller'stime,sotimesareindifferent
days.
Wehavetimesondifferentdaysifthe
rawdifferencehour<0or
rawdifferencehour=0andrawdifferenceminute<0
thatis
(hour<prev.hour||hour==
prev.hour&&minute<prev.minute)
Whencaller'stimeisonapreviousday,add24toraw_differenceandfixminutesif
necessary.
Differencehoursnegative,differenceminutespositive:
previousdaycurrentday
||
12:3011:15
a_previous_timecallertime
raw_difference=(11-12):(15-30)=(-1):(-15)
difference=raw_difference+24:00
=(-1):(-15)+24:00=23:(-15)
differenceminutes<0,
whichwefixbyadding60anddecrementinghourstoget22:45
Bothdifferencehoursanddifferenceminutesarenegative:
previousdaycurrentday
||
12:1511:30
a_previous_timecallertime
raw_difference=(11-12):(30-15)=(-1):15
difference=raw_difference+24:00
=(-1):15+24:00=23:15
(differenceminutes>0sonofixisneeded)
previousdaycurrentday
12:5911:01
previoustimecaller'stime
raw_difference
=(caller_hours-prev_hours):(caller_min-prev_min)
=(11-12):(01-59)=(-1):(-58)
difference=raw_difference+24:00
=(-1):(-58)+24:00=23:(-58)
minutes<0,
soweneedtofixbydecrementinghoursandadding60tominutes.Thefixedtimeis
22:02
TheclassDigitalTimedefinition,withintervalsinceadded:
//file:dtime.h
//modifiedfromtextforChapter12problem1byaddition
//ofpublicfunctionsnormalizeandinterval_since.
//InterfaceforclassDigitalTime
//valuesareinputandoutputin24hourtime:
//9:30AMis9:30,and2:45PMis14:45
#include<iostream>
usingnamespacestd;
classDigitalTime
public:
friendbooloperator==(constDigitalTime&zconst
DigitalTime&);
DigitalTime(intthe_hourzintthe_minute);
DigitalTime();//settimetomidnight:0:00
voidadvance(intminutes_added);
voidadvance(inthours_addedzintminutes_added);
friendistream&operator>>(istream&,DigitalTime^);
friendostream&operator<<(ostream&zconstDigitalTime^);
//memberaddedforProgrammingProblem1zpage488
voidinterval_since(constDigitalTime&prev_timez
int&hours_in_interval,
int&minutes_in_interval)const;
private:
inthour;
intminute;
);
Thetestprogram:
//File:chl2prbl.cc
//Chapter12problem1:interval_sincetestprogram.
#include<iostream>
#include"dtime.hn
usingnamespacestd;
intmain()
cout<<"TestProgrammingProblem1n<<endl<<endl;
DigitalTimecurrentzprevious;
inthourszminutes;
charans;
do
cout<<"Enteracurrenttimein24hournotation";
cin>>current;
cout<<""<<current<<endl
<<nEnteraprevioustimein24hournotation;
cin>>previous;
cout<<*'*'<<previous<<endl;
erval_since(previouszhourszminutes);
cout<<"Thetimeintervalbetween”<<previous
<<'*and"<<current<<endl
<<"is"<<hours<<"hoursand"
<<minutes<<Hminutes11<<endl;
cout<<nY/yrepeats,anyothercharacterends"<<endl;
cin>>ans;
cout<<nn<<ans<<endl;
}while(1y*==ans||1Y1==ans);
return0;
)
Hereisthecodeforthefunctionintervalsince:
#include"dtime.hn
ttinclude<iostream>
usingnamespacestd;
void
DigitalTime::interval_since(constDigitalTime&prevz
int&hours_in_intervalz
int&minutes_in_interval)const
{——
DigitalTimedifference;
difference.hour=hour-prev.hour;
difference.minute=minute-prev.minute;
if(hour<prev.hour
hour==prev.hour&&minute<prev.minute)
(
cout<<n1Previous*timeisinthepreviousday"
<<endl;
difference.hour=24+(hour-prev.hour);
)
if(difference.minute<0)
(
difference.hour--;
difference.minute=difference.minute+60;
)
hours_in_interval=difference.hour;
minutes_in_interval=difference.minute;
)——
Testdataforatypicalrun:
3:155:30y3:305:15y5:153:30y5:303:15y11:5911:58y
11:5811:59y
12:0112:00y12:0012:01n
Outputfromatypicalrun,generatedbythiscommandissuedatthecommand
prompt:
13:32:29:-/AW$chl2prbl<chl2prbl.in>chl2prbl.out
13:32:31:^/AW$catchllprbl.out
TestProgrammingProblem1
Enteracurrenttimein24hournotation3:15
Enteraprevioustimein24hournotation5:30
1Previous*timeisinthepreviousday
Thetimeintervalbetween5:30and3:15
is21hoursand45minutes
Y/yrepeats,anyothercharacterends
y
Enteracurrenttimein24hournotation3:30
Enteraprevioustimein24hournotation5:15
'Previous*timeisinthepreviousday
Thetimeintervalbetween5:15and3:30
is22hoursand15minutes
Y/yrepeats,anyothercharacterends
y
Enteracurrenttimein24hournotation5:15
Enteraprevioustimein24hournotation3:30
Thetimeintervalbetween3:30and5:15
is1hoursand45minutes
Y/yrepeats,anyothercharacterends
y
Enteracurrenttimein24hournotation5:30
Enteraprevioustimein24hournotation3:15
Thetimeintervalbetween3:15and5:30
is2hoursand15minutes
Y/yrepeats,anyothercharacterends
y
Enteracurrenttimein24hournotation11:59
Enteraprevioustimein24hournotation11:58
Thetimeintervalbetween11:58and11:59
is0hoursand1minutes
Y/yrepeatszanyothercharacterends
y
Enteracurrenttimein24hournotation11:58
Enteraprevioustimein24hournotation11:59
1Previous*timeisinthepreviousday
Thetimeintervalbetween11:59and11:58
is23hoursand59minutes
Y/yrepeats,anyothercharacterends
y
Enteracurrenttimein24hournotation12:01
Enteraprevioustimein24hournotation12:00
Thetimeintervalbetween12:00and12:01
is0hoursand1minutes
Y/yrepeatszanyothercharacterends
y
Enteracurrenttimein24hournotation12:00
Enteraprevioustimein24hournotation12:01
'Previous1timeisinthepreviousday
Thetimeintervalbetween12:01and12:00
is23hoursand59minutes
Y/yrepeatszanyothercharacterends
n
Optional:TheMakeUtilityandMakefiles:
InordertocompilethefilesfromthisproblemIcouldhavetypedin
g++dtime.ccchl2prbl.add.ccchl2prbl.cc
eachtimeIwantedtocompileandlinkthefiles.Instead,Icreatedafile,called
makefile,orMakefile,whichisinterpretedbythemakeprogram.(Fmtalkingabout
Unix/Linuxmake,butBorlandandotherC++compilervendorshaveprogramswith
similarcapability,butsomewhatdifferentsyntaxforthemakefile.)
Themakeutilityenablesyoutosplitthecompilingofalargeprogramintotheautomatic
compilinganumberofsmallerpieces,thenautomaticallycallingthelinkprogramtohook
yourpiecestogether.
HereisthemakefileIusedtocompilethisprogram,completewiththedidactic
commentaryIhabituallyputintomyprogramsandutilities.
#File:makefile
#For:Chapter12Problem1.
#Use:tocreateyourexecutablezissuethecommand:
#
#make
#
#toremovethe.ofiles,issuethecommand:
#
#makeclean
chl2prbl:chl2prbl.ochl2prbl.add.odtime.odtime.h
g++-ochl2prblchl2prbl.ochl2prbl.add.odtime.o
#leadcharactermustbea<tab>.Withoutitzyougeta
#(notveryclear)errormessagefrommakesuchas
#Makefile:12:missingseparator.Stop.
#The12isthelinenumberwheretheerrorwasdetected.
#Thenextlinesareacleanupforuseaftercompiling.
clean:
rmchl2prbl.odtime.ochl2prbl.add.o
#leadcharactermustbea<tab>.Withoutityougetanerror
frommake
#Makefile:20:missingseparator.Stop.
#The20isthelinenumberwheretheerrorwasdetected.
IwilldiscusstheMakefilelinebyline.
NamethiseitherMakefileormakefile,andkeepitinthesamedirectorywithyour
C++codefiles.ThemakeprogramselectsmakefilebeforeMakefiletofollowinthe
compilingofaprogram.
Thelinesthatbeginwith#arecomments.Thelinesthatstartwithanidentifierfollowed
bya:,followedbyasequenceoffilenameswitha.oextension,arecalleddependency
lines.Theidentifierisjustalabel.Itcouldbecow:aswellaschllprbl:.Itsays
wehaveatask,andthattaskdependsonthesefileswith.oextensions,andanything
thesefilesdependon(inparticular,thefilenameuptothe.ofollowedby.cc.
becausethefilename.ccmustbecompiledtogetthefilename.o.)Ifanyofthese
filesarechanged,thecommandfollowingthislinewillbeexecutedtocreatethe.ofiles.
Inshort,thepresenceofeachofthe.ofilesinthislinetellsthemakeprogramthatitis
tolookfor.ccfileswiththesamenameuptothe.o,andcompilethesewiththe
compilernameonthenextline.
Thelinefollowingthetargetanddependencylistisacommandthattellsmakehowto
'make'theprogramwhosenameisgivenfollowingthe-ooption.Inthiscase,Bythe
way,theleadingcharacteronthisnextlineisa<tab>.Themakeprogramrequiresthat
thisbeatabcharacter.
Themakeprogram,unlessdirectednottodosowiththe-scommandlineoption,displays
eachcommanditexecutes.
15:46:37:-/AW$make
make:'chl2prbl1isuptodate.
Here,Ihadjustrunmake,andIranitagain.Themakeinterpreterlookedatthedates
andtimesonthefilesinthemakefileandfoundthatthecompiledversionswerealllater
thanthe.ccand.hfiles,soitconcludedthatthatacompilehadbeendonesincethesource
fileshadbeenedited.
15:46:39:-/AW$makeclean
rmchl2prbl.odtime.ochl2prbl.add.o
Makedidthecommandlinejustbelowtheclean:target.Thiskindoftargetiscalledafake
target,sinceitdoesnotcreateanyprograms.Itonlyexiststoenablethetaskonthenext
linetobedoneforus.
15:46:42:-/AW$make
g++-cchl2prbl.cc-ochl2prbl.o
g++-cchl2prbl.add.cc-ochl2prbl.add.o
g++-cdtime.cc-odtime.o
g++-ochl2prblchl2prbl.ochl2prbl.add.odtime.o
15:46:54:-/AW$15:46:37:-/AW$
Thistimemakelookedforandcompiledeachprogramfile,inturn,thenlinkedtheobject
filestogetherinthelastline.
Makecancompilepartofacollectionofsourcefiles,orallofthem.Oncethecompileis
done,installtheresultsofthecompilationinwhateverdirectoriesyouspecify.
Finally,g++andgcchavethefacilitytocreatecommandanddependencylinesthatcanbe
usedinamakefile.Themanualpageforgcc/g++willshedsomelighthere.
Reference:Makehasalanguageallitsownformakefiles.Agoodbeginningbookonthe
makefacilityistheO'ReillybookManagingProgramswilhMakementionedabove.
2.DoSelf-TestExercise5infulldetail.WritethecompleteADTclassincluding
interfaceandimplementationfiles.AlsowriteaprogramtotestyourADTclass.
Nosolutionisprovidedforthisexercise.
3-5.NoSolutionsProvided.
6.RationalNumberClass-separatecompilation
ExtendsChapter11Problem5touseseparatelycompiledfiles.
Thisisthetestprogram,theHeader,rational.h,containstheclassdefinitionsandthe
implementationareinchl2.6.cpp
Thisproblemrequiresimplementationofaclassforrationalnumberofthetype2/3.
Requirements:
classRational;
privatedata:intn,(fractionnumerator)andintd(fraction
denominator).
publicinterface:
constructors:
twointargs,toallowsettingrationaltoanylegalvalue
oneintarg,toconstructrationalswithargnumeratoranddenominator1.
overload<<and>>toallowwritingtoscreeninform325/430
andreadingitfromthekeyboardinthesameformat.
Notes:eithernordmaycontainanegativequantity.
Overload+-*/<<=>>===
Putdefinitionsinseparatefileforseparatecompilation
Testprogramrequired.
"Warning:*
VC++6,asdistributedWILLNOTCOMPILECODETHATUSESfriendsundersome
circumstances.YOUMUSTHAVEATLEASTPATCHLEVEL5INSTALLED.I
compiledthisusingthelatestVisualStudiopatchesatlevel.6.
//Filechl2.6.tst.cpp
//
//TestprogramforRationalclass
#include<iostream>
usingnamespacestd;
#include"rational.h"
int
mam()
cout<<"Testingdeclarations1'<<endl;
cout<<nRationalx,y(2),z(-5,-6),w(1,-3);'?<<endl;
Rationalx,y(2)zz(-5,-6),w(1z-3);
cout<<'?z=?'<<z<<",y="<<y<<",z="<<z
<<",w="<<w<<endl;
cout<<"Testing>>overloading:\nEnter"
<<"afractionintheformat"
<<"integer_numerator/integer_denominator"
<<endl;
cin>>x;
cout<<"Youenteredtheequivalentof:"<<x<<endl;
cout<<z<<"-("<<w<<")="<<z-w<<endl;
cout<<"Testingtheconstructorandnormalizationroutines:"<<endl;
y=Rational(-128z-48);
cout<<"y=Rational(-128,-48)outputsas"<<y<<endl;
y=Rational(-128,48);
cout<<"y=Rational(-128z48)outputsas?'<<y<<endl;
y=Rational(128,-48);
cout<<"y=Rational(128z-48)outputsas"<<y<<endl;
Rationala(1z1);
cout<<'?Rationala(1,1);aoutputsas:"<<a<<endl;
Rationalww=y*a;
cout<<y<<"*"<<a<<?'="<<ww<<endl;
w=Rational(25,9);
z=Rational(3,5);
cout<<"Testingarithmeticandrelational
<<"operatoroverloading"<<endl;
cout<<w<<ii*II<<z<<II_II<<w*z<<endl
cout<<w<<ii+II<<z<<fl_fl<<w+z<<endl
cout<<w<<II-II<<z<<fl_II<<w-z<<endl
cout<<wVVII/!l<<z<<11_II<<w/z<<endl
cout<<w<<<<<z<<*'=H<<(w<z)<<endl;
cout<<w<<<"<<w<<"="<<(w<w)<<endl;
cout<<w<<<="<<z<<<<(w<=z)<<endl;
cout<<w<<<="<<w<<<<(w<=w)<<endl;
cout<<w<<<<(w>z)<<endl;
cout<<w<<<<(w>w)<<endl;
cout<<w<<<<(w>=z)<<endl;
cout<<w<<<<(w>=w)<<endl;
w=Rational(-21z9);
z=Rational(3z5);
cout<<w<<<<w*z<<endl;
cout<<w<<<<w+z<<endl;
cout<<w<<<<w-z<<endl;
cout<<w<<<<w/z<<endl;
cout<<w<<<<(w<z)<<endl;
cout<<w<<<<(w<w)<<endl;
cout<<w<<<<(w<=z)<<endl;
cout<<w<<<<(w<=w)<<endl;
cout<<w<<<<(w>z)<<endl;
cout<<w<<<<(w>w)<<endl;
cout<<w<<<<(w>=z)<<endl;
cout<<w<<<<(w>=w)<<endl;
return0;
)
//endfilechl2.5.tst.cpp
/*
TypicalRun:
Testingdeclarations
Rationalx,y⑵,z(-5,-6),w(1z-3);
z=5/6zy=2/1zz=5/6zw=-1/3
Testing<<overloading:
Enterafractionintheformatinteger_numerator/integer_denominator
Youenteredtheequivalentof:9/7
5/6-(-1/3)=7/6
Testingtheconstructorandnormalizationroutines:
y=Rational(-128z-48)outputsas8/3
y=Rational(-128z48)outputsas-8/3
y=Rational(128,-48)outputsas-8/3
Rationala(1,1);aoutputsas:1/1
-8/3*1/1=-8/3
Testingarithmeticandrelationaloperatoroverloading
25/9*3/5=5/3
25/9+3/5=152/45
25/9-3/5=98/45
25/9/3/5=125/27
25/9v3/5=0
25/9<25/9=0
25/9<=3/5=0
25/9<=25/9=1
25/9>3/5=1
25/9>25/9=0
25/9>=3/5=1
25/9>=25/9=1
-7/3*3/5=-7/5
-7/3+3/5=-26/15
-7/3-3/5=-44/15
-7/3/3/5=-35/9
-7/3<3/5=1
-7/3<-7/3=0
-7/3<=3/5=1
-7/3<=-7/3=1
-7/3>3/5=0
-7/3>-7/3=0
-7/3>=3/5=0
-7/3>=-7/3=1
***************************************************************
IMPLEMENTATION
***************************************************************
/*
6
.RationalNumberClass--separatecompilation
ExtendsChapter11Problem5touseseparatelycompiledfiles.
THESEARETHEIMPLEMENTATIONS.TheHeader,rational.h,containsthe
classdefinitionsandthetestprogramisinchl2.6.tst.cpp
Thisproblemrequiresimplementationofaclassfor
rationalnumberofthetype2/3.
*/
//file:chl2.6.cpp
//ImplementationsofthemembersofclassRational.
//ForChapter12Problem6
#include<iostream>
#include<cstdlib>
usingnamespacestd;
#include"rational.h"
//privatemembersofclassRational
//intn;
//intd;
Rational::Rational(intnumer,intdenom)
(
normalize(numer,denom);
n=numer;
d=denom;
)
//setsdenominatorto1
Rational::Rational(intnumer):n(numer),d(1)
//Seetheinitializerappendix
(
//bodydeliberatelyempty
)
//setsnumeratorto0,denominatorto1
Rational::Rational():n(0)zd(1)
//seeinitializerappendix
(
//bodydeliberatelyempty
)
Rationaloperator+(constRational&left,
constRationaleright)
(
intnumer=left.n*right.d+left.d*right.n;
intdenom=left.d*right.d;
normalize(numer,denom);
Rationallocal(numer,denom);
returnlocal;
)
Rationaloperator-(constRationaleleft,
constRationaleright)
(
intnumer=left.n*right.d-left.d*right.n;
intdenom=left.d*right.d;
normalize(numer,denom);
Rationallocal(numer,denom);
returnlocal;
)
Rationaloperator*(constRationaleleft,
constRationaleright)
(
Rationalproduct;
intnumer=left.n*right.n;
intdenom=left.d*right.d;
normalize(numer,denom);
product=Rational(numer,denom);
returnproduct;
)
Rationaloperator/(constRationaleleft,
constRationaleright)
(
Rationalquotient;
intnumer=left.n*right.d;
intdenom=left.d*right.n;
normalize(numer,denom);
quotient=Rational(numer,denom);
returnquotient;
)
//precondition:allrelationaloperatorsrequired>0
booloperator<(constRationaleleft,
constRationaleright)
returnleft.n*right.d<right.n*left.d;
}
booloperator<=(constRationaleleftz
constRational&right)
(
returnleft.n*right.d<=right.n*left.d;
)
booloperator>(constRationaleleft,
constRationaleright)
(
returnleft.n*right.d>right.n*left.d;
)
booloperator>=(constRational&leftz
constRationaleright)
(
returnleft.n*right.d>=right.n*left.d;
)
booloperator==(constRationalaleft,
constRational&right)
(
returnleft.n*right.d==right.n*left.d;
)
//NOTE:
//Doinginputchangestheinputstreamstate.Thisseems
//obvious,butIhavestudentswhodidn1trealizethis.
//Thiscode,alongwithiostreamlibrary,goesintoan
//infiniteloopifyoumakeistreamaconstreference.There
//arenoerrormessages,onlyaninfiniteloop,involving
//thesingleparameterconstructor.Thiscanbequite
//disconcertingtothenaivestudent.
//
//Bottomline:ThefirstparamMUSTNOTbeconst.The
//secondoneiswritten,soitcannotbeconsteither.
istream&operator>>(istream&in_str,Rationaleright)
(
charch;
in_str>>right.n>>ch>>right.d;
if(ch!='/1)//properlydone,wewouldsetiostream
//state
{//tofailhereincaseoferror.
cout<<"badinputformatforoperator>>.Aborting!?'
<<endl;
exit(1);
)
normalize(right.n,right.d);
returninstr;
}
//This,liketheabovecase,alongwithg++iostream
//library,goesintoaninfiniteloopwhenyouattemptto
//makeostreamaconstreference.
//Therearenoerrormessages,onlyaninfiniteloop,
//involvingthesingleparameterconstructor.
//
//Bottomline:Thefirstparametershouldnotbeconst,the
//secondisreadonlyandshouldbeconst.
ostream&operator<<(ostream&out_strz
constRational&right)
(
out_str<<right.n<<'/'<<right.d;
returnout_str;
}一
//postcondition:returnvalueisgcdoftheabsolutevalues
//ofmandndependsonfunctionintabs(int);declaredin
//cstdlib
intgcd(intm,intn)
(
intt;
m=abs(m);//don'tcareaboutsigns.
n=abs(n);
if(n<m)//makem>=nsoalgorithmwillwork1
(
t=m;
m=n;
n=t;
)
intr;
r=m%n;
while(r!=0)
(
r=m%n;
m=n;
n=r;
)
returnm;
)
//postcondition:nandd(tobenumeratoranddenominator
//ofafraction)haveallcommonfactorsremoved,andd>0.
voidnormalize(int&n,int&d)
(
//removecommonfactors:
intg=gcd(n,d);
n=n/g;
d=d/g;
//fixthingssothatifthefractionis'negative,
//itisnthatcarriesthesign.Ifbothnanddare
//negativezeachismadepositive.
if(n>0&&d<0||n<0&&d<0)
(
n
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:進(jìn)一步全面深化改革推進(jìn)中國(guó)式現(xiàn)代化的學(xué)理性研究
- 課題申報(bào)參考:建設(shè)用地減量化的空間優(yōu)化效應(yīng)、機(jī)制與政策優(yōu)化研究
- 2025年erp沙盤(pán)模擬學(xué)習(xí)心得(3篇)
- 2025版投資協(xié)議補(bǔ)充協(xié)議:產(chǎn)業(yè)鏈整合投資合作補(bǔ)充協(xié)議3篇
- 2025年度個(gè)性化定制汽車(chē)租賃合同書(shū)4篇
- 二零二五版漫畫(huà)連載網(wǎng)絡(luò)平臺(tái)版權(quán)合作協(xié)議4篇
- 2025年汕尾貨車(chē)從業(yè)資格證考什么
- 2025年食堂承包經(jīng)營(yíng)食品安全風(fēng)險(xiǎn)評(píng)估與防控合同3篇
- 二零二五年度城市公交車(chē)輛掛靠經(jīng)營(yíng)許可合同4篇
- 二零二五年度廠房污水處理及排放合同匯編3篇
- 2025年溫州市城發(fā)集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 2025年中小學(xué)春節(jié)安全教育主題班會(huì)課件
- 2025版高考物理復(fù)習(xí)知識(shí)清單
- 除數(shù)是兩位數(shù)的除法練習(xí)題(84道)
- 2025年度安全檢查計(jì)劃
- 2024年度工作總結(jié)與計(jì)劃標(biāo)準(zhǔn)版本(2篇)
- 全球半導(dǎo)體測(cè)試探針行業(yè)市場(chǎng)研究報(bào)告2024
- 反走私課件完整版本
- 2024年注冊(cè)計(jì)量師-一級(jí)注冊(cè)計(jì)量師考試近5年真題附答案
- 【可行性報(bào)告】2023年電動(dòng)自行車(chē)行業(yè)項(xiàng)目可行性分析報(bào)告
- 臨床見(jiàn)習(xí)教案COPD地診療教案
評(píng)論
0/150
提交評(píng)論