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; }
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.
Tuohan on täysin koskematon harjoitustehtävän mallipohja, et ole edes yrittänyt tehdä sitä...
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ä. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.