Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C, switch-lause

Neepi [16.12.2019 09:47:26]

#

Tällä kertaa ongelmana switch-lauseen käyttö opiskelutehtävässä. Tulostus pitäisi olla alla olevan mukainen, mutta koodissani on varmaan useassakin kohtaa vikaa. Saisiko taas apuja?

1: vähennyslasku
2: yhteenlasku
3: kertolasku
Valitse toiminto:3
Anna eka luku:3
Anna toka luku:54
3*54=162

#include <stdio.h>

int main(void)
{
	int numero, vahennyslasku, yhteenlasku, kertolasku, eka_luku, toka_luku;

	printf("1: vähennyslasku: \n2: yhteenlasku: \n3: kertolasku: \nValitse toiminto: \n");
	scanf("%d", &numero);

	switch(numero) {
	case 1:
		{
			vahennyslasku;

		}
	case 2:
		{
			yhteenlasku;

		}
	case 3:
		{
			kertolasku;

		}

	default:
		printf("Antamasi syöte on arvoalueen ulkopuolella.\n");
                break;
	}


	printf("Anna eka luku: \n");
	scanf("%d", &eka_luku);
	printf("Anna toka luku: ");
	scanf("%d", &toka_luku);


{

	yhteenlasku = eka_luku + toka_luku;
	vahennyslasku = eka_luku - toka_luku;
	kertolasku = eka_luku * toka_luku;



	printf("%d %d %d", eka_luku, numero, toka_luku);

	}

	return 0;
}

Teuro [16.12.2019 10:59:56]

#

Switch-rakenteesi ei tuota muuta kuin tekstin "Antamasi syöte on arvoalueen ulkopuolella". Tämä johtuu siitä, ettei yhdenkään kohdan kohdalla ole break avainsanaa, eli minkään kohdan kohdalla toimintoa ei lopeteta. Toisaalta minkään kohdan kohdalla ei aseteta mitään arvoa, eli sinällään tuosta ei sellaisenaan ole mitään iloa.

Yksi vaihtoehto on koota switch-rakenne seuraavaan tapaan:

switch(toiminto) {
    	case 1:
			tulos = eka_luku - toka_luku;
			operaattori = '-';
			break;
    	case 2:
			tulos = eka_luku + toka_luku;
			operaattori = '+';
			break;
	    case 3:
			tulos = eka_luku * toka_luku;
			operaattori = '*';
			break;
	    default:
		    printf("Antamasi syöte on arvoalueen ulkopuolella.\n");
	}

Tässä laskut lasketaan asianmukaisessa kohdassa ja muuttujaan operaattori asetetaan kohdan mukainen merkki. Lopuksi vain teet halutun tulostuksen muuttujien eka_luku, operaattori, toka_luku ja tulos perusteella.

The Alchemist [16.12.2019 11:41:56]

#

Tuohan on täysin koskematon harjoitustehtävän mallipohja, et ole edes yrittänyt tehdä sitä...

Neepi [16.12.2019 13:20:32]

#

Kiitos, tästä on paljon apua. Luulen, että switchia on tarkoitus käyttää juuri tähän tapaan tässä tehtävässä, ja on muutenkin paljon järkevämpi koota se näin.

Teuro kirjoitti:

(16.12.2019 10:59:56): Switch-rakenteesi ei tuota muuta kuin tekstin...

Lisäys:

The Alchemist kirjoitti:

Tuohan on täysin koskematon harjoitustehtävän mallipohja, et ole edes yrittänyt tehdä sitä...

Kiitos palautteesta. Meillä ei ole mallipohjia, vain tuo tulostusasu, johon pitää päätyä. :)

Vastaus

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

Tietoa sivustosta