jelppiä tehtävään (c-kieli)

Löytyiskö joltain apua tällaiseen tehtävään, olen saanut jonkinlaisen koodin kasaan jo mutta jotain on pielessä kun ei täydellisesti vielä toimi... kyseessä siis c-kieli.

Tee ohjelma, joka kysyy oppilaiden koearvosanoja (kokonaisluvut 4-10 käytössä) ja laskee syötettyjen arvosanojen keskiarvon. Ohjelman tulee ottaa vastaan arvosanoja, kunnes arvosanojen syöttö lopetetaan negatiivisella kokonaisluvulla. Lopuksi ohjelma tulostaa arvosanojen lukumäärän sekä lasketun keskiarvon, joka tulostetaan kahden desimaalin tarkkuudella.

Vihje:
Voit laatia ohjelman joko while- tai do...while-lauseen avulla.

Esimerkkitulostus
Ohjelma laskee syötettyjen arvosanojen keskiarvon.
Lopetus negatiivisella kokonaisluvulla.
Anna arvosana (4-10):4
Anna arvosana (4-10):5
Anna arvosana (4-10):6
Anna arvosana (4-10):9
Anna arvosana (4-10):7
Anna arvosana (4-10):-1
Ohjelmaan syötetty 5 arvosanaa.
Arvosanojen keskiarvo: 6.20
Ilmianna
Jaa

18 Vastausta



Vaikea on muuten sanoa mikä on vialla.
Voit käyttää esim. http://paste.servut.us/
Ilmianna
Jaa
Niin kierro siis missä ongelma ilmenee. Ilman tuota tietoa on hiukan hankala lähteä neuvomaan. Todennäköisesti ongelma on kuitenkin jossakin muuttujien määrityksissä.

Sinulla on varmaan jotakin tällaista:

//Slmukka anteeksi kirjoitan c en muista c:n syntaksia
1. #include
using namespace std;
int main(){
int kpl;
double syote;
while(syote > 0){
cout > syote;
if(syote < 0)
break;
}
else{
summa = syote;
kpl ;
}
}

keskiarvo = summa / kpl;
}

auttaako yhtään tämä on kirjoitettu työpaikalla ilman kääntäjään, mutta jotenkin noin voisi mennä?
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
Huijareita...
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
Miksi edes olet ottanut C-kielen kurssin, jos et viitsi etkä halua opetella. Tämä on täysin perus juttu. :/ Epäilisin, että tämä olisi perusrakenteiden käyttöharjoitus.

Pseudokoodina tekisin näin:

(pääfunktio, muuttujanesittelyt, alun outputit)
WHILE syöte > 0 DO
WRITE_OUPUT("Anna arvosana (4-10);
READ_INPUT(syote);
summa = syote;
lukumaara ;
ENDWHILE

keskiarvo = summa/lukumaara;

WRITE_OUTPUT("Keskiarvo on %i", keskiarvo);
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
Voit helposti tulostaa 2-desimaalin tarkkuudella pelkästään integerien avulla ilman tuota double-desimaaliluku määritystä kertomalla arvosanat vaikka 100:lla ja jaat tuloksen sitten tulostaessa desimaaliosiin erikseen.

Joo hauskoja tehtäviä varmasti ovat alkutehtävät. Kun ei mennä vielä Windowsin laitteistoajureiden koodaamiseen.
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
Mielenkiintoinen yhteensattuma...

VIRTUAALIAMK:N C-KIELEN KURSSI 6 TEHTÄVÄ 3 MENEE TÄLLÄIN !!!

Keskiarvon laskeminen ja silmukkarakenne ohjelmointitehtävä 3/3
Tee ohjelma, joka kysyy oppilaiden koearvosanoja (kokonaisluvut 4-10 käytössä) ja laskee syötettyjen arvosanojen keskiarvon. Ohjelman tulee ottaa vastaan arvosanoja, kunnes arvosanojen syöttö lopetetaan negatiivisella kokonaisluvulla. Lopuksi ohjelma tulostaa arvosanojen lukumäärän sekä lasketun keskiarvon, joka tulostetaan kahden desimaalin tarkkuudella.

Vihje:
Voit laatia ohjelman joko while- tai do...while-lauseen avulla.
Esimerkkitulostus

Ohjelma laskee syötettyjen arvosanojen keskiarvon.
Lopetus negatiivisella kokonaisluvulla.
Anna arvosana (4-10):4
Anna arvosana (4-10):5
Anna arvosana (4-10):6
Anna arvosana (4-10):9
Anna arvosana (4-10):7
Anna arvosana (4-10):-1
Ohjelmaan syötetty 5 arvosanaa.
Arvosanojen keskiarvo: 6.20

OUCH !!!
Ilmianna
Jaa
#include
#include

int main()
{
int luku, m = 0, s = 0, lkm = 0;
float karvo=0.00;

printf("Ohjelma laskee syötettyjen arvosanojen keskiarvon.\n");
printf("Lopetus negatiivisella kokonaisluvulla.\n");

do {

printf("Anna arvosana (4-10):");
scanf("%d", &luku);
fflush(stdin);

if(luku > 0) {
// m = luku ;

lkm = luku 1;

karvo = (float)lkm / (float)m;

} else if(luku< 0) {

printf("Ohjelmaan syötetty %d arvosanaa.\n", lkm);
printf("Arvosanojen keskiarvo: %.2f", karvo);

}
} while(luku> 0);

return 0;
}

Mikä täs kusee eniten koska laskee rivit ja niitä on 9 laskennan mukaan...
ja millä saa negatiivisen pois laskuista ?

Näyttää olevan sama tehtävä kuin mitä tässä on kyselty...
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
#include "stdio.h"

int main(void)
{
int luvut[100];
int luku, j, i = 0;
double keskiarvo = 0;
printf("Ohjelma laskee sy\x94tettyjen arvosanojen keskiarvon\nLopetus negatiivisella kokonaisluvulla.\n");
do
{
printf("Anna arvosana (4-10):");
scanf("%d", &luku);
if(luku > 3 && luku < 11)
{
luvut[i] = luku;
i ;
}
if(luku < 0)
{
for(j = 0, luku = 0;j < i; j )
{
keskiarvo = luvut[j];
}
keskiarvo /= i;
break;
}
}while(luku > 0 && i < 100);
printf("Ohjelmaan sy\x94tetty %d arvosanaa.\nArvosanojen keskiarvo on: %.2f\n", i, keskiarvo);
return 0;
}
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
En tie helv*** johtuuko tästä blondiudesta mut en saa tota toimiin mitenkään...

Jos koitan yllä olevan mallin mukaisesti niin arvosanakysely looppi loppuu ekan numeron kyselyn jälkeen vaikka numero on positiivinen...
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
Mutta jos sinulla on C-kääntäjä niin voit todeta, että koodi toimii niin kuin sen pitääkin.
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
Kuinkas sitten jos oppilaita onkin enemmän kuin sata... vaikka 1000 toki voin muuttaa lukuarvon 1000:n mutta jos lähdetään oletuksesta että ei voida määritellä monenko opiskelijan arvosteluja halutaan laskea...
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
#include "stdio.h"

int main(void){
int luvut;
int luku, i = 0;
double keskiarvo = 0;
printf("Ohjelma laskee sy\x94tettyjen arvosanojen keskiarvon\nLopetus negatiivisella kokonaisluvulla.\n");
do
{
printf("Anna arvosana (4-10):");
scanf("%d", &luku);
if(luku > 3 && luku < 11){
luvut = luku;
i ;
}
if(luku < 0){
keskiarvo = (luvut/i);
break;
}
}while(luku > 0);
printf("Ohjelmaan sy\x94tetty %d arvosanaa.\nArvosanojen keskiarvo on: %.2f\n", i, keskiarvo);
return 0;
}
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
Eli siis kun lukuarvo on välillä 4 ja 10 niin tämä i lisää itseensä yhden ?

Ongelma oli siinä koska en meinannut tajuta että pelkkä mitätön i osaa lisätä tuon arvon ilman mitään erikoisuutta...
Taas viisastuin vähä...
Ilmianna
Jaa
if(luku > 3 && luku < 11)

eikös toi toimi myös

if( luku >= 4 && luku
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
Makuasia.
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
Tässä toimiva koodi. Itse sain keskiarvoksi vain 6.00 jatkuvasti, syystä etten ymmärtänyt lisätä "yhteensä" kohtaa ensin floattiin, jolloin sen jakaminen tulosten määrällä ei anna kuin kokonaislukuja.

#include
int main() {

int arvosana = 0, lukumaara = 0;
float yhteensa = 0, keskiarvo = 0;

printf("Ohjelma laskee syötettyjen arvosanojen keskiarvon.\nLopetus negatiivisella kokonaisluvulla.\n");
do {
printf("Anna arvosana (4-10):");
scanf("%d", &arvosana);

if (arvosana > 3 && arvosana < 11) {
lukumaara ;
yhteensa = yhteensa arvosana; }

else if (arvosana < 3 || arvosana > 10) {
keskiarvo = yhteensa / lukumaara;
printf("Ohjelmaan syötetty %d arvosanaa.\nArvosanojen keskiarvo: %.2f", lukumaara, keskiarvo); }
}
while (arvosana >= 0);

return 0; }
Kommentoi
Ilmianna
Jaa
2 VASTAUSTA:
ja lisääthän includen jälkeen stdio.h :n vielä koska suomi24 ei sitä halunnut sisällyttää.
Kommentoi
Ilmianna
Jaa
ei toimi 15.8.2016
Kommentoi
Ilmianna
Jaa
+Lisää kommentti

Vastaa alkuperäiseen viestiin

jelppiä tehtävään (c-kieli)

Löytyiskö joltain apua tällaiseen tehtävään, olen saanut jonkinlaisen koodin kasaan jo mutta jotain on pielessä kun ei täydellisesti vielä toimi... kyseessä siis c-kieli.

Tee ohjelma, joka kysyy oppilaiden koearvosanoja (kokonaisluvut 4-10 käytössä) ja laskee syötettyjen arvosanojen keskiarvon. Ohjelman tulee ottaa vastaan arvosanoja, kunnes arvosanojen syöttö lopetetaan negatiivisella kokonaisluvulla. Lopuksi ohjelma tulostaa arvosanojen lukumäärän sekä lasketun keskiarvon, joka tulostetaan kahden desimaalin tarkkuudella.

Vihje:
Voit laatia ohjelman joko while- tai do...while-lauseen avulla.

Esimerkkitulostus
Ohjelma laskee syötettyjen arvosanojen keskiarvon.
Lopetus negatiivisella kokonaisluvulla.
Anna arvosana (4-10):4
Anna arvosana (4-10):5
Anna arvosana (4-10):6
Anna arvosana (4-10):9
Anna arvosana (4-10):7
Anna arvosana (4-10):-1
Ohjelmaan syötetty 5 arvosanaa.
Arvosanojen keskiarvo: 6.20

5000 merkkiä jäljellä

Peruuta