zamiana double na string w kalulatorze

0

cześć mam o to taki kod i muszę przerobić, żeby ten "kalulator" przyjmował wartości jednocyfrowe zapisane jako cyfry lub słownie ale kompletnie nie wiem jak to można zrobić.

#include <iostream>

int main()
{
	std::cout << "Podaj pierwsza wartosc: ";
	double a;
	std::cin >> a;
	std::cout << "Podaj druga wartosc: ";
	double b;
	std::cin >> b;
	std::cout << "Podaj znak(+,-,*,/): ";
	char oper;
	std::cin >> oper;
	if (oper == '+')
		std::cout << "Suma liczb " << a << " i " << " b " << "wynosi: " << a + b << '\n';
	if(oper == '-')
		std::cout << "Różnica liczb " << a << " i " << " b " << "wynosi: " << a - b << '\n';
	if (oper == '*')
		std::cout << "Iloczyn liczb " << a << " i " << " b " << "wynosi: " << a * b << '\n';
	if (oper == '/')
		std::cout << "Iloraz liczb " << a << " i " << " b " << "wynosi: " << a / b << '\n';

}
0

Wartości jednocyfrowe (czy to naprawdę musi być double?) to akurat żaden problem, nie trzeba tutaj skomplikowanych rozwiązań i zwykły switch() powinien wystarczyć:

std::string DigitToText( const double digit )
{
    switch( static_cast<int>(digit) )
    {
    case 0: return "zero";
    case 1: return "one";
    // ...
    default: return "ERROR";
    }
}

Jeżeli Twoje liczby naprawdę są jednocyfrowe, to nawet podanie na wejście 1.003 nie powinno być problemem. Chociaż moim zdaniem założenie liczby jednocyfrowych eliminuje nawet części dziesiętne.
Stąd też moje pytanie: Dlaczego akurat double, a nie po prostu int?

0
string NrArray[]={
	"Zero",			// masz tu listę wszystkich
	"Jeden",		// nazw dla cyferek
	"Dwa",
	"Trzy",			// do wybranej nie używaj switch
	"Cztery",		// jak ci kolega mowil
	"Pięć",
	"Sześć",
	"Siedem",
	"Osiem",
	"Dziewięć"}

// do danej liczby możesz dostać się tak:

string GetNr(char Char){
	if((Char-48>0)&&(Char-48<9))
	{
		return NrArray[Char-48];
	}else{
		return "Error";
	}
}
	// cyfra posiada adresy ASCII od 48 do 57
	// dla 0 jest to 48 dla np. 3 jest to 51
	// char = 0 ( 48 ) 48 - 48 = 0 mamy więc
	// pierwszy element tablicy... zawsze
	// staraj sie omijać instrukcje warunkowe
	// w końcu jeśli od razu na starcie możesz
	// uzyskać adres porządanego elementu to czemu
	// tego nie zrobić???

int IsNum(int Int){
	
	tutaj musimy porownac czy wpisany tekst przez
	uzytkownika jest mozliwy do dopasowania do jednego
	z elementow naszej tablicy NrArray
	jesli znajdziemy pasujacy ciag to pobieramy ID
	elementu tablicy ktory porownywalismy i zwracamy go
	w return i prawde mowiac wykonujemy to tak dlugo
	az skoncza sie nam znaki w stringu usera
	
	kod do porownywania 2 slow napiszesz sam :)
	
	while(Char++!=NULL){
		if(ZnakUser[i] == ZnakTablica[i][x];
	}
	
	dawno sie nie bawilem C++ wiec nie napisze ci i nie
	podpowiem wiele wiecej :c
	
	return -1;
		// polecam #define
		// i stworzenie wlasnej kontroli bledow
		// domyslnie wysyla sie -1 jako error
}

przy okazji skorzystaj szybko zanim initeligentna administracja 4p skasuje ci pomocnego posta :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1