Salve ragazzi, rieccomi con un altra domanda...
Sto cercando di creare un programma che presi in input dei caratteri li vada a mettere in un array di caratteri, il problema è che i caratteri che devo andare a mettere nell'array
sono dei numeri con più di una cifra, ad esempio (18 ,22 ecc...) e dei simboli (+, -, *, /). In sostanza quando vado a stampare l'array deve venire fuori un espressione algebrica del tipo (33+4-7).
Ho provato a scrivere un codice ma quando stampa, mi escono fuori simboli strani al posto dei numeri, e sono sicuro che il problema stia nella conversione che vado ad applicare, ma non riesco a venirne a capo...
avete qualche consiglio da darmi?
Grazie ;D
Sto cercando di creare un programma che presi in input dei caratteri li vada a mettere in un array di caratteri, il problema è che i caratteri che devo andare a mettere nell'array
sono dei numeri con più di una cifra, ad esempio (18 ,22 ecc...) e dei simboli (+, -, *, /). In sostanza quando vado a stampare l'array deve venire fuori un espressione algebrica del tipo (33+4-7).
Ho provato a scrivere un codice ma quando stampa, mi escono fuori simboli strani al posto dei numeri, e sono sicuro che il problema stia nella conversione che vado ad applicare, ma non riesco a venirne a capo...
C++:
#include <iostream>
using namespace std;
int main()
{
char array[3];
char c;
for(int i = 0; i < 3; i++)
{
cin >> noskipws >> c;
if(i == 0) //Se i = 0 allora ho sicuramente un numero (tralascio l'invalid input)
{
array[i] = c-'0';
}
if('0' <= array[i-1] && array[i-1] <= '9' && '0' <= c && c <= '9') //Se nel posto precedente ho un numero, e il carattere inserito è un numero allora moltiplico x 10 e sommo il carattere
{
array[i-1] = ((array[i-1] * 10) + (c -'0')); //Credo che il problema dipenda da quella moltiplicazione (char * int)
i--; //Torno indietro di uno visto che sto andando a modificare il precedente senza aggiungere nulla al posto successivo
}
if(array[i-1] == '+' || array[i-1] == '*' || array[i-1] == '/' || array[i-1] == '-') //Se nella posizione precedente ho un simbolo allora devo mettere un numero, quindi sottraggo il val di '0'
{
array[i] = c-'0';
}
if(c == '+' || c == '*' || c == '/' || c == '-') //Se sono dei simboli non sottraggo il valore di '0'
{
array[i] = c;
}
}
cout << endl;
for(int j=0; j < 3; j++) //Ciclo di stampa
{
cout << array[j] << " ";
}
return 0;
}
avete qualche consiglio da darmi?
Grazie ;D