Tengo un problema con el programa que intento codificar. Es solo un programa de consola de Windows y soy muy nuevo en C++. Es solo mi cuarto programa.¿La comparación con resultados literales de cadena en comportamiento no especificado?
El problema que tengo es que cuando ejecuto mi programa no tengo errores sino muchas advertencias que dicen que "la comparación con el literal de cadena da como resultado un comportamiento no especificado" en las líneas que resaltaré a continuación.
Cuando el programa se ejecuta en lugar de agregar los números que quiero, simplemente me da un número enorme al azar, sin importar lo que puse para mis entradas.
Aquí está el código:
#include <iostream>
using namespace std;
int main()
{
int hold;
int i;
int n;
i = 6;
int result;
int * price;
char items[100][100];
if (items == 0)
cout << "No items can be stored";
else
{
for (n=0; n<i; n++)
{
cout << "Item#" << n << ": ";
cin >> items[n];
}
cout << "\nYou Entered: \n";
for (n=0; n<i; n++)
cout << items[n] << ", ";
}
for (n=0; n<i; n++)
{
if (items[n] == "ab"){
price[n] = 2650;
}
else if (items[n] == "ae"){
price[n] = 1925;
}
else if (items[n] == "ie"){
price[n] = 3850;
}
else if (items[n] == "bt"){
price[n] = 3000;
}
else if (items[n] == "pd"){
price[n] = 2850;
}
else if (items[n] == "ga"){
price[n] = 2600;
}
}
for (n=0; n<i; n++)
{
result = result + price[n];
}
cout << "\nTotal gold for this build: " << result;
cin >> hold;
return 0;
}
se aprecia ninguna ayuda. Probablemente haya algo grande que he hecho mal. Los nombres en las declaraciones if son todos marcadores de posición actuales y agregaré mucho más si las declaraciones cuando puedo hacer que funcionen con el 6 puro, que es lo que necesita para funcionar.
'if (items == 0)' eso no tiene ningún sentido.No está asignando dinámicamente 'elementos', es una variable de pila. Esa comparación nunca será cierta. – Praetorian