Nimi:
TLP533 Lausekielinen ohjelmointi 1
HYV5SN
Vastaa tähän paperiin. Kirjoita vastauksesi selkeästi tekstaamalla ja sisentäen ohjelmalohkot.
1. Tee C-kielinen ohjelma, joka kysyy käyttäjältä lompakossa olevan rahamäärän ja lihapiirakan hinnan. Ohjelma tutkii, onko käyttäjällä varaa ostaa lihapiirakka. Jos on, ohjelma ilmoittaa, kuinka paljon lompakkoon jää vielä rahaa. Muuten ohjelma kehottaa käyttäjää paastoamaan. Käytä vain kahta muuttujaa. Älä vähennä
lompakon sisältöä, ellet voi ostaa lihapiirakkaa. (6 p)
#include <stdio.h>
void main(void) {
float rahaa;
float hinta;
printf("Paljonko on rahaa ? ");
scanf("%f",&rahaa);
printf("Paljonko lihis maksaa ?");
scanf("%f",&hinta);
if (rahaa<hinta) {
printf("Ei tarpeeksi fyffee ! Paastoa.\n");
} else {
printf("Ostit lihiksen. Rahaa jää %.f eeroa.\n",rahaa- hinta);
} }
2. Merkkijonojen käsittely C-kielellä. (6 p)
a. Kirjoita C-kielinen ohjelma, joka kysyy ja tulostaa merkkijonon. (2 p) b. Miten ohjelmassa saadaan selville merkkijonon pituus ? (1 p)
c. Miten saadaan selville isojen / pienten kirjainten lukumäärä ? (1 p) d. Miten kaikki merkit muutetaan isoiksi / pieniksi kirjaimiksi ? (1 p) e. Miten merkit tulostetaan käänteisessä järjestyksessä ? (1 p)
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void main(void) {
int n,i;
int isot=0,pienet=0;
char isoMjono[20]="",pieniMjono[20]="";
//a)
char mjono[20];
printf("Anna merkkijono ");
gets(mjono);
//b)
n=strlen(mjono);
//c)
for (i=0;i<n;i++) {
if (isupper(mjono[i]))
isot++;
if (islower(mjono[i]))
pienet++;
}
//d)
for (i=0;i<n;i++) {
isoMjono[i]=toupper(mjono[i]);
pieniMjono[i]=tolower(mjono[i]);
}
//e
for (i=n-1;i>=0;i--) {
printf("%c",mjono[i]);
}
printf("Pituus on %d\n",n);
printf("Isoja %d \n",isot);
printf("Pieniä %d \n",pienet);
printf("Isona %s\n",isoMjono);
printf("Pienenä %s\n",pieniMjono);
}
3. Ohessa on eräs harjoituksissa käsitelty C-kielinen ohjelma. Ohjelmaan on lipsahtanut useitakin virheitä. Etsi niin monta kuin pystyt, jokainen oikea virhe tuottaa 1 pisteen (maksimissaan 6 p).
#include <stdio.h>
#include <string.h>
int SyotaLuku(void);
int LaskeYhteen(int,int);
void Tulosta(int);
int main(void) {
int x,y,z;
x=SyotaLuku();
y=SyotaLuku();
z=LaskeYhteen(x,y);
Tulosta(z);
return 0;
}
int SyotaLuku(void) {
int luku;
printf("Anna luku\n”);
scanf("%d",&luku);
return luku;
}
int LaskeYhteen(int x,int y) {
return x+y;
}
void Tulosta(int z) {
printf("Summa on\n",z);
}
4. Kirjoita C-kielinen ohjelma, joka laskee sylinterin tilavuuden, kun käyttäjä antaa pohjan säteen r ja sylinterin korkeuden h . Sylinterin tilavuus lasketaan kaavalla
h r V = π
2Toteuta ohjelma siten, että se toimii silmukassa eli tilavuuksia lasketaan niin kauan kuin säde ja korkeus molemmat ovat positiivisia ja laskenta loppuu kun jompikumpi tai molemmat ovat negatiivisia. Kirjoita tietojen syöttö, tilavuuden laskenta ja tulostus omiksi funktioikseen. (6 p)
#include <stdio.h>
#define pii 3.141592
float syotto(char []);
float tilavuus(float,float);
void tulostus(float);
void main(void) {
float r,h,V;
do {
r=syotto("Anna sade ");
h=syotto("Anna korkeus ");
V=tilavuus(r,h);
tulostus(V);
} while (r > 0 && h > 0);
}
float syotto(char mjono[]) {
float luku;
printf("%s ",mjono);
scanf("%f",&luku);
return(luku);
}
float tilavuus(float r,float h) {
return(pii*r*r*h);
}
void tulostus(float V) {
printf("Tilavuus on %.2f\n",V);
}