Mittuniversitetet
Institutionen för informationsteknologi och medier
Nayeb Maleki 148853
Tentamen
Introduktion till programmering i C++
Dag:
Tid:
2007-04-21
5 timmar
-
Inga hjälpmedel
Skriv tydligt !
Börja varje uppgift som kräver kod på nytt blad och skriv bara
på ena sidan av papperet !
Numrera varje blad och ange kodnummer!
-
Tentamen omfattar
50 poäng
För Godkänd krävs
25 poäng
För Väl Godkänd krävs
38 poäng
Lycka till !!!!!
1.
(5p)
Vad blir utskriften av följande program
#include <iostream>
using namespace std;
// Returnerar det tecken som är pos steg ifrån symbol
char nastaTecken(char symbol, int pos);
int main()
{
int positioner[5] = {2,-15,9,6,-19};
char tecken = 'R';
int i;
for( i = 0 ; i < 5 ; i++)
{
tecken = nastaTecken(tecken,positioner[i]);
cout << tecken;
}
cout << endl;
return 0;
}
char nastaTecken(char symbol, int pos)
{
return symbol + pos;
}
Till din hjälp finns ett utdrag ur ascii-tabellen
2
2.
(7p)
Skriv ett program som låter användaren skriva in namnet på en text fil. Programmet skall
skriva ut filens innehåll samt hur många rader den innehåller.
3.
(8p)
Omvandla nedanstående if-else satser till en switch-sats
if (1 <= dag && dag <= 7)
{
if (dag== 1 || dag == 7)
cout << "veckslut";
else
cout << "veckodag";
}
else
cout << "Inmatningen var inte gilltig";
4.
(4p)
Rita ett enkelt flödesdiagram som beskriver följande programflöde:
Användaren skall uppmanas att skriva in siffran 1 för ”Stor kopp kaffe”eller siffran 2 för
”Liten kopp kaffe”, därefter ska programmet ta emot valet. Därefter skall användaren
uppmanans att välja 1 för ”Mörkrostat kaffe” och 2 för ”Mellanrostat kaffe”, och
användarens val tas emot. Om en felaktig siffra matas in på någon fråga skall
användaren få en felutskrift ”Du har matat in ett felaktigt val, försök igen”, varefter
personen får mata in en siffra igen (detta skall pågå tills giltig siffra matas in). Efter att
personen valt ”stor eller liten kopp”, samt ”mörkrostat eller mellanrostat kaffe” skall en
utskrift ”Ditt kaffe bryggs, det är klart om 15 sekunder” skrivas ut varefter programmet
skall avslutas.
3
6.
(4p)
Vad blir utskriften från detta program
#include <iostream>
using namespace std;
int main()
{
char tab[]="zqbenrättnsknuldårewv";
int i=0;
for (i=5;i<16;i++)
{
if(i<10||i>13)
cout << tab[i];
if(i==8)
cout << endl;
}
cout<<tab[i];
cout<<endl;
return 0;
}
7.
(8p)
Du skall skriva ett program som låter användaren skriva in ett valfritt antal tecken (dock
max 100). Därefter ska programmet skriva ut alla tecken baklänges och ange vilket
tecken som förekom flest gånger. Uppdelning i funktioner skall göras.
Kör-exempel:
Trallala vad detta är kul
luk rä atted dav alallarT
a förekom flest gånger!
8.
(4p)
Givet variablerna int tal; char tecken; Skriv ett uttryck som motsvarar följande villkor:
a.
b.
c.
d.
9.
tal är mindre än eller lika med 7 men större än 1
tecken ligger mellan 'a' och 'z' men är inte 'n'
tal ligger mellan 1 och 9, men är inte 5
tal ligger inte mellan 2 och 5
(6p)
Jag läste en gång om tal som kallas för ”Armstrong tal”. För att avgöra om ett tal är ett
”Armstrong tal” eller ej, gör man på detta sätt:
a) Ta siffersumman av talet
b) Ta sifferprodukten av talet
4
Om siffersumman multiplicerad med sifferprodukten är samma som talet själv, ja då
mina vänner är detta ett Armstrong tal!
Nu skall du skriva ett litet program med minst en funktion som hittar ett antal sådana tal
åt mig.
10.
(4p)
Skriv kod för detta dataflödesdiagram.
5
Okommenterad syntax i c++.
while (villkor)
block
for(initiering ; villkor ; uppräkning)
block
do
block
while (villkor);
if(villkor)
block
else if(villkor)
block
else
block
switch (vaiabelnamn)
{
case 1: block
break;
case 2: block
break;
osv
default:
}
Filhantering finns i fstream
ifstream interntfilnamn;
ofstream interntfilnamn;
interntfilnamn.open("filnamn",ios::typ);
filtillägg ios::app
interntfilnamn.read((char *)&inpost,sizeof(posttyp));
interntfilnamn.write((char *)&utpost,sizeof(posttyp));
interntfilnamn close();
interntfilnamn.eof();
interntfilnamn.is_open();
get(c) hämtar från strömmen
put(c) skriver till strömmen
6
Strängfunktioner finns i cstring
strcpy(s1ination,sändare);
strcat(s1ination,sändare);
strcmp(sträng1,sträng2);
resultat: <0 om sträng1 < sträng2, = 0 om strängarna lika , > 0 om sträng1 > sträng2
strstr(sträng1,sträng2) söker efter sträng2 i sträng1 */
strlen(sträng)
Slump mm som finns i cstdlib
exit(int);
rand();
srand((unsigned) time(& time_t))
Några matematiska funktioner och konstanter som finns i cmath
sqrt(x),abs(x),fabs(x), sin(x), cos(x), tan(x), asin(x),
atan(x), acos(x), sinh(x), cosh(x),tanh(x)
exp(x), log(x), log10(x), pow(x,y)
Tecken funktioner som finns i cctype
islower(c)
isupper(c)
isalpha(c)
isdigit(c)
toupper(c)
tolower(c)
Datatyper i ctime
time_t
7