DUDA C++:
Hola buenas, vengo aquí para ver si pueden ayudarme con un problema que seguro que es una tontería pero con la tontería llevo 4 horas rompiéndome la cabeza.
Mi duda es la siguiente:
Si tengo dentro de un bucle otro bucle, es decir:
for( i=0 ; i < tam ; i++)
{
for( j = 0 ; j < tam ; j++ )
{
// instrucciones
cout << " i es " << i << endl;
¿Por qué al pedir que me muestre el valor de i dentro del segundo bucle me dice que es 0 todo el tiempo?
En teoría tendría que darme 0, 1, 2,.., hasta tam
pero me da 0
Tengo el código aquí abajo, espero que me ayudéis GRACIAS
Código:
#include <iostream>
#include <stdlib.h>
using namespace std;
const int MAX = 100;
typedef int Vector[MAX];
int LeerVector(Vector & v1, int & tam, int & i, int & j, int & tam2);
void MostrarVector(Vector & v1, int & tam);
void EliminarRepetidos( Vector & v1, int & tam2, bool & cond);
int main()
{
Vector v1;
int tam = 0;
int tam2 = 0;
bool cond = false;
cout << " Dime el tamanyo del vector " << endl;
cin >> tam;
int i = 0;
int j = 0;
tam2 = tam;
int tam3 = tam;
i = LeerVector(v1, tam, i, j, tam2);
MostrarVector(v1, tam2);
if(v1[0] == v1[tam - 1])
cond = true;
EliminarRepetidos(v1, tam2, cond);
cout << " \n El vector sin repeticiones es : \n " << endl;
MostrarVector(v1, tam2);
cout << " El tamanyo de el vector sin procesar si tiene repeticiones es : " << tam3 << endl;
cout << " El tamanyo de el vector procesado es " << tam2 << endl;
system("pause");
return 0;
}
int LeerVector(Vector & v1, int & tam, int & i, int & j, int & tam2)
{
while( tam > 0)
{
for(i; i < tam2; i++)
{
v1[i] = rand() % 100;
for(j; j < tam2 ; j++)
{
//cout << " la i es " << i << endl;
if( (v1[i] == v1[j]) && (i != j))
{
i = i - 1;
j = j - 1;
LeerVector(v1, tam, i , j, tam2);
}
}
tam = tam -1;
}
}
return i;
}
void MostrarVector(Vector & v1, int & tam)
{
int i;
char x;
cout << " Para mostrar el vector en horizontal pulse 'h' ( vectores pequenyos) \n O en vertical pulse 'v' (grandes) . " << endl;
cin >> x;
if( x == 'v')
{
cout << " \n El vector aleatorio sin repeticiones es : \n " << endl;
for(i = 0; i < tam; i++ )
cout << " [ " << v1[i] << " ] " << endl;
}
else if( x == 'h')
{
cout << " \n El vector introducido es : \n " << endl;
for(i = 0; i < tam; i++ )
cout << " [ " << v1[i] << " ] ";
cout << endl;
}
return;
}
void EliminarRepetidos( Vector & v1, int & tam2, bool & cond)
{
int i, j, k;
if(cond)
while(v1[0]!= v1[tam2])
{
tam2--;
}
for(i = 0; i < tam2 ; i++)
{
for( j = 0; j < tam2; j++)
{
if( v1[i] == v1[j] && (i != j))
{
for( k = j; k < tam2 ; k++)
{
v1[k] = v1[k+1];
if((k+1) > tam2)
v1[k] = v1[k];
}
tam2--;
}
}
}
return;
}