Título: (Ayuda) Array de strings. Publicado por: S++ en 10 Junio 2015, 19:16 pm Hola, estoy empezando en la programación y quise ejecutar el siguiente código:
Citar 1. #include <iostream> 2. #include <stdlib.h> 3. #include <string> 4. using namespace std; 5. void main() 6. { 7. bool apagado = false; 8. int l = 1; 9. int a = 1; 10. int *A = &a; 11. int *L = &l; 12. string libros[l]; 13. string autores[a]; 14. string entrada; 15. for (int *L = &l; apagado = false; *L++) 16. { 17. cout << "Ingrese un libro o ingrese " << "-1 " << "para finalizar el programa: "; 18. getline(cin, entrada); 19. 20. if (entrada == "-1") 21. { 22. apagado = true; 23. break; 24. } 25. else 26. { 27. libros[*L] = entrada; 28. } 29. 30. cout << endl << "Ingrese un autor: "; 31. string entradaAutor; 32. getline(cin, entradaAutor); 33. entradaAutor = autores[*A]; 34. } 35. cout << endl << "Gracias por utilizar el programa." << endl << endl; 36. system("pause"); 37. 38.} El problema es que me marca error en las lineas 12 y 13. Qué debería modificar para poder ejecutar el programa sin errores? Título: Re: (Ayuda) Array de strings. Publicado por: ivancea96 en 10 Junio 2015, 20:34 pm Cuando tengas un error, cópianoslo. Es más rápido.
A parte de ese error que comentas, que no sé qué podría ser, te comento algunas otras cosas: Preferible que pongas int main, en vez de void main. usas stdlib.h. Ya que estás usando C++, a las librerías .h estándar, basta que les quites el .h y les añadas una 'c' al inicio, para ser de C++. (cstdlib) Ese for nunca va a hacer nada. La condición apagado=false es una asignación, estás asignándole a apagado el valor false. El operador para ver si ambas aprtes son iguales es ==, dos sígnos igual. En ese for, estás accediendo a libros[*L], que es correcto. El problema es que el tamaño de libros[] es 1. Es un arreglo de 1 elemento. Cuando *L sea 2, puedes generar un error. Título: Re: (Ayuda) Array de strings. Publicado por: S++ en 10 Junio 2015, 21:42 pm Hola, gracias por los consejos.
Cambié el código: Código Acá está la lista de errores: Error 1 error C2057: expected constant expression Error 4 error C2057: expected constant expression Error 6 error C2133: 'autores' : unknown size Error 3 error C2133: 'libros' : unknown size Error 2 error C2466: cannot allocate an array of constant size 0 Error 5 error C2466: cannot allocate an array of constant size 0 7 IntelliSense: expression must have a constant value 8 IntelliSense: expression must have a constant value Por lo que entiendo, el problema es que en la linea 11 y 12, los valores de lo que está entre corchetes no son valores constantes, pero esa es la idea; que el usuario pueda agregar la cantidad de información que quiera y este mismo establezca un limite. Título: Re: (Ayuda) Array de strings. Publicado por: engel lex en 10 Junio 2015, 21:48 pm deben ser constantes si lo declaras de esa forma, si no, debes usar "new"
Código
Título: Re: (Ayuda) Array de strings. Publicado por: rir3760 en 11 Junio 2015, 03:59 am Otro error se encuentra en los indices para acceder a los arrays (si estos para empezar fueran los correctos) ya que en C y C++ el primer elemento de un array tiene el indice 0 y el ultimo N-1.
Parece ser un ejercicio para practicar con punteros ya que las variables "L" y "A" apuntan a "l" y "a" pero si el objetivo es incrementar estas ultimas (eso sugiere el ultimo bucle) el incremento esta mal ya que, por ejemplo: Código Debido a la prioridad de los operadores se evaluá así: Código Con ello el resultado de la expresión se descarta y se incrementa la dirección en memoria (el puntero). Lo mejor por sencillo es rescribir el programa utilizando las clases vector y string. Un saludo |