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
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ä =)
using-deklaraatio pois.
iostream stdio.h:ksi.
coutit printf():ksi, endl:t '\n':ksi.
Ja siinähän se olikin.
Niin ja lisäksi cin -> scanf("%d", &arvo);
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") ;
}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.
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.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 :)
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;
}muuta
printf("Arvosanojen keskiarvo: %d", keskiarvo) ;->
printf("Arvosanojen keskiarvo: %lf\n", keskiarvo) ;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;
}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ää.
Anteeksi offtopic mutta Aloittelija2 voisi vihdoin opetella käyttämään kooditageja.
Jep. Mä opettelen... Nyt toimii koodi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.