Laboratorium programowania w C++, Asembler

[ Pobierz całość w formacie PDF ]
Jacek Czekaj,
Data ostatniej modyfikacji: 30.IX.2009.
Instytut Matematyki,
Uniwersytet l¡ski
LaboratoriumprogramowaniawC++
0.Literatura
[1] Brian W. Kernighan, Dennis M. Ritchie,
J¦zykANSIC
, Wydawnictwa Naukowo-Techniczne.
[2] Bjarne Stroustrup,
J¦zykC++
, Wydawnictwa Naukowo-Techniczne.
1.Podstawy¶powtórkazC
Zadanie1.1.
Opisa¢ działanie poni»szego programu.
#include
<
iostream
>
usingnamespace
std;
int
main(
int
argc,
char
**argv){
int
i;
cout<<
"Wpisz0lub1:"
;
cin>>i;
switch
(i){
case
0:cout<<
"Wpisanoliczbe0."
;
case
1:cout<<
"Wpisanoliczbe1.
\
n"
;
default
:cout<<
"Wpisanoliczberoznaod0i1.
\
n"
;
}
return
0;
}
Zadanie1.2.
Opisa¢ działanie poni»szego programu.
#include
<
iostream
>
#include
<
cstring
>
usingnamespace
std;
int
main(
int
argc,
char
**argv){
union
rekord{
char
kategoriaWojskowa;
char
nazwiskoPanienskie[256];
}r;
r.kategoriaWojskowa=’E’;
strcpy(r.nazwiskoPanienskie,
"Nowak"
);
cout<<r.nazwiskoPanienskie<<endl<<r.kategoriaWojskowa;
return
0;
}
Zadanie1.3.
Opisa¢ działanie poni»szego programu.
#include
<
iostream
>
usingnamespace
std;
int
main(
int
argc,
char
**argv){
1
constint
i=123;
constint
*p;
cout<<i<<endl;
p=&i;
*p=997;
cout<<i<<endl;
return
0;
}
Zadanie1.4.
Wykorzystuj¡c wska¹niki, wypisa¢ warto±ci wszystkich bajtów, które składaj¡ si¦ na wewn¦trzn¡
reprezentacj¦ liczby typu
int
. Wykona¢ to samo zadanie wykorzystuj¡c unie.
Przykładowe rozwi¡zanie:
#include
<
iostream
>
usingnamespace
std;
int
main(
int
argc,
char
**argv){
int
n;
cout<<
"Podajjakasliczbecalkowita:"
;
cin>>n;
union
{
int
n;
unsignedchar
c[
sizeof
(
int
)];
}u;
u.n=n;
for
(
int
i=0;i<
sizeof
(
int
);i++)
cout<<u.c[i]<<
","
;
cout<<endl;
unsignedchar
*c=(
unsignedchar
*)&n;
for
(i=0;i<
sizeof
(
int
);i++)
cout<<*(c+i)<<
","
;
return
0;
}
Zadanie1.5.
Przeanalizowa¢ działanie poni»szego programu.
#include
<
iostream
>
#defineMAX
_
X10
#defineMAX
_
Y15
usingnamespace
std;
int
main(
int
argc,
char
**argv){
int
**tab=
newint
*[MAX_Y];
tab[0]=
newint
[MAX_X*MAX_X];
for
(
int
y=1;y<MAX_Y;y++)
tab[y]=tab[y-1]+MAX_X;
for
(
int
y=0;y<MAX_Y;y++)
for
(
int
x=0;x<MAX_X;x++)
tab[y][x]=x*y;
for
(
int
y=0;y<MAX_Y;y++){
for
(
int
x=0;x<MAX_X;x++)
2
cout<<tab[y][x]<<
","
;
cout<<endl;
}
delete
[]tab[0];
delete
[]tab;
return
0;
}
Zadanie1.6.
Napisz program, który zapyta u»ytkownika o imi¦ i nazwisko, po czym napisze „Witam Pani¡!”, albo
„Witam Pana!”, w zale»no±ci od płci u»ytkownika.
Zadanie1.7.
Napisz program, który zapyta u»ytkownika o jedgo numer PESEL i numer albumu, po czym napisze
„Witam Pani¡!”, albo „Witam Pana!”, w zale»no±ci od płci u»ytkownika.
Zadanie1.8.
Napisa¢ program obliczaj¡cy median¦ z podanych liczb.
Zadanie1.9.
Napisa¢ program, który obliczy i wypisze iloczyn macierzy o warto±ciach i wymiarach wprowadzonych
przez u»ytkownika.
2.Strumieniewej±cia/wyj±cia
Zadanie2.1.
Przeanalizowa¢ działanie poni»szego programu.
#include
<
iostream
>
#include
<
fstream
>
usingnamespace
std;
int
main(
int
argc,
char
**argv)
{
//TESTSTRUMIENIWYJSCIOWYCH
cout<<
"standardowystrumienwyjsciowyznakow
\
n"
;
cerr<<
"standardowyniebuforowanystrumienwyjsciowykomunikatowobledach
\
n"
;
clog<<
"standardowystrumienwyjsciowykomunikatowobledach
\
n"
;
wcout<<
"szerokistrumienodpowiadajacycout
\
n"
;
wcerr<<
"szerokistrumienodpowiadajacycerr
\
n"
;
wcerr<<
"szerokistrumienodpowiadajacyclog
\
n"
;
//wypisywanieliczbcalkowitych
cout<<
"
\
n"
<<123
<<
","
<<showpos<<123;
cout.unsetf(ios_base::showpoint|ios_base::showpos);
cout<<
","
<<123
<<
","
<<showpos<<123;
cout.unsetf(ios_base::showpoint|ios_base::showpos);
cout<<
"
\
n"
<<oct<<64
<<
","
<<showbase<<64<<endl;
cout<<
"
\
n"
<<hex<<64
<<
","
<<showbase<<64
<<
","
<<uppercase<<64<<endl;
cout.unsetf(ios_base::hex|ios_base::showbase|ios_base::uppercase);
//wypisywaniewartosciboole-owkich
cout<<
"true="
<<true<<
",false="
<<false<<endl;
cout<<boolalpha<<
"true="
<<true<<
",false="
<<false<<endl;
cout<<
"true="
<<true<<
",false="
<<false<<endl;
3
//wypisywanieliczbzmiennopozycyjnych
cout<<
"
\
nformatdomyslny:"
<<1234.56789;
//zostaniezaokraglone,anieobciete!!!
cout.setf(ios_base::scientific,ios_base::floatfield);
//maksymalnie2argumenty
cout<<
"
\
nformatnaukowy:"
<<1234.56789;
cout.setf(ios_base::scientific,ios_base::floatfield);
cout<<
"
\
njszczerazformatnaukowy:"
<<uppercase<<1234.56789;
cout.setf(ios_base::fixed,ios_base::floatfield);
cout<<
"
\
nformatstaly:"
<<1234.56789;
cout.setf(ios_base::floatfield);
cout<<
"
\
nznowuformatdomyslny:"
<<1234.56789;
cout.precision(8);
cout<<
"
\
nzmianadomyslnejprecyzji(bylo6):"
<<1234.56789<<
","
<<1234.56789;
cout.precision(4);
cout<<
"
\
nkolejnazmiana:"
<<1234.56789<<
","
<<1234.56789;
//polawyjsciowe
cout<<
"
\
n"
;
cout.width(4);
cout<<
"ab"
;
cout.width(4);
cout<<
"
\
n"
;
cout<<
"ab"
;
//terazniebedziespacjiwiodacych!!!
cout.width(4);
cout.fill(’0’);
cout<<endl<<
"ab"
;
cout.width(4);
cout.fill(’0’);
cout<<endl<<12<<’,’<<13;
//niewypisze0012000,0013tylko0012:13!!!
cout.fill(’0’);
cout.width(6);
cout.setf(ios_base::left,ios_base::adjustfield);
cout<<endl<<-12;
cout.width(6);
cout.setf(ios_base::right,ios_base::adjustfield);
cout<<endl<<-12;
cout.width(6);
cout.setf(ios_base::internal,ios_base::adjustfield);
cout<<endl<<-12;
//wypisywaniewskaznikow
int
i;
int
*p=
newint
;
cout<<
"
\
nlokalnie:"
<<&i<<
",pamiecwolna:"
<<p;
//TESTSTRUMIENIWEJSCIOWYCH
char
s[4];
cout<<
"
\
nPROSZENATERMINALUWPISACNAPISMAJACYWIECEJNIZTRZYZNAKI
\
n"
;
cin>>s;
//standardowystrumienwejsciowyznakow
cout<<s<<endl;
cout<<
"
\
nPROSZEZNOWUNATERMINALUWPISACNAPISMAJACYWIECEJNIZTRZYZNAKI
\
n"
;
cin.width(4);
//nastepnecinwczytaconajwyzejtrzyznakiidodanakoniec’
\
0’
cin>>s;
cout<<s<<endl;
cout<<
"
\
nPROSZEJESZCZERAZNATERMINALUWPISACNAPISMAJACYWIECEJNIZTRZYZNAKI
\
n"
;
cin.get(s,4,’\0’);
cout<<s<<endl;
4
//TESTSTRUMIENIPLIKOWYCH
ifstreamfin(
"streams
_
test.cpp"
,ios_base::binary);
ofstreamfout(
"˜streams
_
test.cpp"
,ios_base::binary);
unsignedchar
c;
fin>>noskipws;
while
(!fin.eof()){
fin>>c;
fout<<c;
}
fin.close();
fout.close();
//NAKONIECCOS,NACOTRZEBAUWAZAC!!!
int
x=0;
cout<<x<<++x<<++x<<std::endl;
//221zamiast012
return
0;
}
Zadanie2.2.
Napisa¢ program rysuj¡cy „choink¦” o zadanej przez u»ytkownika wysoko±ci. Np. choinka o wysoko±ci
4 powinna wygl¡da¢ nast¦puj¡co:
*
*
***
*
***
*****
*
***
*****
*******
Przykładowe rozwi¡zanie:
#include
<
iostream
>
usingnamespace
std;
int
main(
int
argc,
char
**argv){
int
liczbaSegmentow;
cout<<
"Podajliczbe,,segmentow’’choinki:"
;
cin>>liczbaSegmentow;
for
(
int
segment=1;segment<=liczbaSegmentow;segment++) {
for
(
int
liniaSegmentu=1;liniaSegmentu<=segment;liniaSegmentu++){
for
(
int
spacja=1;spacja<=liczbaSegmentow-liniaSegmentu;spacja++)
cout<<’’;
for
(
int
gwiazdka=1;gwiazdka<=2*liniaSegmentu-1;gwiazdka++)
cout<<’*’;
cout<<endl;
}
}
return
0;
}
Zadanie2.3.
Napisa¢ program wypełniaj¡cy „po spirali” tablic¦ kwadratow¡ o zadanej wielko±ci boku.
Przykładowe rozwi¡zanie:
#include
<
iostream
>
usingnamespace
std;
int
main(
int
argc,
char
**argv){
5
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • jausten.xlx.pl