Tällainen on toinen järkeilyn alla oleva koodi:
Alla esitettävälle C-ohjelmalle syötetään kokonaislukuja komentoriviargumentteina. Saatuaan tarvittavat arvot, ohjelma kutsuu aliohjelmaa ”laske_ja_tulosta”, jonka tehtävänä on ottaa vastaan pääohjelman välittämä taulukko ja sen koko, tulostaa luvut näytölle, sekä tulostaa lukujen summa näytölle.
#include <stdio.h> #include <stdlib.h> void laske_ja_tulosta(int *, int); int main(int argc, char *argv[]) { int x, summa=0, koko=5, taulukko[5]; if(argc == 6){ /* Ohjelman nimi ja komentoriviltä annetut parametrit */ for(x=0;x<argc-1;x++){ taulukko[x] = atoi(argv[x+1]); } laske_ja_tulosta(taulukko, koko); }else{ printf("Virheellinen määrä komentoriviargumentteja\n"); } return 0; }
Sinun tehtävänäsi on kirjoittaa aliohjelma "laske_ja_tulosta". Esimerkkitulosteesta näet, kuinka luvut tulostetaan. Pääohjelma pitää sisällään asioita, joita emme käsittele tällä kurssilla, mutta sinun tarvitseekin tehdä vain pääohjelman apuna toimiva aliohjelma.
Esimerkkitulostus
Taulukon alkiot: 23 54 1 83 47
Summa = 208
Tällaista koodia olen saanut aikaiseksi, mutta kun ei vaan aukene ni ei aukene. Hieman helppiä jos vois saada.
laske_ja_tulosta(taulukko, koko) { int kokosumma; kokosumma == taulukko[0]+taulukko[1]+taulukko[2]+taulukko[3]+taulukko[4]; /*Laskee taulukon yhteen */ printf("Taulukon alkiot: %i %i %i %i %i \n",taulukko[0],taulukko[1],taulukko[2],taulukko[3],taulukko[4]); /*Tulostaa taulukon sisällön */ prinft("Summa = %i\n" ,kokosumma); /*Tulostaa summan */ }
Sinun pitää määritellä funktion palautustyyppi ja parametrit. (Esimerkiksi int laske_yhteen(int luku1, int luku2))
==-operaattorilla ei sijoiteta, vaan sillä kokeillaan yhtäsuuruutta.
=-operaattorilla sijoitetaan.
Ja tosiaan, jos tuota koko-parametriä aiotaan käyttää mihinkään, tarvitaan looppia.
Ainakin ensimmäisenä huomaisin että laske_ja_tulosta-funktioltasi puuttuu palautusarvon ja parametrien tyypit sekä käytät ==-operaattoria (vertailu) =-operaattorin (asetus) sijaan.
Ja luuppikaan ei olisi pahitteeksi.
Läksyt on muuten tarkoitus tehdä itse.
Edit: Hidas
Funktiosi määrittely on ensinnäkin puutteellinen. Muuta se muotoon
void laske_ja_tulosta(int * taulukko, int koko)
lainaus:
kokosumma == taulukko[0]+taulukko[1]+taulukko[2]+taulukko[3]
+taulukko[4]; /*Laskee taulukon yhteen */
Tuo == on vertailuoperaattori. Käytä = sijoittamiseen.
Noilla muutoksilla nykyinen koodi taitaa toimia, tosin siinä tuolla "koko"-parametrillä ei tehdä mitään, vaan oletat että taulukon alkioita on viisi.
En nyt tiedä pitäisikö tehdä valmista koodia, mutta menköön.
Jokaisen kuuluisi kyllä tehdä omat kurssitehtävänsä.
void laske_ja_tulosta(int * taulukko, int koko) { int i = 0; //looppi kasvatus int summa = 0; //summa printf("Taulukon alkiot: "); //käydään läpi koko taulukko for (i = 0; i < koko; i++) { // kasvatetaan summaa taulukon alkiolla summa += taulukko[i]; // tulostetaan taulukon alkio printf("%i ", taulukko[i]); } // tulostetaan lopuksi summa printf("\nSumma = %i\n", summa); }
Toivottavasti en nyt puhunut mitään väärää tietoa.
EDIT: Hitain
EDIT2: KimmoK yritä tehdä tästä lähtien itse tehtäväsi, äläkä pastea tehtävänantoa suoraan tänne. Apua kyllä voi toki pyytää.
Aihe on jo aika vanha, joten et voi enää vastata siihen.