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

C++ (Error en Vectores) (error C2106) Gracias

Estas en el tema de C++ (Error en Vectores) (error C2106) Gracias en el foro de C/C++ en Foros del Web. Tengo este codigo el cual necesito pasar la informacion que este en el v1 a v3 y a v4 dependiendo al sexo de la persona ...
  #1 (permalink)  
Antiguo 15/09/2011, 14:15
 
Fecha de Ingreso: septiembre-2011
Mensajes: 1
Antigüedad: 12 años, 7 meses
Puntos: 0
C++ (Error en Vectores) (error C2106) Gracias

Tengo este codigo el cual necesito pasar la informacion que este en el v1 a v3 y a v4 dependiendo al sexo de la persona pero siempre me sale este error

error C2106: '=' : left operand must be l-value

Muchas gracias quien me pueda colaborar es de vida o muerte


#include<string.h>
#include<iostream.h>
#include<stdlib.h>
void main(){
int can, u=0, o=0, i;
string v1[100][100], v2[100][100], v3[100][100], v4[100][100];
cout<<"\t\t DIGITE CANTIDAD DE NOMBRES "<<endl;
cout<<"\t\t--------------------------------------------"<<endl;
cout<<" ";
cin>>can;
for (i=0; i<can; i++)
{
system("cls");
cout<<" **************************************"<<endl;
cout<<" * *"<<endl;
cout<<" * DIGITE SU NOMBRE POR FAVOR *"<<endl;
cout<<" * *"<<endl;
cout<<" **************************************"<<endl;
cout<<endl<<endl;
cout<<" ";
cin>>v1[i];
cout<<" **************************************"<<endl;
cout<<" * *"<<endl;
cout<<" * DIGITE SU SEXO POR FAVOR *"<<endl;
cout<<" * *"<<endl;
cout<<" **************************************"<<endl;
cout<<endl<<endl;
cout<<" ";
cin>>v2[i];
system("cls");
}
cout<<"\t\t--------------------------------------------"<<endl;
cout<<"\t\t LOS NOMBRES Y SEXO "<<endl;
cout<<"\t\t--------------------------------------------"<<endl;
cout<<"\t\t INGRESADOS FUERON "<<endl;
cout<<"\t\t--------------------------------------------"<<endl;
for (i=0; i<can; i++)
{
cout<<endl;
cout<<"\t\t\t "<<i<<") "<<v1[i];
cout<<"\t ("<<v2[i]<<")"<<endl;
}
cout<<endl<<endl<<endl;
system("PAUSE");
system("cls");
i=0;
while(i<can){
if(v2[i]=="m")
{
v3[i]=v1[i];
u=u+1;
}
if(v2[i]=="f")
{
v4[i]=v1[i];;
o=o+1;
}
i++;
}
cout<<endl<<endl<<endl<<endl;
cout<<"\t\t--------------------------------------------"<<endl;
cout<<"\t\t ORDENEMOS POR SEXO "<<endl;
cout<<"\t\t--------------------------------------------"<<endl;
cout<<"\t\t MUJERES "<<endl;
cout<<"\t\t--------------------------------------------"<<endl;
for (i=0; i<u; i++)
{
cout<<"\t\t\t\t"<<i<<") "<<v3[i]<<endl;
}
cout<<"\t\t--------------------------------------------"<<endl;
cout<<endl<<endl<<endl<<endl;
system("PAUSE");
system("cls");
cout<<endl<<endl<<endl<<endl;
cout<<"\t\t--------------------------------------------"<<endl;
cout<<"\t\t ORDENEMOS POR SEXO "<<endl;
cout<<"\t\t--------------------------------------------"<<endl;
cout<<"\t\t HOMBRES "<<endl;
cout<<"\t\t--------------------------------------------"<<endl;
for (i=0; i<o; i++)
{
cout<<"\t\t\t\t"<<i<<") "<<v4[i]<<endl;
}
cout<<"\t\t--------------------------------------------"<<endl;
cout<<endl<<endl<<endl<<endl;
cin.get();cin.get();
}
  #2 (permalink)  
Antiguo 15/09/2011, 16:44
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: C++ (Error en Vectores) (error C2106) Gracias

El problema es que tienes los conceptos erróneos.

Cuando declaras una matriz de dos dimensiones de esta manera:

Código Python:
Ver original
  1. string matriz[10][10];

estás declarando una matriz estática (se cree en tiempo de compilación), es decir, en la cual no se pueden cambiar los punteros que utiliza en tiempo de ejecución. Puedes cambiar los valores de la matriz, por supuesto.

Si te fijas en tu código intentas realizar lo siguiente:

Código C++:
Ver original
  1. v3[i] = v1[i];

y esto es claramente un error garrafal, porque v3[i] representa un puntero a string, pero en el caso de las matrices estáticas, es un puntero constante, es decir, que no se puede cambiar su valor.

Ese error lo cometes en bastantes sitios, como al intentar leer de teclado con cin y realizas:

Código C++:
Ver original
  1. cin >> v2[i];

Cuando cin no permite introducir datos en un puntero a string, tendrías que poner:

Código C++:
Ver original
  1. cin >> v2[i][j]; //Siendo j la columna de la matriz que te interese.

Te faltaría poner también:

Código C++:
Ver original
  1. using namespace std;

Después de los #include.

Suerte.
  #3 (permalink)  
Antiguo 15/09/2011, 19:40
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: C++ (Error en Vectores) (error C2106) Gracias

No te haras confundido con C que se utilizan char?? A lo mejor quisiste poner esto:

string v1[100], v2[100], v3[100], v4[100];

Etiquetas: compilar, vectores
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 11:13.