Archief - C - probleem met operand inscannen ("+"/"-"/"*"/"/")

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

SDEC

Legacy Member
Ik moet als oefening een programma maken dat een getal (num1), een operand (operator) en een 2e getal (num2) opvraagt en dan hiervan de uitkomst afprint, simpel niet?
Nu is mijn probleem, hoe laat je een operand inscannen waarop deze wordt gebruikt om een berekening te maken?

Zonder operand is het simpel:
Code:
value = num1 + num2;

Maar met een zelf ingegeven operand krijg ik natuurlijk dit probleem:

Code:
value = num1 [B]operator[/B] num2;

waarin "operator" dus een symbool (+, -, * of /) moet voorstellen (dit lukt natuurlijk niet).

Ik heb het al met switches/if statements geprobeert (if (operator == "+")) maar dit lijkt niet te werken.

Hoe ik dit probleem moet oplossen staat niet in mijn cursus, dus vraag ik het hier maar ;) Dank bij voorbaat en hier is de volledige code:

Code:
#include <stdio.h>

int main()
{
	float num1, num2, value;
	char operator;

	printf("What would you like to calculate?:  ");
	scanf("%f.2%c%f.2%*c", &num1, &operator, &num2);

	//Hier op een of andere manier bepalen wat value moet zijn :/

	printf("\n\nThe answer is: %.2f\n", value);
}

Sorry als dit erg banaal lijkt, maar zou met mijn oefeningen verder willen wat onmogelijk is als ik dit eerst niet weet :(

Gurdt

Legacy Member
Ik vermoed dat je scanf niet degelijk werkt. Op deze manier gaat het gewoon:
Code:
scanf("%f%c%f", &num1, &op, &num2);

if(op == '+')
	value = num1 + num2;
else if(op == '-')
	value = num1 - num2;
else if(op == '/')
	value = num1 / num2;
else if(op == '*')
	value = num1 * num2;

SDEC

Legacy Member
EDIT: scanf was fout, zo werkt het wel, de operand moet worden ingelezen als een string, niet als een character :)

Code:
#include <stdio.h>

int main()
{
	float num1, num2, value;
	char op;

	printf("What would you like to calculate?:  ");
	scanf("%f[B][color=red]%s[/color][/B]%f", &num1, &op, &num2);

	if(op == '+')
	{
		value = num1 + num2;
	}
	else if(op == '-')
	{
		value = num1 - num2;
	}
	else if(op == '*')
	{
		value = num1 * num2;
	}
	else if(op == '/')
	{
		value = num1 / num2;
	}
	printf("\n\nThe answer to this equation is: %.2f\n\n", value);
}

EDIT: Kan iemand me uitleggen waarom ik niet "%c" kan gebruiken? +, -, *, / is toch maar 1 character en strings zijn voor meerdere characters?

NeverwinterX

Legacy Member
SDEC zei:
EDIT: Kan iemand me uitleggen waarom ik niet "%c" kan gebruiken? +, -, *, / is toch maar 1 character en strings zijn voor meerdere characters?

Zoals Gurdt zegt dat kan wel. Wat er fout was aan je eerste oplossing is die ".2" die je daar gebruikt. Dat dient enkel voor de print functies, niet de scan.

NeverwinterX

Legacy Member
SDEC zei:
Ahh ik heb het probleem gevonden :) er moest gewoon een spatie tussen %f %c %f

Thx!

Ja als je wilt dat "5 + 3" werkt. Daarom dat er dan spaties moeten. "5+3" werkte prima.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan