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.