Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++-ohjelma C-kieliseksi

Sivun loppuun

Aloittelija2 [16.12.2004 09:57:08]

#

Sanokaas miten tämän saa muutettua c-kieliseksi versioksi? Älkääkä kysykö miksi minä haluan niin tehdä...

#include <iostream>
using namespace std;

int main()
{

int arvo = 0;
int kaikki = 0;
int maara = 0;
double keskiarvo = 0;

cout << "Ohjelma laskee koearvosanojen keskiarvon." << endl;
cout << "Lukujen syöttämisen lopetus negatiivisella luvulla." <<endl;

while(arvo >= 0){

  cout << "Anna arvosana (4-10)";
  cin >> arvo;

if(arvo >=4){

kaikki += arvo;
}
if(arvo >=4){

maara++;
}
}

keskiarvo = (double)kaikki / (double)maara;

cout << "Ohjelmaan syötetty " << maara << " arvosanaa." << endl;
cout << "Arvosanojen keskiarvo:" << keskiarvo << endl;
}

Mod. edit: kooditagit

sooda [16.12.2004 10:16:36]

#

Miksi? :P No kooditagit puuttuu niin valitan siitä. Iffit on kummasti, voisit tehdä vaikka näin

if (arvo >= 4) {
    kaikki += arvo;
    maara++;
}

Jos iffin jälkeen on vain yksi lause niin aaltosulkuja ei tarvita (tyyliin if (ploot) teejotain();

No asiaan. Voisit lukea c-oppaankin, siinä selitetään printf:n käyttö. Vinkki: muuta coutit printf:ksi. Jää itellesikin jotain tekemistä =)

Deewiant [16.12.2004 18:40:13]

#

using-deklaraatio pois.
iostream stdio.h:ksi.
coutit printf():ksi, endl:t '\n':ksi.

Ja siinähän se olikin.

FooBat [16.12.2004 20:23:17]

#

Niin ja lisäksi cin -> scanf("%d", &arvo);

Aloittelija2 [17.12.2004 11:39:16]

#

Nyt tämä tulostaa kaikkea omaa. Mikä tässä on vielä vikana?

#include <stdio.h>


int main(void)
{

int arvo = 0;
int kaikki = 0;
int maara = 0;
double keskiarvo = 0;

printf("Ohjelma laskee koearvosanojen keskiarvon.");
printf("Lukujen syöttämisen lopetus negatiivisella luvulla.");

while(arvo >= 0){

  printf("Anna arvosana (4-10)");
  scanf("%d", &arvo);

if (arvo >= 4) {
    kaikki += arvo;
    maara++;
}


}

keskiarvo = (double)kaikki / (double)maara;

printf("Ohjelmaan syötetty, %d, arvosanaa.");
printf("Arvosanojen keskiarvo:,%d") ;
}

rndprogy [17.12.2004 11:52:50]

#

muuta nuo allimmaiset rivit

printf("Ohjelmaan syötetty, %i, arvosanaa.\n", maara);
printf("Arvosanojen keskiarvo: %d\n", keskiarvo);

Ja olisi hyvä myös lisätä Return 0; loppuun ettei tule warningeja.

sqwiik [17.12.2004 11:53:00]

#

Tulostelee kaikkea kivaa siksi, ettet anna tulastamiselle tarpeeksi parametreja :) printf-funktiolle pitää antaa paramereina tulostettavat luvut, ja jos et anna niitä niin funktio hakee arvot jostain minne aurinko ei paista.

//Muuta nämä
printf("Ohjelmaan syötetty, %d, arvosanaa.");
printf("Arvosanojen keskiarvo:,%d") ;
//Tällaisiksi
printf("Ohjelmaan syötetty %i arvosanaa.", maara);
printf("Arvosanojen keskiarvo: %d", keskiarvo) ;
//double-muuttujan viittaus on %d ja integerin %i.

FooBat [17.12.2004 11:56:35]

#

printf:n perään '\n'-merkki rivinvaihdoksi.

printf("Ohjelma laskee koearvosanojen keskiarvon.\n");

%d printf:ssä merkkaa vain paikan johon joku (integer) muuttuja tulostetaan, arvon siihen joudut antamaan lisäparametrissa.

printf("Ohjelmaan syötetty %d arvosanaa.\n", maara);

Edit: Olipas täällä taas nopeita vastaajia.
Korjauksena noihin edellisiin. %d on kyllä aina ollut integerin kuvaaja, %f float:in ja %lf doublen. Kysy vaikka Googlelta :)

Aloittelija2 [17.12.2004 12:15:56]

#

Nyt se on tässä mallissa. Mutta se ei osaa laskea keskiarvoa. Aina vastaus on nolla. Mikä mättää?

#include <stdio.h>


int main(void)
{

int arvo = 0;
int kaikki = 0;
int maara = 0;
double keskiarvo = 0;

printf("Ohjelma laskee koearvosanojen keskiarvon.\n");
printf("Lukujen syöttämisen lopetus negatiivisella luvulla.");

while(arvo >= 0){

  printf("Anna arvosana (4-10)");
  scanf("%i", &arvo);

if (arvo >= 4) {
    kaikki += arvo;
    maara++;
}


}

keskiarvo = (double)kaikki / (double)maara;

printf("Ohjelmaan syötetty %d arvosanaa.\n", maara);
printf("Arvosanojen keskiarvo: %d", keskiarvo) ;

return 0;

}

FooBat [17.12.2004 12:26:21]

#

muuta

printf("Arvosanojen keskiarvo: %d", keskiarvo) ;

->

printf("Arvosanojen keskiarvo: %lf\n", keskiarvo) ;

Aloittelija2 [17.12.2004 12:33:55]

#

Nyt se toimii melkein. Se tulostaa tosin nyt sen negatiivisen luvun millä tuo ohjelma lopetetaan. Mistä se nyt sitten johtuu?

#include <stdio.h>


int main(void)
{

int arvo = 0;
int kaikki = 0;
int maara = 0;
double keskiarvo = 0;

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

while(arvo >= 0){

  printf("Anna arvosana (4-10):");
  scanf("%i", &arvo);

if (arvo >= 4) {
    kaikki += arvo;
    maara++;
}


}

keskiarvo = kaikki / maara;

printf("Ohjelmaan syötetty %i arvosanaa.\n", maara);
printf("Arvosanojen keskiarvo: %d", arvo) ;

return 0;

}

FooBat [17.12.2004 12:42:17]

#

Aloittelija2 kirjoitti:

Se tulostaa tosin nyt sen negatiivisen luvun millä tuo ohjelma lopetetaan. Mistä se nyt sitten johtuu?
...
printf("Arvosanojen keskiarvo: %d", arvo) ;

Se johtuu ihan yksinkertaisesti siitä, että tulostat sen viimeisen ARVO:n tuossa lopussa etkä keskiarvoa. Muuta nyt vaan suosiolla se viimeinen %d -> %lf ja arvo:n paikalle keskiarvo niin pelittää.

rndprogy [17.12.2004 12:45:31]

#

Anteeksi offtopic mutta Aloittelija2 voisi vihdoin opetella käyttämään kooditageja.

Aloittelija2 [17.12.2004 12:50:39]

#

Jep. Mä opettelen... Nyt toimii koodi.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta