Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Error invalid types `int[int]' for array subscript

Estas en el tema de Error invalid types `int[int]' for array subscript en el foro de C/C++ en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C++: Ver original #include<iostream> #include<stdio.h> #include <stdlib.h> #include <math.h>    using namespace std ;     /*           ...
  #1 (permalink)  
Antiguo 29/11/2012, 14:23
 
Fecha de Ingreso: agosto-2012
Ubicación: Alcalá
Mensajes: 37
Antigüedad: 12 años, 3 meses
Puntos: 0
Error invalid types `int[int]' for array subscript

Código C++:
Ver original
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5.  
  6.  using namespace std;
  7.  
  8.  /*
  9.  
  10.              
  11.               0:Ataque
  12.               1:Daño
  13.               2:PG
  14.               3:CA
  15.               4:Destreza    
  16.               5:Unidades
  17.                      
  18.  */
  19.              
  20.  void rellenar_caballero (int &caballero)
  21.  {
  22.     int Nataques, Ataque, Danio, PG, CA, Destreza, Unidades;
  23.     cout <<"Introduce el numero de ataques: ";
  24.     cin>>Nataques;
  25.     cout <<"Introduce el valor del ataque: ";
  26.     cin >>Ataque;
  27.     for (int i=0; i<Nataques; i++)
  28.         caballero[i][0]=Ataque;
  29.     cout <<"Introduce el valor del daño: ";
  30.     cin >>Danio;
  31.     for (int i=0; i<Nataques; i++)
  32.         caballero[i][1]=Danio;
  33.     cout <<"Introduce el PG: ";
  34.     cin >>PG;      
  35.     for (int i=0; i<Nataques; i++)
  36.         caballero[i][2]=PG;  
  37.     cout <<"Introduce el CA: ";
  38.     cin >>CA;      
  39.     for (int i=0; i<Nataques; i++)
  40.         caballero[i][3]=CA;
  41.     cout <<"Introduce la destreza: ";
  42.     cin >>Destreza;      
  43.     for (int i=0; i<Nataques; i++)
  44.         caballero[i][4]=Destreza;
  45.     cout <<"Introduce el numero de unidades: ";
  46.     cin >>Unidades;      
  47.     for (int i=0; i<Nataques; i++)
  48.         caballero[i][5]=Unidades;  
  49.    
  50.  }
  51. void rellenar_invocaciones (int &invocaciones, int Ninv)
  52.  {
  53.     int Nataques, Ataque, Danio, PG, CA, Destreza, Unidades;
  54.     cout <<"Introduce el numero de ataques: ";
  55.     cin>>Nataques;
  56.     cout <<"Introduce el valor del ataque: ";
  57.     cin >>Ataque;
  58.     for (int i=0; i<Nataques; i++)
  59.         invocaciones[Ninv][i][0]=Ataque;
  60.     cout <<"Introduce el valor del daño: ";
  61.     cin >>Danio;
  62.     for (int i=0; i<Nataques; i++)
  63.         invocaciones[Ninv][i][1]=Danio;
  64.     cout <<"Introduce el PG: ";
  65.     cin >>PG;      
  66.     for (int i=0; i<Nataques; i++)
  67.         invocaciones[Ninv][i][2]=PG;  
  68.     cout <<"Introduce el CA: ";
  69.     cin >>CA;      
  70.     for (int i=0; i<Nataques; i++)
  71.         invocaciones[Ninv][i][3]=CA;
  72.     cout <<"Introduce la destreza: ";
  73.     cin >>Destreza;      
  74.     for (int i=0; i<Nataques; i++)
  75.         invocaciones[Ninv][i][4]=Destreza;
  76.     cout <<"Introduce el numero de unidades: ";
  77.     cin >>Unidades;      
  78.     for (int i=0; i<Nataques; i++)
  79.         invocaciones[Ninv][i][5]=Unidades;  
  80.    
  81.  }
  82. void rellenar_humanas (int &humanas, int Nhum)
  83.  {
  84.     int Nataques, Ataque, Danio, PG, CA, Destreza, Unidades;
  85.     cout <<"Introduce el numero de ataques: ";
  86.     cin>>Nataques;
  87.     cout <<"Introduce el valor de los ataques separados por espacios: ";
  88.     for (int i=0; i<Nataques; i++)
  89.         cin >> humanas[Nhum][i][0];
  90.     cout <<"Introduce el valor del daño: ";
  91.     cin >>Danio;
  92.     for (int i=0; i<Nataques; i++)
  93.         humanas[Nhum][i][1]=Danio;
  94.     cout <<"Introduce el PG: ";
  95.     cin >>PG;      
  96.     for (int i=0; i<Nataques; i++)
  97.         humanas[Nhum][i][2]=PG;  
  98.     cout <<"Introduce el CA: ";
  99.     cin >>CA;      
  100.     for (int i=0; i<Nataques; i++)
  101.         humanas[Nhum][i][3]=CA;
  102.     cout <<"Introduce la destreza: ";
  103.     cin >>Destreza;      
  104.     for (int i=0; i<Nataques; i++)
  105.         humanas[Nhum][i][4]=Destreza;
  106.     cout <<"Introduce el numero de unidades: ";
  107.     cin >>Unidades;      
  108.     for (int i=0; i<Nataques; i++)
  109.         humanas[Nhum][i][5]=Unidades;  
  110.    
  111.  }
  112.      
  113.  int main()
  114. {
  115.     int caballero [100][6], invocaciones[10][10][6], humanas[10][10][6];
  116.     bool mas=true, mas2=false;
  117.     cout <<"Introduce las características del caballero: "<<endl;
  118.     rellenar_caballero (caballero);
  119.     do
  120.     {
  121.        int Ninv=0;
  122.        char eleccion;
  123.        cout <<"Introduce los datos del pelotón de invocaciones: "<<endl;
  124.        rellenar_invocaciones (invocaciones, Ninv);
  125.        cout <<"¿Quieres introducir otro pelotón de invocaciones? (Y/N) ";
  126.        cin >>eleccion;
  127.        do
  128.        {
  129.        switch (toupper(eleccion))
  130.               case 'Y': Ninv++; break;
  131.               case 'N': mas=false; break;
  132.               default: cout <<"eleccion no valida"; mas2=true; break;  
  133.        }while (mas2);
  134.     }while (mas);
  135.     mas=true;
  136.     mas2=false;
  137.     do
  138.     {
  139.        int Nhum=0;
  140.        char eleccion;
  141.        cout <<"Introduce los datos del pelotón de humanas: "<<endl;
  142.        rellenar_humanas (humanas, Nhum);
  143.        cout <<"¿Quieres introducir otro pelotón de humanas? (Y/N) ";
  144.        cin >>eleccion;
  145.        do
  146.        {
  147.        switch (toupper(eleccion))
  148.               case 'Y': Nhum++; break;
  149.               case 'N': mas=false; break;
  150.               default: cout <<"eleccion no valida"; mas2=true; break;  
  151.        }while (mas2);
  152.     }while (mas);
  153.    
  154.    
  155.    
  156.    
  157.    
  158.     system("PAUSE");
  159.     return EXIT_SUCCESS;
  160.  
  161. }
en la línea 28, 32, 36...etc me da el error al compilar invalid types `int[int]' for array subscript pero no sé bien a qué se refiere, es un array int.. no entiendo nada..
y en la línea 131 me dice case label `'N'' not within a switch statement que tampoco entiendo..

A ver si alguien lo entiende.. Gracias
  #2 (permalink)  
Antiguo 29/11/2012, 18:42
Avatar de cotolon  
Fecha de Ingreso: octubre-2012
Mensajes: 55
Antigüedad: 12 años
Puntos: 10
Respuesta: Error invalid types `int[int]' for array subscript

Bueno por lo de los array [] [] creo q es porq no estás pasando caballero como una matriz a la función, ya que creo q por referencia se hace distinto.

Y por lo de la linea 131 es porque te comiste un "{ } " luego del switch (creo q es eso)
  #3 (permalink)  
Antiguo 30/11/2012, 17:28
 
Fecha de Ingreso: agosto-2012
Ubicación: Alcalá
Mensajes: 37
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Error invalid types `int[int]' for array subscript

Efectivamente faltaban los paréntesis del switch (menos que me habia mirado la construcción del switch para ver que no faltaba nada...).

He pasado ahora las matrices de otra forma:
Código C++:
Ver original
  1. void rellenar_caballero (int caballero[][6])
Código C++:
Ver original
  1. void rellenar_invocaciones (int invocaciones[][10][6], int Ninv)
Código C++:
Ver original
  1. void rellenar_humanas (int humanas[][10][6], int Nhum)
y ahora sí compila bien :)

Gracias Cotolon

Etiquetas: int, invalid, type
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:17.