Version 8 (modified by 16 years ago) (diff) | ,
---|
Vaje programiranja v jeziku C ¶
Pravilnost vaših nalog lahko preverite z Ocenjevalcem nalog
Prvi dve vaji, ki smo jih naredili v laboratoriju, je potrebno preveriti in morebiti popraviti, da delujeta pravilno.
Vprašanja za utrjevanje:
- Zakaj je potrebno napisati vrstico
#include <stdio.h>
- Kako uporabljamo komentarje?
- Zakaj je zamikanje stavkov pomembno? Ali prevajalnik upošteva zamikanje?
- Koliko decimalk hrani tip
int, float
indouble
? - Kakšna je razlika pri prireditvi konstante spremenljivkama c in d
float c = 3/2; float d = 3.0/2;
- Kaj je funkcija podpičja v stavku? Naštej kje vse ga je potrebno uporabiti.
- Koliko je numerična vrednost naslednjega izraza
int i = 5 < 6;
- Pod katerimi pogoji naslednja koda izpiše voda? Kako bi jasneje napisali napisane pogojne stavke z uporabo zavitih oklepajev in primernejšega zamikanja?
if(temp < 0) printf("led\n"); else if (temp < 100) printf("voda\n"); else printf("para\n");
- Kaj izpiše naslednja koda?
int x = 3; if (x) printf("da\n"); else printf("ne\n");
- Kaj bo izpisala naslednja koda?
int i; for(i = 0; i < 3; i++) printf("a\n"); printf("b\n"); printf("c\n");
- Koliko elementov vsebuje polje oz. vektor a? Kateri je prvi element? Kateri je zadnji?
int a[5];
- Kaj je narobe v naslednjem izvlečku kode?
int a[5]; for(i = 1; i <= 5; i = i + 1) a[i] = 0;
- Kateri so štirje pomembni deli funkcije? Katere tri mora klicoči program poznati?
- Kakšna je razlika med prefix in postfix operatorjem ++. Kakšna je razlika med naslednjima izrazoma:
i = i++; i = ++i;
- Kaj je narobe z naslednjim predprocesorskim izrazom?
#define N 10;
- Če smo na primer definirali makro
#define SQR(x) x*x
Zakaj nam potem izraz
y = 1/SQR(x);
ne deluje pravilno? Kako bi morali pravilno napisati makro SQR(x), da bi delal tudi za izraze
y = 1/SQR(1-x);
- Kakšna je razlika v uporabnosti med i in J, ki sta napisana kot
int i = 10; #define J 10
Napotek: Poskusi napisati J = 2
ali int a[i]
.
- Zakaj je potrebno v
scanf()
argumente za formatnim stavkom pisati z &, priprintf()
pa tega ne smemo? - Koliko spomina klic {{{malloc(10)}} alocira? Kaj moramo napisati če želimo alocirati spomin za 10 spremenljivk tipa float?
- Kaj mislimo z enakostjo med polji in kazalci v C-ju?
- Če je
p
kazalec, kaj potem pomenip[i]
? - Kako odpiramo datoteko za branje podatkov iz nje? Kaj se spremeni, če bi datoteko želeli odpreti za pisanje?
Naloge ¶
Naloge je potrebno shraniti z uporabo SVN ukazov in preveriti njihovo delovanje.
vaja1 ¶
Napiši program, ki zahteva vnos dveh celih številk in nato izpiše njihovo vsoto.
vaja2 ¶
Gaussovo kvadratura naj vpraša za meji integriranja funkcije f(x) = 2x4- x3 +1 in rezultat izpiše na zaslon.
vaja3 ¶
Izdelaj program ki izpiše naslednje zanke:
for(i = 0; i < 10; i = i + 2) printf("%d\n", i); for(i = 100; i >= 0; i = i - 7) printf("%d\n", i); for(i = 1; i <= 10; i = i + 1) printf("%d\n", i); for(i = 2; i < 100; i = i * 2) printf("%d\n", i);
Razjasni si, kako te zanke delujejo in program popravi tako, da bodo v zanki uporabljeni operatorji +=, -=, *=
vaja4 ¶
Napiši program ki izpiše ta trikotnik:
* ** *** **** ***** ****** ******* ******** ********* **********
Ne uporabi desetih printf() ampak uporabi zanko.
for(i = 0; i < 10; i = i + 1) { /* Več stavkov */ /* gre lahko tukaj */ }
vaja5 ¶
Izpiši v zanki cela števila od 1 do 10 in njihove kvadrate.
1 1 2 4 3 9 ... 10 100
vaja6 ¶
Stavek for je prav zaprav, okrajšava za stavek while.
Predelaj program, ki izpiše naslednjo zanko:
for(i = 0; i < 10; i = i + 1) printf("i je %d\n", i);
z uporabo stavka while, ki ima naslednjo obliko
while(pogoj) { /* vpiši stavek za povečanje števca in izpis */ }
Napotek: V primeru da se nam program obesi v neskončni zanki, ga prekinemo s pritiskom na crtl-C
vaja10 ¶
Izračunaj faktor Učinkovite Rabe Energije, tako kot ga podaja Elektro Ljubljana. Dobavitelj v ceniku za vsak razred porabe določi faktor cene energije, ki je osnova za izračun faktorja URE po naslednji enačbi:
URE = ∑(Ei FCE i)/Epovprečna dnevna poraba
Tabela razredov porabe in pripadajočimi faktorji cene električne energije ima 5 razredov s progresivno stopnjo FCE
Na primer URE za 8kWh dnevne porabe izračunamo kot URE=(6*1.0-(8-6)*1.1)/8
TabelaURE Faktorjev učinkovite rabe energije za posamezno povprečno dnevno porabo, se računajo samo za celoštevilčni del povprečne dnevne porabe. Izdelaj program, ki za vnešeno realno povprečno porabo izpiše faktor URE v formatu, kot je v pred izračunani tabeli.
Napotek: Za izračun celega dela realnega števila uporabite funkcijo floor.
vaja11 ¶
Ceno za uporabo omrežij določa Akt o določitvi metodologije za obračunavanje omrežnine in metodologije za določitev omrežnine in kriterijih za ugotavljanje upravičenih stroškov za elektroenergetska omrežja, (Ur.l. RS 121/2005) in je sestavljena iz:
- stalnega mesečnega prispevka za moč, ki zanaša 0,66179 €/kW/mesec
- cene za prenešeno delovno energijo, ki znaša:
- v primeru dvotarifnega načina merjenja porabe električne energije:
VT: 0,03731 €/kWh MT: 0,02924 €/kWh
- v primeru enotarifnega načina merjenja porabe električne energije:
ET: 0,03462 €/kWh
- v primeru dvotarifnega načina merjenja porabe električne energije:
Izdelaj program, ki uporabnik vpraša po predvidenem mesečnem številu kWh VT in NT in izpiše ceno za prenešeno delovno energijo v primeru dvotarifnega in v primeru enotarfnega načina merjenja porabe električne energije. Uporabniku naj glede na vnešena podatka program svetuje, kateri način je zanj najbolj primeren.
vaja12 ¶
Če ste izdelali vajo 10 in 11, potem združite programa v vaji 12 tako, da izračunate kako bo z elektriko po novem sistemu z URE faktorjem.
Obračun porabljene električne energije na podlagi izračunanega faktorja URE se izvede tako, da se pomnoži količina električne energije v posamezni tarifi, s ceno električne energije v tej tarifi in z izračunanim odjemalčefim faktorjem URE. Upoštevajte, da ima mesec 31 dni. Program pa naj tako kot v vaji 11 vpraša za število kWh v visoki in nizki tarifi, izpiše posamezne cene ter svetuje najprimernejši način tarifiranja.