elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  (Ayuda) Array de strings.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Ayuda) Array de strings.  (Leído 2,821 veces)
S++

Desconectado Desconectado

Mensajes: 2


Ver Perfil
(Ayuda) Array de strings.
« 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?


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: (Ayuda) Array de strings.
« Respuesta #1 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.


En línea

S++

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: (Ayuda) Array de strings.
« Respuesta #2 en: 10 Junio 2015, 21:42 pm »

Hola, gracias por los consejos.
Cambié el código:
Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <string>
  4. using namespace std;
  5. int main()
  6. {
  7. int l = 1;
  8. int a = 1;
  9. int *L = &l;
  10. int *A = &a;
  11. string libros[l];
  12. string autores[a];
  13. string entrada;
  14. int almacenar;
  15. for (*L = 1;; *L++)
  16. {
  17. cout << "Ingrese un libro o ingrese " << "-1 " << "para finalizar el programa: ";
  18. getline(cin, entrada);
  19. if (entrada == "-1")
  20. {
  21. almacenar = l;
  22. break;
  23. }
  24. else
  25. {
  26. libros[l] = entrada;
  27. cout << endl << "Ingrese el autor del libro " << '"' << libros[l] << '"' << ": ";
  28. getline(cin, entrada);
  29. autores[a] = entrada;
  30. *A++;
  31. cout << endl;
  32. }
  33. }
  34. for (*L = 1; l < almacenar; *L++)
  35. {
  36. cout << "El libro numero " << *L << " es: " << libros[l] << "." << endl;
  37. cout << "Su autor es: " << autores[a] << "." << endl << endl;
  38. }
  39. system("pause");
  40. return 0;
  41. }
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.
« Última modificación: 10 Junio 2015, 21:45 pm por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: (Ayuda) Array de strings.
« Respuesta #3 en: 10 Junio 2015, 21:48 pm »

deben ser constantes si lo declaras de esa forma, si no, debes usar "new"

Código
  1. string *L= new string[l];
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: (Ayuda) Array de strings.
« Respuesta #4 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
  1. *L++
Debido a la prioridad de los operadores se evaluá así:
Código
  1. *(L++)
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
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Reordernar array de strings aleatoriamente (Ayuda)
Programación Visual Basic
katanaia 2 1,867 Último mensaje 25 Noviembre 2008, 19:27 pm
por cobein
FindWindow con array de strings
Programación C/C++
while 4 2,623 Último mensaje 9 Noviembre 2010, 21:56 pm
por while
Excepcion con array de strings y lista, ayuda :(
.NET (C#, VB.NET, ASP)
NIGHTBIRD 1 2,469 Último mensaje 21 Febrero 2018, 20:11 pm
por Eleкtro
MOVIDO: Excepcion con array de strings y lista, ayuda :(
Programación Visual Basic
Eleкtro 0 2,522 Último mensaje 21 Febrero 2018, 20:12 pm
por Eleкtro
Problema con array de strings
Programación C/C++
JaimeGc05 3 1,691 Último mensaje 20 Enero 2019, 20:44 pm
por JaimeGc05
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines