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.