




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CNCA 048-2023礦用防爆永磁同步伺服電動機通用技術(shù)條件
- 文安消費廣場景觀設(shè)計方案
- 書籍承印合同樣本6篇
- 公司委托合同書范本5篇
- 健康促進知識課件
- 2025二手安置房買賣合同5篇
- 車間衛(wèi)生標(biāo)準(zhǔn)化管理體系
- 2025遼寧開放大學(xué)輔導(dǎo)員考試試題及答案
- T/ZHCA 010-2020染發(fā)類化妝品皮膚變態(tài)反應(yīng)體外測試方法人源細(xì)胞系激活試驗法
- 2025焦作職工醫(yī)學(xué)院輔導(dǎo)員考試試題及答案
- 我是小小講解員博物館演講稿
- 糧安工程糧庫智能化升級改造 投標(biāo)方案(技術(shù)標(biāo))
- 吉塔行星模擬課程
- 2023上海虹口區(qū)初三語文一模作文寫作指導(dǎo)及范文:這也是我的舞臺
- 《反本能 如何對抗你的習(xí)以為?!纷x書筆記思維導(dǎo)圖PPT模板下載
- 西南交11春學(xué)期《模擬電子技術(shù)A》離線作業(yè)
- 施工單位平安工地考核評價表(標(biāo)準(zhǔn))
- JJF 1855-2020純度標(biāo)準(zhǔn)物質(zhì)定值計量技術(shù)規(guī)范有機物純度標(biāo)準(zhǔn)物質(zhì)
- GB/T 35194-2017土方機械非公路機械傳動寬體自卸車技術(shù)條件
- GB 6245-2006消防泵
- SMT通用作業(yè)指導(dǎo)書
評論
0/150
提交評論