Auttaisiko joku minua, koska en saa oikein tulostettua? Pitäisi saada tämä ohjelma tulostamaan posit.ja negat.lukujen lukumäärän sekä myös molempien keskiarvot.
Tässä ohjelmani:
#include
#include
void main()
{
int luku,pos=0,neg=0,possumma=0,negsumma=0;
int j;
for(j=0;j < 10; j)
{
printf("
Anna luku ");
scanf("%d",&luku);
if (luku>=0)
{
pos=pos ;
possumma=possumma;
}
printf("%d",pos);
if (luku
Tässä ohjelmani:
#include
#include
void main()
{
int luku,pos=0,neg=0,possumma=0,negsumma=0;
int j;
for(j=0;j < 10; j)
{
printf("
Anna luku ");
scanf("%d",&luku);
if (luku>=0)
{
pos=pos ;
possumma=possumma;
}
printf("%d",pos);
if (luku
Vastaukset 16
Vanhimmat
Kannattaisi varmaan kysellä tuolta, kun siellä on omat foorumitkin c :alle. millä ohjelmalla muuten kirjoitat?
Käytän Borlandia (4.52)
Tässäkö osoitteessa www.suomipelit.com voi saada vastauksia näihin kysymyksiin, en ole tuolla sivulla koskaan aiemmin käynyt.
Aikaisemmin olen kyllä saanut näihin kysymyksiin vastauksia täältä, sitä toivon myös nyt.
TÄSSÄ ON RATKAISU.
#include
#include
#include /* nyt käytössä cout */
int main()
{
int luku;
int pos=0,
neg=0,
possumma=0,
negsumma=0;
int poskarvo=0,
negkarvo=0;
int j;
for(j=0;j < 10;++j)
{
printf("Anna luku: ");
scanf("%d",&luku);
if (luku>=0)
{
pos=pos++;
possumma += luku;
}
else
{
neg=neg++;
negsumma += luku;
}
printf("Annoit luvun: %d
",luku);
}
poskarvo = possumma/pos;
negkarvo = negsumma/neg;
printf("Annoit %d positiivista lukua
",pos);
/*c++ tapa tulostaa */
cout
Kiitos neuvoista, en kylläkään saanut ohjelmaa toimimaan oikein.
En saanut tulostumaan positiivisten ja negatiivisten lukujen lukumäärää enkä myöskään niiden keskiarvoja. Ohjelma vain kysyy lukua ja tulostaa annetun luvun, mutta jättää lopun tulostuksen pois.
Jos luet koodia niin huomaat, että kysytään 10 lukua niinkuin alkuperäisessä koodissasi oli, lopussa kun for looppi loppuu, niin lasketaan negatiivisten ja positiivisten arvojen keskiarvo.
Jos esim. haluat oppia helposti c :aa suosittelen seuraavaa kirjaa:
http://www.bookplus.fi/product.php?isbn=0130384747&bpsid=af378bae5949212921782aa2851cefe0
Amazonista löytyy käyttäjien kommentteja ko. kirjalle:
http://www.amazon.com/exec/obidos/ASIN/0130384747/qid=1065041080/sr=2-1/ref=sr_2_1/103-9350763-1409410
Käytät -operaattoria väärin: "pos=pos " sijoittaa pos -muuttujaan pos -muuttujassa olevan arvon, jonka jälkeen se lisää pos -muuttujan sisältämää arvoa yhdellä. Se on siis sama kuin:
pos = pos;
pos = pos 1;
"possumma=possumma" ja "negsumma=negsumma" eivät myöskään ole kovin mielekkäitä.
Tässäpä esimerkki miten keskiarvon voi laskea.. joudut tosin tekemään itse muutokset että laskee erikseen positiivisten ja negatiivisten keskiarvon.
#include
void main()
{
int i, luku, lkm=0, summa=0;
for(i=0;i
Kiitos ohjeista.
Laitoin ohjelmaan positiiviset ja negatiiviset luvut, mutta joku tässä vain on pielessä, koska ilmoittaa kahta virhettä, mutta en ymmärrä mitä ne on? Muuten tarkoittaako tuo lkm++, että tämä muuttuja++ laskee lukujen lukumäärän? Ja summa+ lause laskeeko se lukujen yhteenlasketun summan?
Laitan tähän sen minun koodini:
#include
int main()
{
int i, luku, lkm=0, negsum=0, possum=0;
for(i=0;i=0)
{
lkm++;
possum+=luku
printf("summa: %d ", possum);
printf("lukumäärä: %d ", lkm);
printf("keskiarvo: %f ",(float)possum/lkm);
}
if (luku
"lkm++" lisää muuttujan lkm arvoa yhdellä.
"possum+=luku" lisää muuttujan possum arvoa muuttujan luku arvolla(Eli on sama kuin "possum = possum + luku").
"(float)" lausekkeen edessä tarkoittaa sitä että seuraava luku muutetaan(castataan) float-tyyppiseksi eli siis desimaaliseksi. Printf lausekkeessa muotoilu %f tarkoittaa että printf odottaa tähän paikalle float -tyyppistä tietoa.
Virheet tulevat puuttuvista ;-merkeistä.
Varoitus tulee koska main -funktio on int tyyppiä, mutta ei kuitenkaan palauta mitään. Lisää main -funktion loppuun "return 0;"
Muutoin ohjelma kyllä toimii muttei aivan odotetusti.. vielä pieni vika on mutta etköhän sen hoksaa :)
Olin ollut näköjään huolimaton,kun olin jättänyt noita puolipisteitä pois. Se pieni vika taitaa olla tuossa tulostusmuodossa luulisin....
Olen koko illan tehnyt tuota ohjelmaa, varmaan iltapäivästä lähtien, alkaa jo olla puutuneet paikat.
Annoit minulle tosi hyviä vastauksia, ymmärrän nyt paljon paremmin nuo kysymäni termit.
Taidan huomenna jatkaa tuon ohjelman viilausta...alkaa jo väsyttää...
Kiitos taas kerran, nimittäin olet aikaisemminkin auttanut minua näissä ongelmissa.
Nyt minulla vasta välähti, että laitoin siihen negatiivisille luvuille lukumäärään oman muuttujan ja positiivisille luvuille lukumäärään myös oman muuttujan eli nyt se ohjelma vasta toimii niinkuin pitääkin. Tätä asiaa varmaankin tarkoitit, sillä hoksaamisella. Pitipä noin yksinkertaista asiaa miettiä kauan...taitaa jo niin väsyttää, ettei ajatukset enää pelaa...
Jos kyseessä on C :lla tehtävä juttu, niin mikset tulosta cout:lla printf:n sijaan ?
Lisäksi kahden ifin käyttö on turhaa, sillä minkä tahansa luvun tapauksessa päädytään vain toiseen iffiin, joten parempi ja selvempi tyyli on
if (luku>=0) {
...
} else {
...
}
Kolmanneksi, lausekkeen lkm ; voi siirtää iffien yläpuolelle, sillä tämä sama lauseke ajetaan muutenkin molemmissa ifin haarassa.
Olen täysin aloittelija näissä jutuissa,joten en vielä ole käyttänyt tuota cout-termiä, vaikkakin olen ihmetellyt kaikkia oppikirjoja, joissa sitä on käytetty sekä myöskin cin-termiä, vastaako samaa kuin scanf? Olen yhdellä kurssilla, jossa olemme vain käyttäneet näitä printf- ja scanf- termejä.
Kiitos neuvoista, ne ovat aina tärkeitä. Opin taas lisää asioita. On muuten kauhean kiva, että on tällainen keskustelusivu, jossa voi kysyä apua näistä ohjelmointiongelmista muilta.
Varsinkin tällaiselle aloittelijalle se on tosi tärkeää....
Sä olisit niinkuin päässyt jo tosi helpolla, jos olisit lukenut ton postaamani ratkaisun jossa homma on hoidettu, ja hommaisit jostain oppikirjan, ennenkuin tulet alkeita kyselemään.
Anteeksi, etten kokeillut ratkaisuasi niinkuin kerroit, olisin päässyt kyllä monta kertaa helpommalla, eikä aikaa olisi mennyt koko iltaa.
Oppikirjojakin minulla on, mutta ei niistä aina tahdo löytää oikeaa ratkaisua.
Kiitos vielä neuvoistasi, yritän seuraavalla kerralla toimia paremmin.
C :n cin:llä voidaan lukea syötettä, vähän C:n scanf:n tapaan. Lisää tietoa vaikka osoitteista http://www.cplusplus.com/ref/ (kohta iostream library) ja http://www.cppreference.com/ .
Keijo vastasikin jo aika hyvin noihin pääkohtiin.
Mutta pakko myöntää että en kyllä ymmärrä miten tuon ohjelman voi saada edes noin toimimaan. Sen verta käsittämätöntä logiikkaa tuossa on käytetty.
Ehh? Ei vain käsitä.
Pitkällisen mielessä suoritetun debuggauksen jälkeen ymmärsin tuon. Dodi, itsestäänselvää, mutta luulin tuon tekevän jotain ihan muuta.
Edes Apuva henkilö ei ehkä ole huomannut(Ainakaan siltä se ei näytä), että tuo tulostaa joka luupissa 2 lukua _peräkkäin_, positiiviset luvut ja negatiiviset. eli 34 meinaa kolmea positiivista ja nejää negatiivista syötettä. Lue ne keijon ohjeet esim tuosta = merkistä ja operaattorista myös.
Sitten se toinen onkelma, eli keskiarvo lasketaan luku / kuinka-monesta-luvusta-se-koostuu
eli vaikka 1 2 3 4 / 4 saadaan noiden lukujen keskiarvo, eliii possumma / pos.
Luin tämän viestin läpi, aika sillisalaattia mutta menkööt nyt.