Domanda Visualizzazione risultato strano...

Stato
Discussione chiusa ad ulteriori risposte.

Kevin D.

Utente Silver
26 Giugno 2016
32
21
1
54
Come mai questo codice non mi visualizza ciò che vorrei? Grazie :)



#include <iostream>

using namespace std;
int i = 7;
int main()
{
char R_Array;
for (int c = 0; c < i; c++)
cin >> R_Array[c];
int convert_Array;
for (int c = 0; c < i ; c++)
{
if (R_Array[c] == 'M ')
convert_Array[c] = 1000;
if (R_Array[c] == ' D ')
convert_Array[c] = 500;
if (R_Array[c] == ' C ')
convert_Array[c] = 100;
if (R_Array[c] == ' L ')
convert_Array[c] = 50;
if (R_Array[c] == ' X ')
convert_Array[c] = 10;
if (R_Array[c] == ' V ')
convert_Array[c] = 5;
if (R_Array[c] == ' I ')
convert_Array[c] = 1;
}
for (int c = 0; c < i ; c++)
cout << convert_Array[k] << " ";
}
 
Ultima modifica:
1. la variabile k non è nemmeno dichiarata

2. sbagli a dichiarare gli array, o meglio non li dichiari proprio, crei solo una variabile di tipo char e una di tipo int. io ti consiglio di eliminare l'array di tipo char e questo ciclo for:
C++:
char R_Array;
for (int c = 0; c < i; c++)
cin >> R_Array[c];
e rimpiazzarli con:
C++:
std::string R_Array;
cin >> R_Array

3. SE ho capito bene cosa vuoi fare, tu vorresti convertire i numeri romani però non hai bisogno di un array di int ma di una variabile alla quale sommare di volta in volta il valore corrispondente.
Quindi una cosa del genere:
C++:
int convert_Array = 0;

...

if (R_Array[c] == ' I ')
convert_Array += 1;

4. il meccanismo degli if nel secondo ciclo for non è efficiente, ti consiglio di imparare ad usare la struttura switch-case http://www.science.unitn.it/~fiorella/guidac/guidac012.html
 
Come mai questo codice non mi visualizza ciò che vorrei? Grazie :)



[HASHTAG]#include[/HASHTAG] <iostream>

using namespace std;
int i = 7;
int main()
{
char R_Array;
for (int c = 0; c < i; c++)
cin >> R_Array[c];
int convert_Array;
for (int c = 0; c < i ; c++)
{
if (R_Array[c] == 'M ')
convert_Array[c] = 1000;
if (R_Array[c] == ' D ')
convert_Array[c] = 500;
if (R_Array[c] == ' C ')
convert_Array[c] = 100;
if (R_Array[c] == ' L ')
convert_Array[c] = 50;
if (R_Array[c] == ' X ')
convert_Array[c] = 10;
if (R_Array[c] == ' V ')
convert_Array[c] = 5;
if (R_Array[c] == ' I ')
convert_Array[c] = 1;
}
for (int c = 0; c < i ; c++)
cout << convert_Array[k] << " ";
}
C++:
#include <iostream>

using namespace std;

int main()
{
   
    string R_Array[7] = {};
    int convert_Array[7] = {};
    int i = 7;
    for (int w = 0; w < i; w++){
        cout << "Input value: \n";
        cin >> R_Array[w];
    }

    for (int c = 0; c < i ; c++){
        cout << "Current Index: " << R_Array[c];
        if (R_Array[c] == "M"){
            convert_Array[c] = 1000;
        }else if (R_Array[c] == "D"){
            convert_Array[c] = 500;
        }else if (R_Array[c] == "C"){
            convert_Array[c] = 100;
        }else if (R_Array[c] == "L"){
            convert_Array[c] = 50;
        }else if (R_Array[c] == "X"){
            convert_Array[c] = 10;
        }else if (R_Array[c] == "V"){
            convert_Array[c] = 5;
        }else if (R_Array[c] == "I"){
            convert_Array[c] = 1;
        }else{
            cout << "ERROR: INVALID INPUT";
            return 0;
        }
       
    }
   
    for (int v = 0; v < i ; v++){
        cout << convert_Array[v] << " ";
    }
    return 0;
}
Ho cambiato un paio di cose. Cambiato alcuni nomi di variabili per evitare confusione, inizializzato le dimensioni degli array, e cambiato le singole virgolette attorno ai valori che si stavano controllando per quotazioni doppie perché erano le stringhe.

Gli array sono dichiarati con parentesi quadre dopo l'identificatore (nome della variabile) e una dimensione. Stai tentando di convertire numeri romani in numeri decimali, non è vero?
 
Stato
Discussione chiusa ad ulteriori risposte.