Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Valuuttamuunnin

lmms [19.08.2019 22:36:40]

#

Moikka! Täällä ihan ensimmäisellä koodaus kurssilla oleva mimmi. Pari ekaa tehtävää c-ohjelmointikurssilta sain tehtyä, mutta nyt iski hätä! En saa koodia toimimaan, kun syötetty markka (kokonaisluku) pitäisi muuttaa euroiksi (Euron kerroin on 5.94573).

Tehtvänanto kirjoitti:

Tee ohjelma, joka pyytää käyttäjältä markkamäärän ja muuntaa syötetyn markkamäärän euroiksi. Lopuksi ohjelma tulostaa markkamäärän euroina kahden desimaalin tarkkuudella näytölle. Euron kerroin on 5.94573.

Vihje:
Tarvitset kolme muuttujaa: yhden kertoimelle, toisen markoille ja kolmannen euroille. Tarvittavan jakolaskun voit tehdä ”/” merkin avulla.

Example output:
Syötä jokin markkamäärä:6.08
Markat euroina: 1.02

Tässä vaiheessa olen saanut alun (alku tulostuu oikein, mutta markat euroina onväärin):

#include <stdio.h>

int main()
{
	/*määritellään markan eurokerroin*/
	int markka;
	float euronkerroin = 5.94573;

	/*pyydetään markkamäärä*/
	printf("Syötä jokin markkamäärä:");
	scanf("%d",&markka);

	/*tulostetaan vastaus kahden desimaalin tarkkuudella*/
	scanf("%f", &euronkerroin);
	printf("Markat euroina: %.2f",&euronkerroin);


	return 0;
}

Vinkkejä kaipailisin siis, erityisesti siihen miten saan valuutanmuutoksen toteutettua?

Grez [20.08.2019 14:47:00]

#

No vaikuttaako tuo koodisi omasta mielestäsi järkevältä?

- Esitetä kysymys: "Syötä jokin markkamäärä:"
- Tallenna käyttäjän 1. syöte muuttujaan markka
- Tallenna käyttäjän 2. syöte muuttujaan euronkerroin (korvaten ohjelmassa jo olleen arvon 5.94573)
- Tulosta teksti "Markat euroina" ja muuttuja euronkerroin kahden desimaalin tarkkuudella.

(Mielestäni ohjelman ei edes pitäisi pyytää käyttäjältä syötettä kahteen kertaan)

Oletko mielestäsi tehnyt jossain kohti ohjelmaa jakolaskun eli noudattanut annettua vinkkiä:

Tehtävänanto kirjoitti:

Tarvittavan jakolaskun voit tehdä / merkin avulla.

lmms [20.08.2019 16:14:06]

#

syötetty markkamäärä jaetaan euronkertoimella. En tajua miten sen koodaan.

"%d"/5.94573 ??

Grez [20.08.2019 17:23:16]

#

Näyttää olevan syytä palata ihan perusteisiin. https://fi.wikibooks.org/wiki/C/Aritmeettiset_operaatiot

"%d" on printf ja scanf -tyylisten funktioiden merkintätapa desimaalimuotoiselle
kokonaisluvulle ja sitä ei ole syytä käyttää laskutoimitusten yhteydessä.

Eli jos haluat laskea muuttujan markka jaettuna muuttujalla euronkerroin, niin se kirjoitetaan C-kielellä:

markka / euronkerroin

Ja jos haluat sijoittaa tuloksen esim. muuttujaan euro, niin:

euro = markka / euronkerroin;

(Tässä vaiheessa tietenkin muuttujan euro on syytä olla määriteltynä)

groovyb [30.09.2019 22:50:30]

#

Grez kirjoitti:

euro = markka / euronkerroin;

Kertoimen on tietysti oltava negatiivinen jos halutaan oikea euromäärä jakolaskulla markka / Kerroin.

(Tämä oli varmaan kyllä ihan typo koska koko ketjun aikana ei ole ollut kuin positiivisia kertoimia käytössä)

Grez [01.10.2019 08:34:57]

#

groovyb kirjoitti:

Kertoimen on tietysti oltava negatiivinen jos halutaan oikea euromäärä jakolaskulla markka / Kerroin.

En nyt ihan pääse jyvälle mitä ajat takaa. Jos kerroin olisi negatiivinen (esim. -5.94573) niin silloin 100 markkaa muuttuisi negatiivisiksi euroiksi (n. -16,82 €)

Yleensä valuuttamuunnoksissa ei kuitenkaan haluta vaihtaa etumerkkiä.

Vastaus

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

Tietoa sivustosta