Johdatus ohjelmointiin 3. välikoe 27.4.2007
HYV6SN
Tehtävien ratkaisut
//3. välikoe tehtävä 1 //
//Kirjoita ohjelma, jossa täytetään ja tulostetaan 100 //kokonaisluvun taulukko funktioissa
#include <stdio.h>
void tayta(int *taulukko);
void tulosta(int *taulukko);
const int KOKO=100;
int main(void) {
int taulukko[KOKO];
tayta(taulukko);
tulosta(taulukko);
return 0;
}
void tayta(int *taulukko) {
int i;
for (i=0;i<KOKO;i++) {
printf("luku ?");
scanf("%d",&taulukko[i]);
} }
void tulosta(int *taulukko) {
int i;
for (i=0;i<KOKO;i++) {
printf("%d ",*taulukko);
taulukko++;
} }
//3. välikoe tehtävä 2 //
//Kirjoita ohjelma, joka tulostaa tiedostoon oman nimesi.
//Muista tarkistaa tiedoston avaus
#include <stdio.h>
int main(void) {
FILE *tiedosto;
tiedosto=fopen("nimi.txt","w");
if (tiedosto==NULL) {
perror("Virhe: ");
return -1;
}
fprintf(tiedosto,"Vihannes Jorolainen");
fclose(tiedosto);
return 0;
}
//3. välikoe tehtävä 3 //
//Tiedostossa luvut.txt on 100 kokonaislukua. Tee ohjelma, //joka tulostaa tiedostossa olevat luvut ohjelmaikkunaan
#include <stdio.h>
const int KOKO=100;
int main(void) {
int i,luku;
FILE *tiedosto;
tiedosto=fopen("luvut.txt","r");
if (tiedosto==NULL) {
perror("Virhe: ");
return -1;
}
for (i=0;i<KOKO;i++)
{
fscanf(tiedosto,"%d",&luku);
printf("%d ",luku);
}
fclose(tiedosto);
return 0;
}
//3. välikoe Tehtävä 4
//Tee ohjelma, jossa on 2 funktiota. Funktiossa kysy, //ohjelma kysyy 200 piskelijan nimen ja arvosanan //tietuetaulukkoon. Funktiossa kiitettävät, ohjelma //tulostaa kiitettävien arvosanojen lukumäärän
#include <stdio.h>
struct opiskelija {
char nimi[80];
int arvosana;
};
const int KOKO=3;
void kysy(struct opiskelija *op);
void kiitettavat(struct opiskelija *op);
int main(void) {
struct opiskelija op[KOKO];
kysy(op);
kiitettavat(op);
return 0;
}
void kysy(struct opiskelija *op) {
int i;
for (i=0;i<KOKO;i++) {
fflush(stdin);
printf("Nimi ?");
gets(op->nimi);//tai scanf("%s",&op->nimi);
printf("arvosana ?");
scanf("%d",&op->arvosana);
op++;
} }
void kiitettavat(struct opiskelija *op) {
int i,lkm=0;
for (i=0;i<KOKO;i++) {
if (op->arvosana==5) lkm++;
op++;
}
printf("Kiitettäviä %d kpl.\n",lkm);
}